FE: don't run builder inference in UNTIL_FIRST_LAMBDA mode
#KT-52927 Fixed
This commit is contained in:
+6
@@ -14339,6 +14339,12 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("invalidateKeys.kt")
|
||||||
|
public void testInvalidateKeys() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/invalidateKeys.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt47744.kt")
|
@TestMetadata("kt47744.kt")
|
||||||
public void testKt47744() throws Exception {
|
public void testKt47744() throws Exception {
|
||||||
|
|||||||
+6
@@ -14339,6 +14339,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("invalidateKeys.kt")
|
||||||
|
public void testInvalidateKeys() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/invalidateKeys.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt47744.kt")
|
@TestMetadata("kt47744.kt")
|
||||||
public void testKt47744() throws Exception {
|
public void testKt47744() throws Exception {
|
||||||
|
|||||||
+6
@@ -14339,6 +14339,12 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("invalidateKeys.kt")
|
||||||
|
public void testInvalidateKeys() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/invalidateKeys.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt47744.kt")
|
@TestMetadata("kt47744.kt")
|
||||||
public void testKt47744() throws Exception {
|
public void testKt47744() throws Exception {
|
||||||
|
|||||||
+1
-1
@@ -183,7 +183,7 @@ class ConstraintSystemCompleter(components: BodyResolveComponents, private val c
|
|||||||
allTypeVariables: List<TypeConstructorMarker>,
|
allTypeVariables: List<TypeConstructorMarker>,
|
||||||
analyze: (PostponedResolvedAtom) -> Unit
|
analyze: (PostponedResolvedAtom) -> Unit
|
||||||
): Boolean {
|
): Boolean {
|
||||||
if (completionMode == ConstraintSystemCompletionMode.PARTIAL) return false
|
if (completionMode != ConstraintSystemCompletionMode.FULL) return false
|
||||||
|
|
||||||
// If we use the builder inference anyway (if the annotation is presented), then we are already analysed builder inference lambdas
|
// If we use the builder inference anyway (if the annotation is presented), then we are already analysed builder inference lambdas
|
||||||
if (!languageVersionSettings.supportsFeature(LanguageFeature.UseBuilderInferenceOnlyIfNeeded)) return false
|
if (!languageVersionSettings.supportsFeature(LanguageFeature.UseBuilderInferenceOnlyIfNeeded)) return false
|
||||||
|
|||||||
+1
-1
@@ -212,7 +212,7 @@ class KotlinConstraintSystemCompleter(
|
|||||||
diagnosticsHolder: KotlinDiagnosticsHolder,
|
diagnosticsHolder: KotlinDiagnosticsHolder,
|
||||||
analyze: (PostponedResolvedAtom) -> Unit
|
analyze: (PostponedResolvedAtom) -> Unit
|
||||||
): Boolean {
|
): Boolean {
|
||||||
if (completionMode == ConstraintSystemCompletionMode.PARTIAL) return false
|
if (completionMode != ConstraintSystemCompletionMode.FULL) return false
|
||||||
|
|
||||||
val useBuilderInferenceOnlyIfNeeded = languageVersionSettings.supportsFeature(LanguageFeature.UseBuilderInferenceOnlyIfNeeded)
|
val useBuilderInferenceOnlyIfNeeded = languageVersionSettings.supportsFeature(LanguageFeature.UseBuilderInferenceOnlyIfNeeded)
|
||||||
|
|
||||||
|
|||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// WITH_STDLIB
|
||||||
|
fun foo(libraryInfoCache: LibraryInfoCache<String, String>, outdated: List<String>) {
|
||||||
|
val droppedLibraryInfos = libraryInfoCache.invalidateKeys(outdated).<!UNRESOLVED_REFERENCE!>flatMapTo<!>(hashSetOf()) { <!UNRESOLVED_REFERENCE!>it<!> }
|
||||||
|
}
|
||||||
|
|
||||||
|
class LibraryInfoCache<Key, Value> {
|
||||||
|
fun invalidateKeys(
|
||||||
|
keys: Collection<Key>,
|
||||||
|
validityCondition: ((Key, Value) -> Boolean)? = null
|
||||||
|
) {}
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// WITH_STDLIB
|
||||||
|
fun foo(libraryInfoCache: LibraryInfoCache<String, String>, outdated: List<String>) {
|
||||||
|
val droppedLibraryInfos = libraryInfoCache.invalidateKeys(outdated).<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>flatMapTo<!>(hashSetOf()) { <!UNRESOLVED_REFERENCE!>it<!> }
|
||||||
|
}
|
||||||
|
|
||||||
|
class LibraryInfoCache<Key, Value> {
|
||||||
|
fun invalidateKeys(
|
||||||
|
keys: Collection<Key>,
|
||||||
|
validityCondition: ((Key, Value) -> Boolean)? = null
|
||||||
|
) {}
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public fun foo(/*0*/ libraryInfoCache: LibraryInfoCache<kotlin.String, kotlin.String>, /*1*/ outdated: kotlin.collections.List<kotlin.String>): kotlin.Unit
|
||||||
|
|
||||||
|
public final class LibraryInfoCache</*0*/ Key, /*1*/ Value> {
|
||||||
|
public constructor LibraryInfoCache</*0*/ Key, /*1*/ Value>()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public final fun invalidateKeys(/*0*/ keys: kotlin.collections.Collection<Key>, /*1*/ validityCondition: ((Key, Value) -> kotlin.Boolean)? = ...): kotlin.Unit
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
Generated
+6
@@ -14345,6 +14345,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/errorOnStubReceiver.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("invalidateKeys.kt")
|
||||||
|
public void testInvalidateKeys() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/inference/builderInference/invalidateKeys.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt47744.kt")
|
@TestMetadata("kt47744.kt")
|
||||||
public void testKt47744() throws Exception {
|
public void testKt47744() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user