diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index ac1904811a0..f39e7839318 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -13927,6 +13927,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia public void testUnitInContravariantPosition() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt"); } + + @Test + @TestMetadata("unitInCovariantPosition.kt") + public void testUnitInCovariantPosition() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt"); + } } @Nested diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index d90bfbf5363..ba3f49f2c4e 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -13927,6 +13927,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated public void testUnitInContravariantPosition() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt"); } + + @Test + @TestMetadata("unitInCovariantPosition.kt") + public void testUnitInCovariantPosition() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt"); + } } @Nested diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index f1748246244..708c976cb8e 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -13921,6 +13921,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir public void testUnitInContravariantPosition() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt"); } + + @Test + @TestMetadata("unitInCovariantPosition.kt") + public void testUnitInCovariantPosition() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt"); + } } @Nested diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 3ee12df7cef..34794394052 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -13927,6 +13927,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia public void testUnitInContravariantPosition() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt"); } + + @Test + @TestMetadata("unitInCovariantPosition.kt") + public void testUnitInCovariantPosition() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt"); + } } @Nested diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt index 1c055a6c0d5..cece23d5e52 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt @@ -81,10 +81,11 @@ class FirSamResolver( } is ConeStubType, is ConeTypeParameterType, is ConeTypeVariableType, - is ConeCapturedType, is ConeDefinitelyNotNullType, is ConeIntersectionType, - is ConeIntegerLiteralType, + is ConeDefinitelyNotNullType, is ConeIntersectionType, is ConeIntegerLiteralType, -> null + is ConeCapturedType -> type.lowerType?.let { getFunctionTypeForPossibleSamType(it) } + is ConeLookupTagBasedType -> unreachableBranch(type) } } diff --git a/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.fir.kt b/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.fir.kt deleted file mode 100644 index 985d190f726..00000000000 --- a/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.fir.kt +++ /dev/null @@ -1,17 +0,0 @@ -// ISSUE: KT-63379 - -class TestDummyClass { - fun testFun(t: T) {} -} - -fun more(t: TestDummyClass) { - t.testFun { Unit } - t.testFun(CustomRunnable { Unit }) - t.testFun(object : CustomRunnable { - override fun run() {} - }) -} - -fun interface CustomRunnable { - fun run() -} diff --git a/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt b/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt index a09f01e73f8..fbd2e07d46f 100644 --- a/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt +++ b/compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // ISSUE: KT-63379 class TestDummyClass { diff --git a/compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.fir.kt b/compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.fir.kt new file mode 100644 index 00000000000..1a138472dab --- /dev/null +++ b/compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.fir.kt @@ -0,0 +1,17 @@ +// ISSUE: KT-63379 (modified example, see original in unitInContravariantPosition.kt) + +class TestDummyClass { + fun testFun(t: T) {} +} + +fun more(t: TestDummyClass) { + t.testFun { Unit } + t.testFun(CustomRunnable { Unit }) + t.testFun(object : CustomRunnable { + override fun run() {} + }) +} + +fun interface CustomRunnable { + fun run() +} diff --git a/compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt b/compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt new file mode 100644 index 00000000000..cb5d1e7f963 --- /dev/null +++ b/compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt @@ -0,0 +1,17 @@ +// ISSUE: KT-63379 (modified example, see original in unitInContravariantPosition.kt) + +class TestDummyClass { + fun testFun(t: T) {} +} + +fun more(t: TestDummyClass) { + t.testFun { Unit } + t.testFun(CustomRunnable { Unit }) + t.testFun(object : CustomRunnable { + override fun run() {} + }) +} + +fun interface CustomRunnable { + fun run() +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index e2704383dd9..d379e7480b6 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -13927,6 +13927,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { public void testUnitInContravariantPosition() throws Exception { runTest("compiler/testData/diagnostics/tests/funInterface/unitInContravariantPosition.kt"); } + + @Test + @TestMetadata("unitInCovariantPosition.kt") + public void testUnitInCovariantPosition() throws Exception { + runTest("compiler/testData/diagnostics/tests/funInterface/unitInCovariantPosition.kt"); + } } @Nested