KT-47939 KotlinFunInterfaceConstructorReference is experimental
This commit is contained in:
committed by
TeamCityServer
parent
72f7276f3c
commit
e5eee9bab9
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
||||
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||
|
||||
// IGNORE_BACKEND: JVM
|
||||
// ^ unsupported in old JVM BE
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
||||
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||
|
||||
// IGNORE_BACKEND: JVM
|
||||
// ^ unsupported in old JVM BE
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
||||
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||
|
||||
fun interface Foo {
|
||||
fun run()
|
||||
|
||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: -AllowKotlinFunInterfaceConstructorReference
|
||||
// !LANGUAGE: -KotlinFunInterfaceConstructorReference
|
||||
|
||||
fun interface Foo {
|
||||
fun run()
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
||||
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||
// WITH_REFLECT
|
||||
import kotlin.reflect.*
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user