From d1b8ca31c00f6ef565584cabd6f3b79ad7ac6847 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 17 Apr 2019 18:06:02 +0300 Subject: [PATCH] FIR resolve: add test for firstOrNull --- .../resolve/stdlib/arrayFirstOrNull.kt | 11 ++++++++++ .../resolve/stdlib/arrayFirstOrNull.txt | 20 +++++++++++++++++++ ...FirResolveTestCaseWithStdlibGenerated.java | 5 +++++ 3 files changed, 36 insertions(+) create mode 100644 compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.kt create mode 100644 compiler/fir/resolve/testData/resolve/stdlib/arrayFirstOrNull.txt 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");