From e5eee9bab955a620dd1aeb35cb81ce192785fd91 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Fri, 3 Dec 2021 17:28:49 +0300 Subject: [PATCH] KT-47939 KotlinFunInterfaceConstructorReference is experimental --- .../expression/FirFunInterfaceConstructorReferenceChecker.kt | 2 +- .../calls/checkers/FunInterfaceConstructorReferenceChecker.kt | 2 +- .../funInterfaceConstructedObjectsEquality.kt | 2 +- .../funInterfaceConstructor/funInterfaceConstructor.kt | 2 +- .../funInterfaceConstructorEquality.kt | 2 +- .../funInterface/funInterfaceConstructorReferences_after.kt | 2 +- .../funInterface/funInterfaceConstructorReferences_before.kt | 2 +- .../ir/irText/expressions/funInterfaceConstructorReference.kt | 2 +- .../org/jetbrains/kotlin/config/LanguageVersionSettings.kt | 4 +++- 9 files changed, 11 insertions(+), 9 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunInterfaceConstructorReferenceChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunInterfaceConstructorReferenceChecker.kt index 75ebc9d5c2e..4de1a100ae4 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunInterfaceConstructorReferenceChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunInterfaceConstructorReferenceChecker.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol object FirFunInterfaceConstructorReferenceChecker : FirQualifiedAccessExpressionChecker() { override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) { if (expression !is FirCallableReferenceAccess) return - if (context.languageVersionSettings.supportsFeature(LanguageFeature.AllowKotlinFunInterfaceConstructorReference)) return + if (context.languageVersionSettings.supportsFeature(LanguageFeature.KotlinFunInterfaceConstructorReference)) return val reference = expression.calleeReference.resolved ?: return val referredSymbol = reference.resolvedSymbol diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/FunInterfaceConstructorReferenceChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/FunInterfaceConstructorReferenceChecker.kt index 202bf5e200f..5ef80b8e106 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/FunInterfaceConstructorReferenceChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/checkers/FunInterfaceConstructorReferenceChecker.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor object FunInterfaceConstructorReferenceChecker : CallChecker { override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) { - if (context.languageVersionSettings.supportsFeature(LanguageFeature.AllowKotlinFunInterfaceConstructorReference)) return + if (context.languageVersionSettings.supportsFeature(LanguageFeature.KotlinFunInterfaceConstructorReference)) return val resultingDescriptor = resolvedCall.resultingDescriptor if (resultingDescriptor !is SamConstructorDescriptor || !resolvedCall.call.isCallableReference()) return diff --git a/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructedObjectsEquality.kt b/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructedObjectsEquality.kt index a9442c5eb6e..7f2c8182447 100644 --- a/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructedObjectsEquality.kt +++ b/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructedObjectsEquality.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference +// !LANGUAGE: +KotlinFunInterfaceConstructorReference // IGNORE_BACKEND: JVM // ^ unsupported in old JVM BE diff --git a/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructor.kt b/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructor.kt index 179f746548b..e4f1a78f288 100644 --- a/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructor.kt +++ b/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructor.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference +// !LANGUAGE: +KotlinFunInterfaceConstructorReference // IGNORE_BACKEND: JVM // ^ unsupported in old JVM BE diff --git a/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructorEquality.kt b/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructorEquality.kt index 5b28880fb4e..2135d1db2e6 100644 --- a/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructorEquality.kt +++ b/compiler/testData/codegen/box/callableReference/funInterfaceConstructor/funInterfaceConstructorEquality.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference +// !LANGUAGE: +KotlinFunInterfaceConstructorReference // DONT_TARGET_EXACT_BACKEND: JVM // ^ old JVM BE generates bogus code that fails in 'invoke', but works almost as expected in terms of equality diff --git a/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_after.kt b/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_after.kt index 2a2e2068e96..1d358dcd273 100644 --- a/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_after.kt +++ b/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_after.kt @@ -1,5 +1,5 @@ // FIR_IDENTICAL -// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference +// !LANGUAGE: +KotlinFunInterfaceConstructorReference fun interface Foo { fun run() diff --git a/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_before.kt b/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_before.kt index 4ded15752f2..fc5132f6208 100644 --- a/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_before.kt +++ b/compiler/testData/diagnostics/tests/funInterface/funInterfaceConstructorReferences_before.kt @@ -1,5 +1,5 @@ // FIR_IDENTICAL -// !LANGUAGE: -AllowKotlinFunInterfaceConstructorReference +// !LANGUAGE: -KotlinFunInterfaceConstructorReference fun interface Foo { fun run() diff --git a/compiler/testData/ir/irText/expressions/funInterfaceConstructorReference.kt b/compiler/testData/ir/irText/expressions/funInterfaceConstructorReference.kt index 8790fe24c40..8ae0c73cdc5 100644 --- a/compiler/testData/ir/irText/expressions/funInterfaceConstructorReference.kt +++ b/compiler/testData/ir/irText/expressions/funInterfaceConstructorReference.kt @@ -1,4 +1,4 @@ -// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference +// !LANGUAGE: +KotlinFunInterfaceConstructorReference // WITH_REFLECT import kotlin.reflect.* diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 61dcb14b3d7..ad5f703e453 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -244,7 +244,6 @@ enum class LanguageFeature( ConsiderExtensionReceiverFromConstrainsInLambda(KOTLIN_1_7, kind = BUG_FIX), // KT-49832 ProperInternalVisibilityCheckInImportingScope(KOTLIN_1_7, kind = BUG_FIX), InlineClassImplementationByDelegation(KOTLIN_1_7), - AllowKotlinFunInterfaceConstructorReference(KOTLIN_1_7), // 1.8 @@ -258,6 +257,7 @@ enum class LanguageFeature( // Temporarily disabled, see KT-27084/KT-22379 SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX), + // Disabled for indefinite time. See KT-48535 and related discussion OptInOnOverrideForbidden(sinceVersion = null, kind = BUG_FIX), ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null), @@ -277,6 +277,7 @@ enum class LanguageFeature( JsAllowInvalidCharsIdentifiersEscaping(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE), JsAllowValueClassesInExternals(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE), ContextReceivers(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE), + KotlinFunInterfaceConstructorReference(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE), ; @@ -365,6 +366,7 @@ enum class LanguageVersion(val major: Int, val minor: Int) : DescriptionAware, L KOTLIN_1_6(1, 6), KOTLIN_1_7(1, 7), KOTLIN_1_8(1, 8), + KOTLIN_1_9(1, 9), ; override val isStable: Boolean