FIR: Make CheckDeprecatedSinceKotlin the first resolution stage.
All subsequent stages don't need to run if the candidate is @Deprecated(HIDDEN).
This commit is contained in:
committed by
TeamCityServer
parent
63cc18b095
commit
58eb329fb9
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.calls
|
||||
|
||||
sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
object VariableAccess : CallKind(
|
||||
CheckDeprecatedSinceKotlin,
|
||||
CheckVisibility,
|
||||
DiscriminateSynthetics,
|
||||
CheckExplicitReceiverConsistency,
|
||||
@@ -17,7 +18,6 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
CheckExtensionReceiver,
|
||||
CheckLowPriorityInOverloadResolution,
|
||||
PostponedVariablesInitializerResolutionStage,
|
||||
CheckDeprecatedSinceKotlin,
|
||||
)
|
||||
|
||||
object SyntheticSelect : CallKind(
|
||||
@@ -30,6 +30,7 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
)
|
||||
|
||||
object Function : CallKind(
|
||||
CheckDeprecatedSinceKotlin,
|
||||
CheckVisibility,
|
||||
DiscriminateSynthetics,
|
||||
MapArguments,
|
||||
@@ -44,10 +45,10 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
EagerResolveOfCallableReferences,
|
||||
CheckLowPriorityInOverloadResolution,
|
||||
PostponedVariablesInitializerResolutionStage,
|
||||
CheckDeprecatedSinceKotlin
|
||||
)
|
||||
|
||||
object DelegatingConstructorCall : CallKind(
|
||||
CheckDeprecatedSinceKotlin,
|
||||
CheckVisibility,
|
||||
MapArguments,
|
||||
CheckExplicitReceiverConsistency,
|
||||
@@ -58,10 +59,10 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
CheckExtensionReceiver,
|
||||
CheckArguments,
|
||||
EagerResolveOfCallableReferences,
|
||||
CheckDeprecatedSinceKotlin,
|
||||
)
|
||||
|
||||
object CallableReference : CallKind(
|
||||
CheckDeprecatedSinceKotlin,
|
||||
CheckVisibility,
|
||||
DiscriminateSynthetics,
|
||||
NoTypeArguments,
|
||||
@@ -71,7 +72,6 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) {
|
||||
CheckExtensionReceiver,
|
||||
CheckCallableReferenceExpectedType,
|
||||
CheckLowPriorityInOverloadResolution,
|
||||
CheckDeprecatedSinceKotlin,
|
||||
)
|
||||
|
||||
object SyntheticIdForCallableReferencesResolution : CallKind(
|
||||
|
||||
@@ -25,6 +25,9 @@ open class A {
|
||||
@Deprecated("hidden", level = DeprecationLevel.HIDDEN)
|
||||
open fun memberFun(){}
|
||||
|
||||
@Deprecated("hidden", level = DeprecationLevel.HIDDEN)
|
||||
private fun privateFun(){}
|
||||
|
||||
@Deprecated("hidden", level = DeprecationLevel.HIDDEN)
|
||||
val memberProperty = 1
|
||||
|
||||
@@ -36,14 +39,22 @@ open class A {
|
||||
|
||||
fun foo() {
|
||||
<!INVISIBLE_REFERENCE!>topLevelFun<!>()
|
||||
<!INVISIBLE_REFERENCE!>topLevelFun<!>(1)
|
||||
<!INVISIBLE_REFERENCE, INVISIBLE_REFERENCE!>topLevelProperty<!>++
|
||||
"".<!INVISIBLE_REFERENCE!>topLevelExtensionFun<!>()
|
||||
1.<!INVISIBLE_REFERENCE!>topLevelExtensionFun<!>()
|
||||
"".<!INVISIBLE_REFERENCE!>topLevelExtensionProperty<!>
|
||||
1.<!INVISIBLE_REFERENCE!>topLevelExtensionProperty<!>
|
||||
|
||||
<!INVISIBLE_REFERENCE!>memberFun<!>()
|
||||
<!INVISIBLE_REFERENCE!>memberFun<!>(1)
|
||||
<!INVISIBLE_REFERENCE!>privateFun<!>()
|
||||
<!INVISIBLE_REFERENCE!>privateFun<!>(1)
|
||||
<!INVISIBLE_REFERENCE!>memberProperty<!>
|
||||
"".<!INVISIBLE_REFERENCE!>memberExtensionFun<!>()
|
||||
1.<!INVISIBLE_REFERENCE!>memberExtensionFun<!>()
|
||||
"".<!INVISIBLE_REFERENCE!>memberExtensionProperty<!>
|
||||
1.<!INVISIBLE_REFERENCE!>memberExtensionProperty<!>
|
||||
|
||||
A(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
|
||||
}
|
||||
@@ -66,6 +77,8 @@ class B : A(<!ARGUMENT_TYPE_MISMATCH!>""<!>) {
|
||||
// still can override it
|
||||
override fun <!OVERRIDE_DEPRECATION!>memberFun<!>() {
|
||||
super.<!INVISIBLE_REFERENCE!>memberFun<!>() // but cannot call super :)
|
||||
<!INVISIBLE_REFERENCE!>privateFun<!>()
|
||||
<!INVISIBLE_REFERENCE!>privateFun<!>(1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,9 @@ open class A {
|
||||
@Deprecated("hidden", level = DeprecationLevel.HIDDEN)
|
||||
open fun memberFun(){}
|
||||
|
||||
@Deprecated("hidden", level = DeprecationLevel.HIDDEN)
|
||||
private fun privateFun(){}
|
||||
|
||||
@Deprecated("hidden", level = DeprecationLevel.HIDDEN)
|
||||
val memberProperty = 1
|
||||
|
||||
@@ -36,14 +39,22 @@ open class A {
|
||||
|
||||
fun foo() {
|
||||
<!UNRESOLVED_REFERENCE!>topLevelFun<!>()
|
||||
<!UNRESOLVED_REFERENCE!>topLevelFun<!>(1)
|
||||
<!UNRESOLVED_REFERENCE, VARIABLE_EXPECTED!>topLevelProperty<!><!DEBUG_INFO_MISSING_UNRESOLVED!>++<!>
|
||||
"".<!UNRESOLVED_REFERENCE!>topLevelExtensionFun<!>()
|
||||
1.<!UNRESOLVED_REFERENCE!>topLevelExtensionFun<!>()
|
||||
"".<!UNRESOLVED_REFERENCE!>topLevelExtensionProperty<!>
|
||||
1.<!UNRESOLVED_REFERENCE!>topLevelExtensionProperty<!>
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>memberFun<!>()
|
||||
<!UNRESOLVED_REFERENCE!>memberFun<!>(1)
|
||||
<!UNRESOLVED_REFERENCE!>privateFun<!>()
|
||||
<!UNRESOLVED_REFERENCE!>privateFun<!>(1)
|
||||
<!UNRESOLVED_REFERENCE!>memberProperty<!>
|
||||
"".<!UNRESOLVED_REFERENCE!>memberExtensionFun<!>()
|
||||
1.<!UNRESOLVED_REFERENCE!>memberExtensionFun<!>()
|
||||
"".<!UNRESOLVED_REFERENCE!>memberExtensionProperty<!>
|
||||
1.<!UNRESOLVED_REFERENCE!>memberExtensionProperty<!>
|
||||
|
||||
A(<!TYPE_MISMATCH!>""<!>)
|
||||
}
|
||||
@@ -66,6 +77,8 @@ class B : A(<!TYPE_MISMATCH!>""<!>) {
|
||||
// still can override it
|
||||
override fun <!OVERRIDE_DEPRECATION!>memberFun<!>() {
|
||||
super.<!UNRESOLVED_REFERENCE!>memberFun<!>() // but cannot call super :)
|
||||
<!UNRESOLVED_REFERENCE!>privateFun<!>()
|
||||
<!UNRESOLVED_REFERENCE!>privateFun<!>(1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ package test {
|
||||
public final fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") public open fun memberFun(): kotlin.Unit
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") private final fun privateFun(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") public final fun kotlin.String.memberExtensionFun(): kotlin.Unit
|
||||
}
|
||||
@@ -27,6 +28,7 @@ package test {
|
||||
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ fun memberFun(): kotlin.Unit
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") invisible_fake final override /*1*/ /*fake_override*/ fun privateFun(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") public final override /*1*/ /*fake_override*/ fun kotlin.String.memberExtensionFun(): kotlin.Unit
|
||||
}
|
||||
@@ -39,6 +41,7 @@ package test {
|
||||
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") public open override /*1*/ /*fake_override*/ fun memberFun(): kotlin.Unit
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") invisible_fake final override /*1*/ /*fake_override*/ fun privateFun(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
@kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "hidden") public final override /*1*/ /*fake_override*/ fun kotlin.String.memberExtensionFun(): kotlin.Unit
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user