Narrow down the range for compatibility warning to callee expression

This commit is contained in:
Mikhail Zarechenskiy
2020-06-02 12:30:52 +03:00
parent 4bd622c1c5
commit a4af833d55
4 changed files with 7 additions and 5 deletions
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.isNull import org.jetbrains.kotlin.psi.psiUtil.isNull
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.callUtil.reportTrailingLambdaErrorOr import org.jetbrains.kotlin.resolve.calls.callUtil.reportTrailingLambdaErrorOr
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
@@ -81,9 +82,10 @@ class DiagnosticReporterByTrackingStrategy(
trace.report(CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION.on(psiKotlinCall.psiCall.callElement)) trace.report(CANDIDATE_CHOSEN_USING_OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION.on(psiKotlinCall.psiCall.callElement))
} }
CompatibilityWarning::class.java -> { CompatibilityWarning::class.java -> {
val callElement = psiKotlinCall.psiCall.callElement
trace.report( trace.report(
COMPATIBILITY_WARNING.on( COMPATIBILITY_WARNING.on(
psiKotlinCall.psiCall.callElement, callElement.getCalleeExpressionIfAny() ?: callElement,
(diagnostic as CompatibilityWarning).candidate (diagnostic as CompatibilityWarning).candidate
) )
) )
@@ -18,7 +18,7 @@ object Test1 {
fun foo(r: Runnable) {} fun foo(r: Runnable) {}
fun test(f: () -> Unit) { fun test(f: () -> Unit) {
<!COMPATIBILITY_WARNING, DEBUG_INFO_CALL("fqName: Test1.foo; typeCall: function")!>foo(f)<!> <!DEBUG_INFO_CALL("fqName: Test1.foo; typeCall: function")!><!COMPATIBILITY_WARNING!>foo<!>(f)<!>
} }
} }
} }
@@ -65,7 +65,7 @@ object Test5 {
fun foo(r: Runnable) {} fun foo(r: Runnable) {}
fun test() { fun test() {
<!COMPATIBILITY_WARNING, DEBUG_INFO_CALL("fqName: Test5.foo; typeCall: function")!>foo { }<!> <!DEBUG_INFO_CALL("fqName: Test5.foo; typeCall: function")!><!COMPATIBILITY_WARNING!>foo<!> { }<!>
} }
} }
} }
@@ -12,7 +12,7 @@ object Test1 {
fun call(r: SuspendRunnable) {} fun call(r: SuspendRunnable) {}
fun bar(f: () -> Unit) { fun bar(f: () -> Unit) {
<!COMPATIBILITY_WARNING, DEBUG_INFO_CALL("fqName: Test1.call; typeCall: function")!>call(f)<!> <!DEBUG_INFO_CALL("fqName: Test1.call; typeCall: function")!><!COMPATIBILITY_WARNING!>call<!>(f)<!>
} }
} }
} }
@@ -8,7 +8,7 @@ object Test1 {
fun foo(f: suspend () -> Unit) {} fun foo(f: suspend () -> Unit) {}
fun test(g: () -> Unit) { fun test(g: () -> Unit) {
<!COMPATIBILITY_WARNING, DEBUG_INFO_CALL("fqName: Test1.foo; typeCall: function")!>foo(g)<!> <!DEBUG_INFO_CALL("fqName: Test1.foo; typeCall: function")!><!COMPATIBILITY_WARNING!>foo<!>(g)<!>
} }
} }
} }