[FIR] optimize deprecation calculation for symbols

All symbols except member callables can be deprecated if they have non-empty annotation list

^KT-56800 fixed
This commit is contained in:
Ilya Kirillov
2023-02-20 16:25:55 +01:00
parent 0bbc61f459
commit 69c024a5ce
33 changed files with 163 additions and 144 deletions
@@ -207,13 +207,13 @@ FILE: annotationParameters.kt
public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
}
public? final? [SUPER_TYPES] class B : R|kotlin/Any| {
@@ -245,13 +245,13 @@ FILE: annotationParameters.kt
public [RAW_FIR] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
}
public final [SUPER_TYPES] class B : R|kotlin/Any| {
@@ -283,13 +283,13 @@ FILE: annotationParameters.kt
public [STATUS] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
}
public final [STATUS] class B : R|kotlin/Any| {
@@ -321,13 +321,13 @@ FILE: annotationParameters.kt
public [STATUS] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
}
public final [STATUS] class B : R|kotlin/Any| {
@@ -360,13 +360,13 @@ FILE: annotationParameters.kt
public [STATUS] get(): R|kotlin/enums/EnumEntries<X>|
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor([COMPILER_REQUIRED_ANNOTATIONS] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X
public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
}
public final [STATUS] class B : R|kotlin/Any| {
@@ -97,9 +97,9 @@ FILE: nestedClassWithPropertiesOverrides.kt
SUPER_TYPES:
FILE: nestedClassWithPropertiesOverrides.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface OV : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] val originalExpressions: A
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=OV] get(): A
public? final? [RAW_FIR] interface OV : R|kotlin/Any| {
public? final? [RAW_FIR] val originalExpressions: A
public? [RAW_FIR] [ContainingClassKey=OV] get(): A
public? final? [SUPER_TYPES] class ResolveMe : R|OV| {
public? [SUPER_TYPES] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| {
@@ -136,8 +136,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -160,8 +160,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -184,8 +184,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -208,8 +208,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -232,8 +232,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -256,8 +256,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -280,8 +280,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -304,8 +304,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
}
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
+10 -10
View File
@@ -126,8 +126,8 @@ FILE: enumEntry.kt
TYPES:
FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -151,8 +151,8 @@ FILE: enumEntry.kt
STATUS:
FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -176,8 +176,8 @@ FILE: enumEntry.kt
ARGUMENTS_OF_ANNOTATIONS:
FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -201,8 +201,8 @@ FILE: enumEntry.kt
CONTRACTS:
FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -232,8 +232,8 @@ FILE: enumEntry.kt
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| {
public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -48,8 +48,8 @@ TYPES:
FILE: anonymousObjectInInvalidPosition.kt
private final? [TYPES] val resolveMe: <ERROR TYPE REF: Wrong number of type arguments> = LAZY_EXPRESSION
private [TYPES] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -57,8 +57,8 @@ STATUS:
FILE: anonymousObjectInInvalidPosition.kt
private final [STATUS] val resolveMe: <ERROR TYPE REF: Wrong number of type arguments> = LAZY_EXPRESSION
private [STATUS] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -66,8 +66,8 @@ ARGUMENTS_OF_ANNOTATIONS:
FILE: anonymousObjectInInvalidPosition.kt
private final [ARGUMENTS_OF_ANNOTATIONS] val resolveMe: <ERROR TYPE REF: Wrong number of type arguments> = LAZY_EXPRESSION
private [ARGUMENTS_OF_ANNOTATIONS] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -84,8 +84,8 @@ FILE: anonymousObjectInInvalidPosition.kt
}
private [CONTRACTS] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -102,8 +102,8 @@ FILE: anonymousObjectInInvalidPosition.kt
}
private [IMPLICIT_TYPES_BODY_RESOLVE] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -120,8 +120,8 @@ FILE: anonymousObjectInInvalidPosition.kt
}
private [ANNOTATIONS_ARGUMENTS_MAPPING] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -138,8 +138,8 @@ FILE: anonymousObjectInInvalidPosition.kt
}
private [EXPECT_ACTUAL_MATCHING] get(): <ERROR TYPE REF: Wrong number of type arguments>
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface A<[COMPILER_REQUIRED_ANNOTATIONS] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit|
public? final? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
}
@@ -31,25 +31,25 @@ FILE: functionWithParameter.kt
TYPES:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public? final? [TYPES] fun resolveMe([TYPES] param: R|I|): <implicit> { LAZY_BLOCK }
STATUS:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [STATUS] fun resolveMe([STATUS] param: R|I|): <implicit> { LAZY_BLOCK }
ARGUMENTS_OF_ANNOTATIONS:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe([ARGUMENTS_OF_ANNOTATIONS] param: R|I|): <implicit> { LAZY_BLOCK }
CONTRACTS:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [CONTRACTS] fun resolveMe([CONTRACTS] param: R|I|): <implicit> {
^resolveMe Unit#
@@ -57,7 +57,7 @@ FILE: functionWithParameter.kt
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe([IMPLICIT_TYPES_BODY_RESOLVE] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit|
@@ -65,7 +65,7 @@ FILE: functionWithParameter.kt
ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [ANNOTATIONS_ARGUMENTS_MAPPING] fun resolveMe([ANNOTATIONS_ARGUMENTS_MAPPING] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit|
@@ -73,7 +73,7 @@ FILE: functionWithParameter.kt
EXPECT_ACTUAL_MATCHING:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [EXPECT_ACTUAL_MATCHING] fun resolveMe([EXPECT_ACTUAL_MATCHING] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit|
@@ -81,7 +81,7 @@ FILE: functionWithParameter.kt
BODY_RESOLVE:
FILE: functionWithParameter.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface I : R|kotlin/Any| {
public? final? [RAW_FIR] interface I : R|kotlin/Any| {
}
public final [BODY_RESOLVE] fun resolveMe([BODY_RESOLVE] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit|
@@ -141,8 +141,8 @@ FILE: functionCallWithGenericResult.kt
BODY_RESOLVE:
FILE: functionCallWithGenericResult.kt
public? open [COMPILER_REQUIRED_ANNOTATIONS] class Foo<[COMPILER_REQUIRED_ANNOTATIONS] T : CharSequence> : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Foo] constructor<[COMPILER_REQUIRED_ANNOTATIONS] T : CharSequence>(): R|Foo<T>| {
public? open [RAW_FIR] class Foo<[RAW_FIR] T : CharSequence> : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=Foo] constructor<[RAW_FIR] T : CharSequence>(): R|Foo<T>| {
LAZY_super<R|kotlin/Any|>
}
@@ -201,8 +201,8 @@ FILE: lambdaAsSAMInterface.kt
BODY_RESOLVE:
FILE: lambdaAsSAMInterface.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class Arg : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Arg] constructor(): R|foo/Arg| {
public? final? [RAW_FIR] class Arg : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=Arg] constructor(): R|foo/Arg| {
LAZY_super<R|kotlin/Any|>
}
@@ -85,8 +85,8 @@ FILE: superTypes.kt
SUPER_TYPES:
FILE: superTypes.kt
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|>
}
@@ -115,20 +115,20 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=C] constructor(): R|C| {
public? open [RAW_FIR] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [RAW_FIR] [ContainingClassKey=C] constructor(): R|C| {
LAZY_super<A>
}
@@ -142,14 +142,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -169,14 +169,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -196,14 +196,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -223,14 +223,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -250,14 +250,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -277,14 +277,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -304,14 +304,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -331,14 +331,14 @@ FILE: superTypesLoop.kt
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| {
public? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B>
}
}
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| {
public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C>
}
@@ -1,3 +1,4 @@
RAW_FIR:
FILE: typeParameterBounds.kt
public? final? [RAW_FIR] fun resolveMe([RAW_FIR] foo: Foo): R|kotlin/Unit| { LAZY_BLOCK }
@@ -46,7 +47,7 @@ FILE: typeParameterBounds.kt
TYPES:
FILE: typeParameterBounds.kt
public? final? [TYPES] fun resolveMe([TYPES] foo: R|Foo|): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -55,7 +56,7 @@ FILE: typeParameterBounds.kt
STATUS:
FILE: typeParameterBounds.kt
public final [STATUS] fun resolveMe([STATUS] foo: R|Foo|): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -64,7 +65,7 @@ FILE: typeParameterBounds.kt
ARGUMENTS_OF_ANNOTATIONS:
FILE: typeParameterBounds.kt
public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe([ARGUMENTS_OF_ANNOTATIONS] foo: R|Foo|): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -75,7 +76,7 @@ FILE: typeParameterBounds.kt
public final [CONTRACTS] fun resolveMe([CONTRACTS] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#()
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -86,7 +87,7 @@ FILE: typeParameterBounds.kt
public final [IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe([IMPLICIT_TYPES_BODY_RESOLVE] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#()
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -97,7 +98,7 @@ FILE: typeParameterBounds.kt
public final [ANNOTATIONS_ARGUMENTS_MAPPING] fun resolveMe([ANNOTATIONS_ARGUMENTS_MAPPING] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#()
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -108,7 +109,7 @@ FILE: typeParameterBounds.kt
public final [EXPECT_ACTUAL_MATCHING] fun resolveMe([EXPECT_ACTUAL_MATCHING] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#()
}
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface Foo : R|kotlin/Any| {
public? final? [RAW_FIR] interface Foo : R|kotlin/Any| {
}
public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
}
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
// ISSUE: KT-55286
annotation class Deprecated<T>
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.symbols.impl
import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
@@ -67,10 +66,17 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
get() = callableId.callableName
fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? {
if (!canBeDeprecated()) return null
lazyResolveToPhase(FirResolvePhase.STATUS)
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion)
}
/**
* Checks if symbol can be deprecated by syntax
* @return `true` if symbol might have some deprecation status, or `false` if it's definitely not deprecated
*/
internal open fun canBeDeprecated(): Boolean = true
private fun ensureType(typeRef: FirTypeRef?) {
when (typeRef) {
null, is FirResolvedTypeRef -> {}
@@ -26,7 +26,8 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
val name get() = classId.shortClassName
fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? {
fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? {
if (annotations.isEmpty()) return null
lazyResolveToPhase(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS)
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion)
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.symbols.impl
import org.jetbrains.kotlin.fir.FirLabel
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.toResolvedConstructorSymbol
@@ -41,7 +42,12 @@ sealed class FirFunctionSymbol<D : FirFunction>(
open class FirNamedFunctionSymbol(
callableId: CallableId,
) : FirFunctionSymbol<FirSimpleFunction>(callableId)
) : FirFunctionSymbol<FirSimpleFunction>(callableId) {
override fun canBeDeprecated(): Boolean {
if (isLocal || callableId.className == null) return annotations.isNotEmpty()
return true
}
}
interface FirIntersectionCallableSymbol {
val intersections: Collection<FirCallableSymbol<*>>
@@ -75,6 +81,10 @@ class FirConstructorSymbol(
val delegatedConstructorCallIsSuper: Boolean
get() = fir.delegatedConstructor?.isSuper ?: false
override fun canBeDeprecated(): Boolean {
return annotations.isNotEmpty()
}
}
/**
@@ -99,12 +109,20 @@ sealed class FirFunctionWithoutNameSymbol<F : FirFunction>(
class FirAnonymousFunctionSymbol : FirFunctionWithoutNameSymbol<FirAnonymousFunction>(Name.identifier("anonymous")) {
val label: FirLabel? get() = fir.label
override fun canBeDeprecated(): Boolean {
return annotations.isNotEmpty()
}
}
class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol<FirPropertyAccessor>(Name.identifier("accessor")) {
val isGetter: Boolean get() = fir.isGetter
val isSetter: Boolean get() = fir.isSetter
val propertySymbol get() = fir.propertySymbol
override fun canBeDeprecated(): Boolean {
return propertySymbol.canBeDeprecated()
}
}
class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol<FirErrorFunction>(Name.identifier("error"))
@@ -61,6 +61,15 @@ open class FirPropertySymbol(
val isVar: Boolean
get() = fir.isVar
override fun canBeDeprecated(): Boolean {
if (isLocal || callableId.className == null) {
return annotations.isNotEmpty()
|| getterSymbol?.annotations?.isNotEmpty() == true
|| setterSymbol?.annotations?.isNotEmpty() == true
}
return true
}
}
class FirIntersectionOverridePropertySymbol(
@@ -116,6 +125,9 @@ class FirValueParameterSymbol(name: Name) : FirVariableSymbol<FirValueParameter>
val containingFunctionSymbol: FirFunctionSymbol<*>
get() = fir.containingFunctionSymbol
override fun canBeDeprecated(): Boolean {
return false
}
}
class FirErrorPropertySymbol(
-1
View File
@@ -1,5 +1,4 @@
// FIR_IDENTICAL
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
// WITH_STDLIB
annotation class AllOpen
@@ -1,4 +1,3 @@
//FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.CompanionWithFoo
@CompanionWithFoo
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.NestedClassAndMaterializeMember
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
// DUMP_IR
package bar
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.CoreSerializer
import org.jetbrains.kotlin.fir.plugin.MySerializable
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo
import org.jetbrains.kotlin.fir.plugin.DummyFunction
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.CompanionWithFoo
@CompanionWithFoo
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.NestedClassAndMaterializeMember
@NestedClassAndMaterializeMember
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package bar
import foo.AllOpenGenerated
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo
import org.jetbrains.kotlin.fir.plugin.DummyFunction
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.AllOpen
@AllOpen
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.AllPublic
import org.jetbrains.kotlin.fir.plugin.Visibility
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo
import org.jetbrains.kotlin.fir.plugin.MyInterfaceSupertype
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo
import org.jetbrains.kotlin.fir.plugin.SupertypeWithTypeArgument
-1
View File
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
annotation class NoArg
class Outer {
-1
View File
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
annotation class NoArg
class Outer {
@@ -1,5 +1,4 @@
// FIR_IDENTICAL
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
annotation class NoArg
open class Base(val s: String)