K2: don't try to substitute to placeholder projection #KT-72178 Fixed
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java
index a89f963..ddfb0fe 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java
@@ -17385,6 +17385,12 @@
}
@Test
+ @TestMetadata("underscoredInEnumMap.kt")
+ public void testUnderscoredInEnumMap() {
+ runTest("compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt");
+ }
+
+ @Test
@TestMetadata("underscoredTypeArgument.kt")
public void testUnderscoredTypeArgument() {
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java
index 61ca0d5..5a6c16c 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java
@@ -17385,6 +17385,12 @@
}
@Test
+ @TestMetadata("underscoredInEnumMap.kt")
+ public void testUnderscoredInEnumMap() {
+ runTest("compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt");
+ }
+
+ @Test
@TestMetadata("underscoredTypeArgument.kt")
public void testUnderscoredTypeArgument() {
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java
index b28a880..5dcee62 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java
@@ -17379,6 +17379,12 @@
}
@Test
+ @TestMetadata("underscoredInEnumMap.kt")
+ public void testUnderscoredInEnumMap() {
+ runTest("compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt");
+ }
+
+ @Test
@TestMetadata("underscoredTypeArgument.kt")
public void testUnderscoredTypeArgument() {
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsWithLatestLanguageVersionTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsWithLatestLanguageVersionTestGenerated.java
index 982824d..f0925cb 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsWithLatestLanguageVersionTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsWithLatestLanguageVersionTestGenerated.java
@@ -17379,6 +17379,12 @@
}
@Test
+ @TestMetadata("underscoredInEnumMap.kt")
+ public void testUnderscoredInEnumMap() {
+ runTest("compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt");
+ }
+
+ @Test
@TestMetadata("underscoredTypeArgument.kt")
public void testUnderscoredTypeArgument() {
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java
index c49bbbf..0621f35 100644
--- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java
+++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java
@@ -17385,6 +17385,12 @@
}
@Test
+ @TestMetadata("underscoredInEnumMap.kt")
+ public void testUnderscoredInEnumMap() {
+ runTest("compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt");
+ }
+
+ @Test
@TestMetadata("underscoredTypeArgument.kt")
public void testUnderscoredTypeArgument() {
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt
index 6216c9f..494e9f1 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt
@@ -444,7 +444,9 @@
val baseTypeArgument = baseSubstitutor.substituteOrNull(freshVariable.defaultType) ?: continue
if (baseTypeArgument !is ConeFlexibleType) continue
- val explicitArgument = typeArgumentMapping[index].toConeTypeProjection().type ?: continue
+ val typeArgument = typeArgumentMapping[index]
+ if (typeArgument is FirPlaceholderProjection) continue
+ val explicitArgument = typeArgument.toConeTypeProjection().type ?: continue
overridingMap[freshVariable.typeConstructor] =
baseTypeArgument.withNullabilityOf(explicitArgument, session.typeContext)
diff --git a/compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt b/compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt
new file mode 100644
index 0000000..b95adc3
--- /dev/null
+++ b/compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt
@@ -0,0 +1,11 @@
+// FIR_IDENTICAL
+// ISSUE: KT-72178
+// FULL_JDK
+// WITH_STDLIB
+
+import java.util.EnumMap
+
+enum class Key
+class Value
+
+val map = EnumMap<_, Value>(Key::class.java)
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 b2c5487..6086949 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
@@ -17385,6 +17385,12 @@
}
@Test
+ @TestMetadata("underscoredInEnumMap.kt")
+ public void testUnderscoredInEnumMap() {
+ runTest("compiler/testData/diagnostics/tests/inference/underscoredInEnumMap.kt");
+ }
+
+ @Test
@TestMetadata("underscoredTypeArgument.kt")
public void testUnderscoredTypeArgument() {
runTest("compiler/testData/diagnostics/tests/inference/underscoredTypeArgument.kt");