From f4067f05a21cf00dca12eccc75a49b47e8121644 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 14 Oct 2021 17:44:47 +0300 Subject: [PATCH] FIR: forbid java.lang.String(String) constructor in JvmMappedScope #KT-49135 Fixed --- .../based/DiagnosisCompilerFirTestdataTestGenerated.java | 6 ++++++ .../resolveWithStdlib/intellij/typeAliasAmbiguity.fir.txt | 7 +++++++ .../resolveWithStdlib/intellij/typeAliasAmbiguity.kt | 4 ++++ .../kotlin/test/runners/FirDiagnosticTestGenerated.java | 6 ++++++ .../runners/FirDiagnosticsWithLightTreeTestGenerated.java | 6 ++++++ .../org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt | 1 + 6 files changed, 30 insertions(+) create mode 100644 compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.fir.txt create mode 100644 compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt 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 78be35e86e4..c383aa21a98 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 @@ -5111,6 +5111,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/PersistentStateComponent.kt"); } + @Test + @TestMetadata("typeAliasAmbiguity.kt") + public void testTypeAliasAmbiguity() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt"); + } + @Test @TestMetadata("UastPatterns.kt") public void testUastPatterns() throws Exception { diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.fir.txt new file mode 100644 index 00000000000..67e32101146 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.fir.txt @@ -0,0 +1,7 @@ +FILE: typeAliasAmbiguity.kt + public final typealias ServiceId = R|kotlin/String| + public final fun ServiceId(serviceId: R|kotlin/String|): R|ServiceId| { + ^ServiceId R|/serviceId| + } + public final val GaugeSpecTmsIntegrationServiceId: R|ServiceId| = R|/ServiceId|(String(Gauge)) + public get(): R|ServiceId| diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt new file mode 100644 index 00000000000..c26721f0519 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt @@ -0,0 +1,4 @@ +typealias ServiceId = String +fun ServiceId(serviceId: String): ServiceId = serviceId +// FE 1.0 resolves this to function +val GaugeSpecTmsIntegrationServiceId = ServiceId("Gauge") 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 2c6906b29bb..427e4bf2a61 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 @@ -5111,6 +5111,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/PersistentStateComponent.kt"); } + @Test + @TestMetadata("typeAliasAmbiguity.kt") + public void testTypeAliasAmbiguity() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt"); + } + @Test @TestMetadata("UastPatterns.kt") public void testUastPatterns() 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 277e1a505ea..0480149d413 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 @@ -5111,6 +5111,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/PersistentStateComponent.kt"); } + @Test + @TestMetadata("typeAliasAmbiguity.kt") + public void testTypeAliasAmbiguity() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/typeAliasAmbiguity.kt"); + } + @Test @TestMetadata("UastPatterns.kt") public void testUastPatterns() throws Exception { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt index 827dad2c99d..c2d025e3b44 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt @@ -146,6 +146,7 @@ class JvmMappedScope( "Lkotlin/IntArray;II", "Ljava/lang/StringBuffer;", "Ljava/lang/StringBuilder;", + "Ljava/lang/String;", ).mapTo(this) { arguments -> "java/lang/String.($arguments)V" } listOf(