diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java index eea32df00db..f448732bf92 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java @@ -6273,6 +6273,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/exceptionInRepeatedAnnotation.kt"); } + @Test + @TestMetadata("falseSamConversion.kt") + public void testFalseSamConversion() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.kt"); + } + @Test @TestMetadata("immutableName.kt") public void testImmutableName() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 802f9d7e89b..1c00132b3d0 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -27572,6 +27572,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag runTest("compiler/testData/diagnostics/tests/samConversions/samConversionToGeneric.kt"); } + @Test + @TestMetadata("samConversionWithCondition.kt") + public void testSamConversionWithCondition() throws Exception { + runTest("compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt"); + } + @Test @TestMetadata("samConversionsWithSmartCasts.kt") public void testSamConversionsWithSmartCasts() throws Exception { diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.fir.txt new file mode 100644 index 00000000000..7471c7ef0d0 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.fir.txt @@ -0,0 +1,16 @@ +FILE: test.kt + public final class Wrapper : R|kotlin/Any| { + public constructor(si: R|SamInterface?|): R|Wrapper| { + super() + } + + public final val si: R|SamInterface?| = R|/si| + public get(): R|SamInterface?| + + } + public final fun test(w: R|Wrapper?|): R|kotlin/Unit| { + R|/Wrapper.Wrapper|(R|/w|?.{ $subj$.R|kotlin/let|( = let@fun (it: R|Wrapper|): R|SamInterface?| { + ^ R|/it|.R|/Wrapper.si| + } + ) }) + } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.kt new file mode 100644 index 00000000000..3ab30745397 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.kt @@ -0,0 +1,13 @@ +// FILE: SamInterface.java + +public interface SamInterface { + public boolean foo(String arg); +} + +// FILE: test.kt + +class Wrapper(val si: SamInterface?) + +fun test(w: Wrapper?) { + Wrapper(w?.let { it.si }) +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java index 2b447dddee8..ada959b45cf 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java @@ -6273,6 +6273,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/exceptionInRepeatedAnnotation.kt"); } + @Test + @TestMetadata("falseSamConversion.kt") + public void testFalseSamConversion() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.kt"); + } + @Test @TestMetadata("immutableName.kt") public void testImmutableName() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java index c68de66694a..97cd53b7dc7 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java @@ -6273,6 +6273,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/exceptionInRepeatedAnnotation.kt"); } + @Test + @TestMetadata("falseSamConversion.kt") + public void testFalseSamConversion() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/falseSamConversion.kt"); + } + @Test @TestMetadata("immutableName.kt") public void testImmutableName() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 5bbd015b7df..748ce550497 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -27584,6 +27584,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti runTest("compiler/testData/diagnostics/tests/samConversions/samConversionToGeneric.kt"); } + @Test + @TestMetadata("samConversionWithCondition.kt") + public void testSamConversionWithCondition() throws Exception { + runTest("compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt"); + } + @Test @TestMetadata("samConversionsWithSmartCasts.kt") public void testSamConversionsWithSmartCasts() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index 5a3084c8359..2392871e8cf 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -27572,6 +27572,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac runTest("compiler/testData/diagnostics/tests/samConversions/samConversionToGeneric.kt"); } + @Test + @TestMetadata("samConversionWithCondition.kt") + public void testSamConversionWithCondition() throws Exception { + runTest("compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt"); + } + @Test @TestMetadata("samConversionsWithSmartCasts.kt") public void testSamConversionsWithSmartCasts() throws Exception { diff --git a/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.fir.kt b/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.fir.kt new file mode 100644 index 00000000000..5b5a44d1ea6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.fir.kt @@ -0,0 +1,14 @@ +fun main() { + val flag = true + consumeTicker( + if (flag) null else { num -> num.dec() } + ) +} + +fun consumeTicker(ticker: Ticker?) { + +} + +fun interface Ticker { + fun tick(num: Int) +} diff --git a/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt b/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt new file mode 100644 index 00000000000..f238e8ec9e3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt @@ -0,0 +1,14 @@ +fun main() { + val flag = true + consumeTicker( + if (flag) null else { num -> num.dec() } + ) +} + +fun consumeTicker(ticker: Ticker?) { + +} + +fun interface Ticker { + fun tick(num: Int) +} diff --git a/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.txt b/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.txt new file mode 100644 index 00000000000..b278adf3f2e --- /dev/null +++ b/compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.txt @@ -0,0 +1,11 @@ +package + +public fun consumeTicker(/*0*/ ticker: Ticker?): kotlin.Unit +public fun main(): kotlin.Unit + +public fun interface Ticker { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public abstract fun tick(/*0*/ num: kotlin.Int): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} 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 291b17e4374..6c731766da2 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 @@ -27584,6 +27584,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/samConversions/samConversionToGeneric.kt"); } + @Test + @TestMetadata("samConversionWithCondition.kt") + public void testSamConversionWithCondition() throws Exception { + runTest("compiler/testData/diagnostics/tests/samConversions/samConversionWithCondition.kt"); + } + @Test @TestMetadata("samConversionsWithSmartCasts.kt") public void testSamConversionsWithSmartCasts() throws Exception {