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() {
|
object FirFunInterfaceConstructorReferenceChecker : FirQualifiedAccessExpressionChecker() {
|
||||||
override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(expression: FirQualifiedAccessExpression, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
if (expression !is FirCallableReferenceAccess) return
|
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 reference = expression.calleeReference.resolved ?: return
|
||||||
val referredSymbol = reference.resolvedSymbol
|
val referredSymbol = reference.resolvedSymbol
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.resolve.sam.SamConstructorDescriptor
|
|||||||
|
|
||||||
object FunInterfaceConstructorReferenceChecker : CallChecker {
|
object FunInterfaceConstructorReferenceChecker : CallChecker {
|
||||||
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
|
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
|
val resultingDescriptor = resolvedCall.resultingDescriptor
|
||||||
if (resultingDescriptor !is SamConstructorDescriptor || !resolvedCall.call.isCallableReference()) return
|
if (resultingDescriptor !is SamConstructorDescriptor || !resolvedCall.call.isCallableReference()) return
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||||
|
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
// ^ unsupported in old JVM BE
|
// ^ unsupported in old JVM BE
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||||
|
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
// ^ unsupported in old JVM BE
|
// ^ unsupported in old JVM BE
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||||
|
|
||||||
// DONT_TARGET_EXACT_BACKEND: JVM
|
// DONT_TARGET_EXACT_BACKEND: JVM
|
||||||
// ^ old JVM BE generates bogus code that fails in 'invoke', but works almost as expected in terms of equality
|
// ^ 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
|
// FIR_IDENTICAL
|
||||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||||
|
|
||||||
fun interface Foo {
|
fun interface Foo {
|
||||||
fun run()
|
fun run()
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// FIR_IDENTICAL
|
// FIR_IDENTICAL
|
||||||
// !LANGUAGE: -AllowKotlinFunInterfaceConstructorReference
|
// !LANGUAGE: -KotlinFunInterfaceConstructorReference
|
||||||
|
|
||||||
fun interface Foo {
|
fun interface Foo {
|
||||||
fun run()
|
fun run()
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
// !LANGUAGE: +AllowKotlinFunInterfaceConstructorReference
|
// !LANGUAGE: +KotlinFunInterfaceConstructorReference
|
||||||
// WITH_REFLECT
|
// WITH_REFLECT
|
||||||
import kotlin.reflect.*
|
import kotlin.reflect.*
|
||||||
|
|
||||||
|
|||||||
@@ -244,7 +244,6 @@ enum class LanguageFeature(
|
|||||||
ConsiderExtensionReceiverFromConstrainsInLambda(KOTLIN_1_7, kind = BUG_FIX), // KT-49832
|
ConsiderExtensionReceiverFromConstrainsInLambda(KOTLIN_1_7, kind = BUG_FIX), // KT-49832
|
||||||
ProperInternalVisibilityCheckInImportingScope(KOTLIN_1_7, kind = BUG_FIX),
|
ProperInternalVisibilityCheckInImportingScope(KOTLIN_1_7, kind = BUG_FIX),
|
||||||
InlineClassImplementationByDelegation(KOTLIN_1_7),
|
InlineClassImplementationByDelegation(KOTLIN_1_7),
|
||||||
AllowKotlinFunInterfaceConstructorReference(KOTLIN_1_7),
|
|
||||||
|
|
||||||
// 1.8
|
// 1.8
|
||||||
|
|
||||||
@@ -258,6 +257,7 @@ enum class LanguageFeature(
|
|||||||
|
|
||||||
// Temporarily disabled, see KT-27084/KT-22379
|
// Temporarily disabled, see KT-27084/KT-22379
|
||||||
SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX),
|
SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX),
|
||||||
|
|
||||||
// Disabled for indefinite time. See KT-48535 and related discussion
|
// Disabled for indefinite time. See KT-48535 and related discussion
|
||||||
OptInOnOverrideForbidden(sinceVersion = null, kind = BUG_FIX),
|
OptInOnOverrideForbidden(sinceVersion = null, kind = BUG_FIX),
|
||||||
ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null),
|
ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null),
|
||||||
@@ -277,6 +277,7 @@ enum class LanguageFeature(
|
|||||||
JsAllowInvalidCharsIdentifiersEscaping(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE),
|
JsAllowInvalidCharsIdentifiersEscaping(sinceVersion = null, defaultState = State.DISABLED, kind = UNSTABLE_FEATURE),
|
||||||
JsAllowValueClassesInExternals(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),
|
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_6(1, 6),
|
||||||
KOTLIN_1_7(1, 7),
|
KOTLIN_1_7(1, 7),
|
||||||
KOTLIN_1_8(1, 8),
|
KOTLIN_1_8(1, 8),
|
||||||
|
KOTLIN_1_9(1, 9),
|
||||||
;
|
;
|
||||||
|
|
||||||
override val isStable: Boolean
|
override val isStable: Boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user