diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java index 050415d6ab2..7cad9d0b1ba 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestGenerated.java @@ -12108,6 +12108,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/inferTypeFromUnresolvedArgument.kt"); } + @TestMetadata("kt42620.kt") + public void testKt42620() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.kt"); + } + @TestMetadata("NoAmbiguityForDifferentFunctionTypes.kt") public void testNoAmbiguityForDifferentFunctionTypes() throws Exception { runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt"); diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java index b7ed11dc909..ab24fdbca0a 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java @@ -3013,6 +3013,11 @@ public class FirOldFrontendDiagnosticsTestWithStdlibGenerated extends AbstractFi runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt38801.kt"); } + @TestMetadata("kt42620.kt") + public void testKt42620() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.kt"); + } + @TestMetadata("kt4975.kt") public void testKt4975() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt4975.kt"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt index d43a2b2abe9..634c3268532 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt @@ -159,7 +159,11 @@ class DiagnosticReporterByTrackingStrategy( CallableReferenceCandidatesAmbiguity::class.java -> { val ambiguityDiagnostic = diagnostic as CallableReferenceCandidatesAmbiguity - val expression = ambiguityDiagnostic.argument.psiExpression.safeAs() + val expression = when (val psiExpression = ambiguityDiagnostic.argument.psiExpression) { + is KtPsiUtil.KtExpressionWrapper -> psiExpression.baseExpression + else -> psiExpression + }.safeAs() + val candidates = ambiguityDiagnostic.candidates.map { it.candidate } if (expression != null) { trace.reportDiagnosticOnce(CALLABLE_REFERENCE_RESOLUTION_AMBIGUITY.on(expression.callableReference, candidates)) diff --git a/compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.fir.kt b/compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.fir.kt new file mode 100644 index 00000000000..46cc6249346 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.fir.kt @@ -0,0 +1,15 @@ +// SKIP_TXT + +class Foo + +fun main1() = when { + else -> Foo::plus +} + +fun main2() = if (true) Foo::minus else Foo::times + +fun main3() = if (true) { Foo::minus } else { Foo::times } + +fun main4() = try { Foo::minus } finally { Foo::times } + +fun main5() = Foo::minus ?: Foo::times diff --git a/compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.kt b/compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.kt new file mode 100644 index 00000000000..bab8432d108 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.kt @@ -0,0 +1,15 @@ +// SKIP_TXT + +class Foo + +fun main1() = when { + else -> Foo::plus +} + +fun main2() = if (true) Foo::minus else Foo::times + +fun main3() = if (true) { Foo::minus } else { Foo::times } + +fun main4() = try { Foo::minus } finally { Foo::times } + +fun main5() = Foo::minus ?: Foo::times diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.fir.kt new file mode 100644 index 00000000000..6a710c8b790 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.fir.kt @@ -0,0 +1,15 @@ +// SKIP_TXT + +class Foo + +fun main1() = when { + else -> Foo::plus +} + +fun main2() = if (true) Foo::minus else Foo::times + +fun main3() = if (true) { Foo::minus } else { Foo::times } + +fun main4() = try { Foo::minus } finally { Foo::times } + +fun main5() = Foo::minus ?: Foo::times diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.kt b/compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.kt new file mode 100644 index 00000000000..abc8c0bb545 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.kt @@ -0,0 +1,15 @@ +// SKIP_TXT + +class Foo + +fun main1() = when { + else -> Foo::plus +} + +fun main2() = if (true) Foo::minus else Foo::times + +fun main3() = if (true) { Foo::minus } else { Foo::times } + +fun main4() = try { Foo::minus } finally { Foo::times } + +fun main5() = Foo::minus ?: Foo::times diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index e23d26b24d5..6ff186956b4 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -12115,6 +12115,11 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTestWithFirVali runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/inferTypeFromUnresolvedArgument.kt"); } + @TestMetadata("kt42620.kt") + public void testKt42620() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.kt"); + } + @TestMetadata("NoAmbiguityForDifferentFunctionTypes.kt") public void testNoAmbiguityForDifferentFunctionTypes() throws Exception { runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java index 42130d9dd3d..cb721803ced 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java @@ -3163,6 +3163,11 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt38801.kt"); } + @TestMetadata("kt42620.kt") + public void testKt42620() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.kt"); + } + @TestMetadata("kt4975.kt") public void testKt4975() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt4975.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java index 331537666a5..46035bf425a 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java @@ -3163,6 +3163,11 @@ public class DiagnosticsTestWithStdLibUsingJavacGenerated extends AbstractDiagno runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt38801.kt"); } + @TestMetadata("kt42620.kt") + public void testKt42620() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt42620.kt"); + } + @TestMetadata("kt4975.kt") public void testKt4975() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/inference/kt4975.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 9f99f77e625..0c013339bac 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -12110,6 +12110,11 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/inferTypeFromUnresolvedArgument.kt"); } + @TestMetadata("kt42620.kt") + public void testKt42620() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/kt42620.kt"); + } + @TestMetadata("NoAmbiguityForDifferentFunctionTypes.kt") public void testNoAmbiguityForDifferentFunctionTypes() throws Exception { runTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 43eacc6a8a1..a92ae04f22a 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -14799,6 +14799,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/anySuperCall.kt"); } + @TestMetadata("fieldNameClash.kt") + public void ignoreFieldNameClash() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); + } + @TestMetadata("inlineClassWithCustomEquals.kt") public void ignoreInlineClassWithCustomEquals() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/inlineClassWithCustomEquals.kt"); @@ -15102,11 +15107,6 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun2.kt"); } - @TestMetadata("fieldNameClash.kt") - public void testFieldNameClash() throws Exception { - runTest("compiler/testData/codegen/box/inlineClasses/fieldNameClash.kt"); - } - @TestMetadata("genericInlineClassSynthMembers.kt") public void testGenericInlineClassSynthMembers() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/genericInlineClassSynthMembers.kt");