From d4c34afb9458f8f35eb7997ca9bed7ed96229c45 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 14 Jan 2020 18:56:00 +0300 Subject: [PATCH] NI: Do not resolve static callable references on generic types As they weren't resolved in old inference ^KT-35920 Fixed --- .../FirOldFrontendDiagnosticsTestGenerated.java | 5 +++++ .../kotlin/resolve/calls/tower/PSICallResolver.kt | 2 +- .../tests/callableReference/resolve/kt35920.fir.kt | 14 ++++++++++++++ .../tests/callableReference/resolve/kt35920.kt | 14 ++++++++++++++ .../kotlin/checkers/DiagnosticsTestGenerated.java | 5 +++++ .../javac/DiagnosticsUsingJavacTestGenerated.java | 5 +++++ 6 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.fir.kt create mode 100644 compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java index 0bcda93509e..440c9a09fe8 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java @@ -2638,6 +2638,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt35887_simple.kt"); } + @TestMetadata("kt35920.kt") + public void testKt35920() throws Exception { + runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt"); + } + @TestMetadata("kt8596.kt") public void testKt8596() throws Exception { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt8596.kt"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index b7dd8f595c6..f76a1a1b78f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -739,7 +739,7 @@ class PSICallResolver( } } is DoubleColonLHS.Type -> { - val qualifiedExpression = ktExpression.receiverExpression!!.let { it.referenceExpression() ?: it } + val qualifiedExpression = ktExpression.receiverExpression!! val qualifier = expressionTypingContext.trace.get(BindingContext.QUALIFIER, qualifiedExpression) LHSResult.Type(qualifier, lhsResult.type.unwrap()) } diff --git a/compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.fir.kt b/compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.fir.kt new file mode 100644 index 00000000000..e157831486d --- /dev/null +++ b/compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.fir.kt @@ -0,0 +1,14 @@ +// SKIP_TXT +// !LANGUAGE: +NewInference +// !DIAGNOSTICS: -UNUSED_PARAMETER +// FILE: JavaClass.java +public class JavaClass { + public static String baz(int x) { return ""; } +} + +// FILE: main.kt +fun foo(x: (Int) -> String) {} + +fun main() { + foo(JavaClass<*>::baz) +} diff --git a/compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt b/compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt new file mode 100644 index 00000000000..a266d1eadff --- /dev/null +++ b/compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt @@ -0,0 +1,14 @@ +// SKIP_TXT +// !LANGUAGE: +NewInference +// !DIAGNOSTICS: -UNUSED_PARAMETER +// FILE: JavaClass.java +public class JavaClass { + public static String baz(int x) { return ""; } +} + +// FILE: main.kt +fun foo(x: (Int) -> String) {} + +fun main() { + foo(JavaClass<*>::baz) +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 8f8016289af..f49b20c2068 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -2645,6 +2645,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt35887_simple.kt"); } + @TestMetadata("kt35920.kt") + public void testKt35920() throws Exception { + runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt"); + } + @TestMetadata("kt8596.kt") public void testKt8596() throws Exception { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt8596.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 202d26a0f51..43eaa5f2636 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -2640,6 +2640,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt35887_simple.kt"); } + @TestMetadata("kt35920.kt") + public void testKt35920() throws Exception { + runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt35920.kt"); + } + @TestMetadata("kt8596.kt") public void testKt8596() throws Exception { runTest("compiler/testData/diagnostics/tests/callableReference/resolve/kt8596.kt");