diff --git a/compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.kt b/compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.kt new file mode 100644 index 00000000000..dafb32b2c89 --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.kt @@ -0,0 +1,11 @@ +interface G { + val a: Array +} + +fun goo(g: G) { + val x = g.a.firstOrNullX() +} + +public fun Array.firstOrNullX(): T? { + return if (isEmpty()) null else this[0] +} \ No newline at end of file diff --git a/compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.txt b/compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.txt new file mode 100644 index 00000000000..ab4289011ed --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.txt @@ -0,0 +1,20 @@ +FILE: arrayFirstOrNull.kt + public abstract interface G : R|kotlin/Any| { + public abstract val a: R|kotlin/Array| + public get(): R|kotlin/Array| + + } + public final fun goo(g: R|G|): R|kotlin/Unit| { + lval x: R|G|? = R|/g|.R|/G.a|.R|/firstOrNullX|() + } + public final fun R|kotlin/Array|.firstOrNullX(): R|T|? { + ^firstOrNullX when () { + #() -> { + Null(null) + } + else -> { + this#.R|FakeOverride|(Int(0)) + } + } + + } diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveTestCaseWithStdlibGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveTestCaseWithStdlibGenerated.java index 9d4f903043a..4be86e47bf4 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveTestCaseWithStdlibGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirResolveTestCaseWithStdlibGenerated.java @@ -29,6 +29,11 @@ public class FirResolveTestCaseWithStdlibGenerated extends AbstractFirResolveTes KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/resolve/stdlib"), Pattern.compile("^([^.]+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("arrayFirstOrNull.kt") + public void testArrayFirstOrNull() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.kt"); + } + @TestMetadata("concurrent.kt") public void testConcurrent() throws Exception { runTest("compiler/fir/resolve/testData/resolve/stdlib/concurrent.kt");