[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 [RAW_FIR] get(): R|kotlin/enums/EnumEntries<X>|
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] 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? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args| public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
} }
public? final? [SUPER_TYPES] class B : R|kotlin/Any| { 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 [RAW_FIR] get(): R|kotlin/enums/EnumEntries<X>|
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] 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? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args| public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
} }
public final [SUPER_TYPES] class B : R|kotlin/Any| { 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 [STATUS] get(): R|kotlin/enums/EnumEntries<X>|
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] 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? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args| public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
} }
public final [STATUS] class B : R|kotlin/Any| { public final [STATUS] class B : R|kotlin/Any| {
@@ -321,13 +321,13 @@ FILE: annotationParameters.kt
public [STATUS] get(): R|kotlin/enums/EnumEntries<X>| public [STATUS] get(): R|kotlin/enums/EnumEntries<X>|
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] 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? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args| public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
} }
public final [STATUS] class B : R|kotlin/Any| { public final [STATUS] class B : R|kotlin/Any| {
@@ -360,13 +360,13 @@ FILE: annotationParameters.kt
public [STATUS] get(): R|kotlin/enums/EnumEntries<X>| public [STATUS] get(): R|kotlin/enums/EnumEntries<X>|
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] 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? [RAW_FIR] [ContainingClassKey=Anno] constructor([RAW_FIR] [CorrespondingProperty=/Anno.args] args: A.X): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args| public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val args: A.X = R|<local>/args|
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] get(): A.X public? [RAW_FIR] [ContainingClassKey=Anno] get(): A.X
} }
public final [STATUS] class B : R|kotlin/Any| { public final [STATUS] class B : R|kotlin/Any| {
@@ -97,9 +97,9 @@ FILE: nestedClassWithPropertiesOverrides.kt
SUPER_TYPES: SUPER_TYPES:
FILE: nestedClassWithPropertiesOverrides.kt FILE: nestedClassWithPropertiesOverrides.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] interface OV : R|kotlin/Any| { public? final? [RAW_FIR] interface OV : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] val originalExpressions: A public? final? [RAW_FIR] val originalExpressions: A
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=OV] get(): A public? [RAW_FIR] [ContainingClassKey=OV] get(): A
public? final? [SUPER_TYPES] class ResolveMe : R|OV| { public? final? [SUPER_TYPES] class ResolveMe : R|OV| {
public? [SUPER_TYPES] [ContainingClassKey=ResolveMe] constructor(): R|OV.ResolveMe| { 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? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -160,8 +160,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -184,8 +184,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -208,8 +208,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -232,8 +232,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -256,8 +256,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -280,8 +280,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -304,8 +304,8 @@ FILE: nestedClassWithPropertiesOverrides.kt
} }
} }
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
+10 -10
View File
@@ -126,8 +126,8 @@ FILE: enumEntry.kt
TYPES: TYPES:
FILE: enumEntry.kt FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| { public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -151,8 +151,8 @@ FILE: enumEntry.kt
STATUS: STATUS:
FILE: enumEntry.kt FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| { public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -176,8 +176,8 @@ FILE: enumEntry.kt
ARGUMENTS_OF_ANNOTATIONS: ARGUMENTS_OF_ANNOTATIONS:
FILE: enumEntry.kt FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| { public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -201,8 +201,8 @@ FILE: enumEntry.kt
CONTRACTS: CONTRACTS:
FILE: enumEntry.kt FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| { public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -232,8 +232,8 @@ FILE: enumEntry.kt
IMPLICIT_TYPES_BODY_RESOLVE: IMPLICIT_TYPES_BODY_RESOLVE:
FILE: enumEntry.kt FILE: enumEntry.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] annotation class Anno : R|kotlin/Annotation| { public? final? [RAW_FIR] annotation class Anno : R|kotlin/Annotation| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Anno] constructor(): R|Anno| { public? [RAW_FIR] [ContainingClassKey=Anno] constructor(): R|Anno| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -48,8 +48,8 @@ TYPES:
FILE: anonymousObjectInInvalidPosition.kt FILE: anonymousObjectInInvalidPosition.kt
private final? [TYPES] val resolveMe: <ERROR TYPE REF: Wrong number of type arguments> = LAZY_EXPRESSION 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
} }
@@ -57,8 +57,8 @@ STATUS:
FILE: anonymousObjectInInvalidPosition.kt FILE: anonymousObjectInInvalidPosition.kt
private final [STATUS] val resolveMe: <ERROR TYPE REF: Wrong number of type arguments> = LAZY_EXPRESSION 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
} }
@@ -66,8 +66,8 @@ ARGUMENTS_OF_ANNOTATIONS:
FILE: anonymousObjectInInvalidPosition.kt FILE: anonymousObjectInInvalidPosition.kt
private final [ARGUMENTS_OF_ANNOTATIONS] val resolveMe: <ERROR TYPE REF: Wrong number of type arguments> = LAZY_EXPRESSION 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| 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> 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? [RAW_FIR] interface A<[RAW_FIR] T> : R|kotlin/Any| {
public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun x(): R|kotlin/Unit| public? final? [RAW_FIR] fun x(): R|kotlin/Unit|
} }
@@ -31,25 +31,25 @@ FILE: functionWithParameter.kt
TYPES: TYPES:
FILE: functionWithParameter.kt 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 } public? final? [TYPES] fun resolveMe([TYPES] param: R|I|): <implicit> { LAZY_BLOCK }
STATUS: STATUS:
FILE: functionWithParameter.kt 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 } public final [STATUS] fun resolveMe([STATUS] param: R|I|): <implicit> { LAZY_BLOCK }
ARGUMENTS_OF_ANNOTATIONS: ARGUMENTS_OF_ANNOTATIONS:
FILE: functionWithParameter.kt 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 } public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe([ARGUMENTS_OF_ANNOTATIONS] param: R|I|): <implicit> { LAZY_BLOCK }
CONTRACTS: CONTRACTS:
FILE: functionWithParameter.kt 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> { public final [CONTRACTS] fun resolveMe([CONTRACTS] param: R|I|): <implicit> {
^resolveMe Unit# ^resolveMe Unit#
@@ -57,7 +57,7 @@ FILE: functionWithParameter.kt
IMPLICIT_TYPES_BODY_RESOLVE: IMPLICIT_TYPES_BODY_RESOLVE:
FILE: functionWithParameter.kt 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| { public final [IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe([IMPLICIT_TYPES_BODY_RESOLVE] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit| ^resolveMe Q|kotlin/Unit|
@@ -65,7 +65,7 @@ FILE: functionWithParameter.kt
ANNOTATIONS_ARGUMENTS_MAPPING: ANNOTATIONS_ARGUMENTS_MAPPING:
FILE: functionWithParameter.kt 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| { public final [ANNOTATIONS_ARGUMENTS_MAPPING] fun resolveMe([ANNOTATIONS_ARGUMENTS_MAPPING] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit| ^resolveMe Q|kotlin/Unit|
@@ -73,7 +73,7 @@ FILE: functionWithParameter.kt
EXPECT_ACTUAL_MATCHING: EXPECT_ACTUAL_MATCHING:
FILE: functionWithParameter.kt 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| { public final [EXPECT_ACTUAL_MATCHING] fun resolveMe([EXPECT_ACTUAL_MATCHING] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit| ^resolveMe Q|kotlin/Unit|
@@ -81,7 +81,7 @@ FILE: functionWithParameter.kt
BODY_RESOLVE: BODY_RESOLVE:
FILE: functionWithParameter.kt 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| { public final [BODY_RESOLVE] fun resolveMe([BODY_RESOLVE] param: R|I|): R|kotlin/Unit| {
^resolveMe Q|kotlin/Unit| ^resolveMe Q|kotlin/Unit|
@@ -141,8 +141,8 @@ FILE: functionCallWithGenericResult.kt
BODY_RESOLVE: BODY_RESOLVE:
FILE: functionCallWithGenericResult.kt FILE: functionCallWithGenericResult.kt
public? open [COMPILER_REQUIRED_ANNOTATIONS] class Foo<[COMPILER_REQUIRED_ANNOTATIONS] T : CharSequence> : R|kotlin/Any| { public? open [RAW_FIR] class Foo<[RAW_FIR] T : CharSequence> : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Foo] constructor<[COMPILER_REQUIRED_ANNOTATIONS] T : CharSequence>(): R|Foo<T>| { public? [RAW_FIR] [ContainingClassKey=Foo] constructor<[RAW_FIR] T : CharSequence>(): R|Foo<T>| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -201,8 +201,8 @@ FILE: lambdaAsSAMInterface.kt
BODY_RESOLVE: BODY_RESOLVE:
FILE: lambdaAsSAMInterface.kt FILE: lambdaAsSAMInterface.kt
public? final? [COMPILER_REQUIRED_ANNOTATIONS] class Arg : R|kotlin/Any| { public? final? [RAW_FIR] class Arg : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=Arg] constructor(): R|foo/Arg| { public? [RAW_FIR] [ContainingClassKey=Arg] constructor(): R|foo/Arg| {
LAZY_super<R|kotlin/Any|> LAZY_super<R|kotlin/Any|>
} }
@@ -85,8 +85,8 @@ FILE: superTypes.kt
SUPER_TYPES: SUPER_TYPES:
FILE: superTypes.kt FILE: superTypes.kt
public? open [COMPILER_REQUIRED_ANNOTATIONS] class A : R|kotlin/Any| { public? open [RAW_FIR] class A : R|kotlin/Any| {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<R|kotlin/Any|> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> LAZY_super<C>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> { public? open [RAW_FIR] class C : <ERROR TYPE REF: Loop in supertype: /C -> /A> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=C] constructor(): R|C| { public? [RAW_FIR] [ContainingClassKey=C] constructor(): R|C| {
LAZY_super<A> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> 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? open [RAW_FIR] class A : <ERROR TYPE REF: Loop in supertype: /A -> /B> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=A] constructor(): R|A| { public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
LAZY_super<B> LAZY_super<B>
} }
} }
public? open [COMPILER_REQUIRED_ANNOTATIONS] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> { public? open [RAW_FIR] class B : <ERROR TYPE REF: Loop in supertype: /B -> /C> {
public? [COMPILER_REQUIRED_ANNOTATIONS] [ContainingClassKey=B] constructor(): R|B| { public? [RAW_FIR] [ContainingClassKey=B] constructor(): R|B| {
LAZY_super<C> LAZY_super<C>
} }
@@ -1,3 +1,4 @@
RAW_FIR: RAW_FIR:
FILE: typeParameterBounds.kt FILE: typeParameterBounds.kt
public? final? [RAW_FIR] fun resolveMe([RAW_FIR] foo: Foo): R|kotlin/Unit| { LAZY_BLOCK } public? final? [RAW_FIR] fun resolveMe([RAW_FIR] foo: Foo): R|kotlin/Unit| { LAZY_BLOCK }
@@ -46,7 +47,7 @@ FILE: typeParameterBounds.kt
TYPES: TYPES:
FILE: typeParameterBounds.kt FILE: typeParameterBounds.kt
public? final? [TYPES] fun resolveMe([TYPES] foo: R|Foo|): R|kotlin/Unit| { LAZY_BLOCK } 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| { public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
} }
@@ -55,7 +56,7 @@ FILE: typeParameterBounds.kt
STATUS: STATUS:
FILE: typeParameterBounds.kt FILE: typeParameterBounds.kt
public final [STATUS] fun resolveMe([STATUS] foo: R|Foo|): R|kotlin/Unit| { LAZY_BLOCK } 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| { public? final? [RAW_FIR] interface Bar<[RAW_FIR] T : Foo> : R|kotlin/Any| {
} }
@@ -64,7 +65,7 @@ FILE: typeParameterBounds.kt
ARGUMENTS_OF_ANNOTATIONS: ARGUMENTS_OF_ANNOTATIONS:
FILE: typeParameterBounds.kt FILE: typeParameterBounds.kt
public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe([ARGUMENTS_OF_ANNOTATIONS] foo: R|Foo|): R|kotlin/Unit| { LAZY_BLOCK } 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| { 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| { public final [CONTRACTS] fun resolveMe([CONTRACTS] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#() 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| { 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| { public final [IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe([IMPLICIT_TYPES_BODY_RESOLVE] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#() 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| { 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| { public final [ANNOTATIONS_ARGUMENTS_MAPPING] fun resolveMe([ANNOTATIONS_ARGUMENTS_MAPPING] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#() 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| { 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| { public final [EXPECT_ACTUAL_MATCHING] fun resolveMe([EXPECT_ACTUAL_MATCHING] foo: R|Foo|): R|kotlin/Unit| {
foo#.util#() 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| { 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 // ISSUE: KT-55286
annotation class Deprecated<T> annotation class Deprecated<T>
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.symbols.impl package org.jetbrains.kotlin.fir.symbols.impl
import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
@@ -67,10 +66,17 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
get() = callableId.callableName get() = callableId.callableName
fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? { fun getDeprecation(apiVersion: ApiVersion): DeprecationsPerUseSite? {
if (!canBeDeprecated()) return null
lazyResolveToPhase(FirResolvePhase.STATUS) lazyResolveToPhase(FirResolvePhase.STATUS)
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion) 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?) { private fun ensureType(typeRef: FirTypeRef?) {
when (typeRef) { when (typeRef) {
null, is FirResolvedTypeRef -> {} null, is FirResolvedTypeRef -> {}
@@ -26,7 +26,8 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
val name get() = classId.shortClassName 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) lazyResolveToPhase(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS)
return fir.deprecationsProvider.getDeprecationsInfo(apiVersion) 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.FirLabel
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
import org.jetbrains.kotlin.fir.declarations.* 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.expressions.FirDelegatedConstructorCall
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
import org.jetbrains.kotlin.fir.references.toResolvedConstructorSymbol import org.jetbrains.kotlin.fir.references.toResolvedConstructorSymbol
@@ -41,7 +42,12 @@ sealed class FirFunctionSymbol<D : FirFunction>(
open class FirNamedFunctionSymbol( open class FirNamedFunctionSymbol(
callableId: CallableId, callableId: CallableId,
) : FirFunctionSymbol<FirSimpleFunction>(callableId) ) : FirFunctionSymbol<FirSimpleFunction>(callableId) {
override fun canBeDeprecated(): Boolean {
if (isLocal || callableId.className == null) return annotations.isNotEmpty()
return true
}
}
interface FirIntersectionCallableSymbol { interface FirIntersectionCallableSymbol {
val intersections: Collection<FirCallableSymbol<*>> val intersections: Collection<FirCallableSymbol<*>>
@@ -75,6 +81,10 @@ class FirConstructorSymbol(
val delegatedConstructorCallIsSuper: Boolean val delegatedConstructorCallIsSuper: Boolean
get() = fir.delegatedConstructor?.isSuper ?: false 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")) { class FirAnonymousFunctionSymbol : FirFunctionWithoutNameSymbol<FirAnonymousFunction>(Name.identifier("anonymous")) {
val label: FirLabel? get() = fir.label val label: FirLabel? get() = fir.label
override fun canBeDeprecated(): Boolean {
return annotations.isNotEmpty()
}
} }
class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol<FirPropertyAccessor>(Name.identifier("accessor")) { class FirPropertyAccessorSymbol : FirFunctionWithoutNameSymbol<FirPropertyAccessor>(Name.identifier("accessor")) {
val isGetter: Boolean get() = fir.isGetter val isGetter: Boolean get() = fir.isGetter
val isSetter: Boolean get() = fir.isSetter val isSetter: Boolean get() = fir.isSetter
val propertySymbol get() = fir.propertySymbol val propertySymbol get() = fir.propertySymbol
override fun canBeDeprecated(): Boolean {
return propertySymbol.canBeDeprecated()
}
} }
class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol<FirErrorFunction>(Name.identifier("error")) class FirErrorFunctionSymbol : FirFunctionWithoutNameSymbol<FirErrorFunction>(Name.identifier("error"))
@@ -61,6 +61,15 @@ open class FirPropertySymbol(
val isVar: Boolean val isVar: Boolean
get() = fir.isVar 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( class FirIntersectionOverridePropertySymbol(
@@ -116,6 +125,9 @@ class FirValueParameterSymbol(name: Name) : FirVariableSymbol<FirValueParameter>
val containingFunctionSymbol: FirFunctionSymbol<*> val containingFunctionSymbol: FirFunctionSymbol<*>
get() = fir.containingFunctionSymbol get() = fir.containingFunctionSymbol
override fun canBeDeprecated(): Boolean {
return false
}
} }
class FirErrorPropertySymbol( class FirErrorPropertySymbol(
-1
View File
@@ -1,5 +1,4 @@
// FIR_IDENTICAL // FIR_IDENTICAL
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
// WITH_STDLIB // WITH_STDLIB
annotation class AllOpen annotation class AllOpen
@@ -1,4 +1,3 @@
//FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.CompanionWithFoo import org.jetbrains.kotlin.fir.plugin.CompanionWithFoo
@CompanionWithFoo @CompanionWithFoo
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.NestedClassAndMaterializeMember import org.jetbrains.kotlin.fir.plugin.NestedClassAndMaterializeMember
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
// DUMP_IR // DUMP_IR
package bar package bar
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo package foo
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.CoreSerializer import org.jetbrains.kotlin.fir.plugin.CoreSerializer
import org.jetbrains.kotlin.fir.plugin.MySerializable import org.jetbrains.kotlin.fir.plugin.MySerializable
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo package foo
import org.jetbrains.kotlin.fir.plugin.DummyFunction import org.jetbrains.kotlin.fir.plugin.DummyFunction
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.CompanionWithFoo import org.jetbrains.kotlin.fir.plugin.CompanionWithFoo
@CompanionWithFoo @CompanionWithFoo
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.NestedClassAndMaterializeMember import org.jetbrains.kotlin.fir.plugin.NestedClassAndMaterializeMember
@NestedClassAndMaterializeMember @NestedClassAndMaterializeMember
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package bar package bar
import foo.AllOpenGenerated import foo.AllOpenGenerated
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo package foo
import org.jetbrains.kotlin.fir.plugin.DummyFunction import org.jetbrains.kotlin.fir.plugin.DummyFunction
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.AllOpen import org.jetbrains.kotlin.fir.plugin.AllOpen
@AllOpen @AllOpen
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
import org.jetbrains.kotlin.fir.plugin.AllPublic import org.jetbrains.kotlin.fir.plugin.AllPublic
import org.jetbrains.kotlin.fir.plugin.Visibility import org.jetbrains.kotlin.fir.plugin.Visibility
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo package foo
import org.jetbrains.kotlin.fir.plugin.MyInterfaceSupertype import org.jetbrains.kotlin.fir.plugin.MyInterfaceSupertype
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
package foo package foo
import org.jetbrains.kotlin.fir.plugin.SupertypeWithTypeArgument import org.jetbrains.kotlin.fir.plugin.SupertypeWithTypeArgument
-1
View File
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
annotation class NoArg annotation class NoArg
class Outer { class Outer {
-1
View File
@@ -1,4 +1,3 @@
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
annotation class NoArg annotation class NoArg
class Outer { class Outer {
@@ -1,5 +1,4 @@
// FIR_IDENTICAL // FIR_IDENTICAL
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
annotation class NoArg annotation class NoArg
open class Base(val s: String) open class Base(val s: String)