From c7877cb44087ce6d2361dce79adb4e44e2943ba6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 6 Jul 2021 13:00:01 +0300 Subject: [PATCH] FIR: fix contract deserialization for assertIs --- .../testData/resolveWithStdlib/smartcasts/assertIs.fir.txt | 5 +++++ .../testData/resolveWithStdlib/smartcasts/assertIs.kt | 6 ++++++ .../kotlin/test/runners/FirDiagnosticTestGenerated.java | 6 ++++++ .../runners/FirDiagnosticsWithLightTreeTestGenerated.java | 6 ++++++ .../kotlin/fir/deserialization/FirMemberDeserializer.kt | 1 + .../based/DiagnosisCompilerFirTestdataTestGenerated.java | 6 ++++++ 6 files changed, 30 insertions(+) create mode 100644 compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.fir.txt create mode 100644 compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.fir.txt new file mode 100644 index 00000000000..6cecc56fdcc --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.fir.txt @@ -0,0 +1,5 @@ +FILE: assertIs.kt + public final fun foo(arg: R|kotlin/Any|): R|kotlin/Unit| { + R|kotlin/test/assertIs|(R|/arg|, String()) + R|/arg|.R|kotlin/String.length| + } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt new file mode 100644 index 00000000000..16a4b15cbfb --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt @@ -0,0 +1,6 @@ +import kotlin.test.* + +fun foo(arg: Any) { + assertIs(arg, "") + arg.length +} \ No newline at end of file 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 d53c85d4422..28d5b9df587 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 @@ -5445,6 +5445,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("assertIs.kt") + public void testAssertIs() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt"); + } + @Test @TestMetadata("tryWithLambdaInside.kt") public void testTryWithLambdaInside() 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 93e5ead0a0a..f5c8eb46fb7 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 @@ -5445,6 +5445,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("assertIs.kt") + public void testAssertIs() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt"); + } + @Test @TestMetadata("tryWithLambdaInside.kt") public void testTryWithLambdaInside() throws Exception { diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt index f0f6e382a96..395ad3866a7 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt @@ -426,6 +426,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { versionRequirementsTable = c.versionRequirementTable } if (proto.hasContract()) { + val contractDeserializer = if (proto.typeParameterList.isEmpty()) this.contractDeserializer else FirContractDeserializer(local) val contractDescription = contractDeserializer.loadContract(proto.contract, simpleFunction) if (contractDescription != null) { simpleFunction.replaceContractDescription(contractDescription) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java index 0ef99b32275..e15dca9526b 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java @@ -5445,6 +5445,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts"), Pattern.compile("^([^.]+)\\.kt$"), null, true); } + @Test + @TestMetadata("assertIs.kt") + public void testAssertIs() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/smartcasts/assertIs.kt"); + } + @Test @TestMetadata("tryWithLambdaInside.kt") public void testTryWithLambdaInside() throws Exception {