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:
Mark Punzalan
2021-09-23 18:16:38 +00:00
committed by TeamCityServer
parent 63cc18b095
commit 58eb329fb9
4 changed files with 33 additions and 4 deletions
@@ -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
}