From 06aad65ed3c0ffe9f8942922d08abe543d58adb6 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 27 Nov 2023 19:11:32 +0100 Subject: [PATCH] [FIR] pass correct scope during annotation resolve for local declarations We should pass container for correct logic around CLASS_HEADER_ANNOTATIONS. Also, such correct containers will be used in the context of KT-63042 to correctly detect an annotation ownership ^KT-63042 ^KT-63842 Fixed --- .../classAnnotationsInLocalClass.after.txt | 22 ++++---- .../classAnnotationsInLocalClass.before.txt | 22 ++++---- ...assAnnotationsInLocalClass.lazyResolve.txt | 12 ++--- ...assAnnotationsInLocalClassScript.after.txt | 22 ++++---- ...ssAnnotationsInLocalClassScript.before.txt | 22 ++++---- ...otationsInLocalClassScript.lazyResolve.txt | 12 ++--- ...ParameterAnnotationsInLocalClass.after.txt | 6 +-- ...arameterAnnotationsInLocalClass.before.txt | 6 +-- ...terAnnotationsInLocalClass.lazyResolve.txt | 4 +- ...terAnnotationsInLocalClassScript.after.txt | 6 +-- ...erAnnotationsInLocalClassScript.before.txt | 6 +-- ...otationsInLocalClassScript.lazyResolve.txt | 4 +- ...WithNestedAnnotationInLocalClass.after.txt | 6 +-- ...ithNestedAnnotationInLocalClass.before.txt | 6 +-- ...stedAnnotationInLocalClass.lazyResolve.txt | 4 +- ...stedAnnotationInLocalClassScript.after.txt | 6 +-- ...tedAnnotationInLocalClassScript.before.txt | 6 +-- ...notationInLocalClassScript.lazyResolve.txt | 4 +- .../FirDeclarationsResolveTransformer.kt | 50 +++++++++++++------ .../body/resolve/FirImplicitBodyResolve.kt | 11 ---- .../FirAnnotationArgumentsTransformer.kt | 24 --------- .../classAnnotationsInLocalClass.fir.kt | 4 +- ...erParameterPropertyInsideLocalClass.fir.kt | 2 +- ...OnTypeParameterPropertyInsideLocalClass.kt | 2 +- .../danglingAnnotationInLocalClass.fir.kt | 2 +- ...iasWithNestedAnnotationInLocalClass.fir.kt | 4 +- ...ypeParameterAnnotationsInLocalClass.fir.kt | 2 +- 27 files changed, 131 insertions(+), 146 deletions(-) diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.after.txt index 344c9741c0d..0e82bd320c6 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.after.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.after.txt @@ -18,35 +18,35 @@ context -> FirConstructorSymbol /OriginalClass.OriginalClass anchor -> [FirRegularClassSymbol /OriginalClass] -@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested bound ), #)) kotlin/Int +@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] @@ -88,9 +88,9 @@ FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.before.txt index 344c9741c0d..0e82bd320c6 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.before.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.before.txt @@ -18,35 +18,35 @@ context -> FirConstructorSymbol /OriginalClass.OriginalClass anchor -> [FirRegularClassSymbol /OriginalClass] -@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested bound ), #)) kotlin/Int +@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] @@ -88,9 +88,9 @@ FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.lazyResolve.txt index 6cf872175e9..371fdd7ea39 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.lazyResolve.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.lazyResolve.txt @@ -291,9 +291,9 @@ FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } @@ -329,9 +329,9 @@ FILE: [ResolvedTo(BODY_RESOLVE)] classAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.after.txt index 29821ade8f8..b0f6d50dbf3 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.after.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.after.txt @@ -18,35 +18,35 @@ context -> FirConstructorSymbol /OriginalClass.OriginalClass anchor -> [FirRegularClassSymbol /OriginalClass] -@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested bound ), #)) kotlin/Int +@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] @@ -94,9 +94,9 @@ FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.before.txt index 29821ade8f8..b0f6d50dbf3 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.before.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.before.txt @@ -18,35 +18,35 @@ context -> FirConstructorSymbol /OriginalClass.OriginalClass anchor -> [FirRegularClassSymbol /OriginalClass] -@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested bound ), #)) kotlin/Int +@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>> +@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int> +@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int> context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] -@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int +@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int context -> FirRegularClassSymbol /OriginalClass.InnerClass anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] @@ -94,9 +94,9 @@ FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.lazyResolve.txt index 543e0df5c57..5ca4096c60d 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.lazyResolve.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.lazyResolve.txt @@ -374,9 +374,9 @@ FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } @@ -419,9 +419,9 @@ FILE: [ResolvedTo(BODY_RESOLVE)] classAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(class ), #)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>| { - public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { - super(String(super type ), #)) A<@R|Anno|(position = (String(nested super type ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int>>|>() + @R|Anno|[Types](position = (String(class ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] class InnerClass<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|, @R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] Outer(T) : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|> : R|@R|Anno|(position = (String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=InnerClass] constructor<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>|>(): R|/OriginalClass.InnerClass| { + super(String(super type ), this@R|/OriginalClass|.R|/prop|)) A<@R|Anno|(position = (String(nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int>>|>() } } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.after.txt index 1aa9a7e5b34..44ecfc8afe7 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.after.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.after.txt @@ -2,7 +2,7 @@ context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(receiver type ), #)) F +@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -14,7 +14,7 @@ context -> FirBackingFieldSymbol /field from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol F from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -37,7 +37,7 @@ FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.before.txt index 1aa9a7e5b34..44ecfc8afe7 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.before.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.before.txt @@ -2,7 +2,7 @@ context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(receiver type ), #)) F +@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -14,7 +14,7 @@ context -> FirBackingFieldSymbol /field from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol F from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -37,7 +37,7 @@ FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.lazyResolve.txt index 09cf68dd0b9..93592f231e2 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.lazyResolve.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.lazyResolve.txt @@ -209,7 +209,7 @@ FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } @@ -238,7 +238,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] typeParameterAnnotationsInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.after.txt index dda55c90c4a..b5444e1fda0 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.after.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.after.txt @@ -2,7 +2,7 @@ context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(receiver type ), #)) F +@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -14,7 +14,7 @@ context -> FirBackingFieldSymbol /field from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol F from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -42,7 +42,7 @@ FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.before.txt index dda55c90c4a..b5444e1fda0 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.before.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.before.txt @@ -2,7 +2,7 @@ context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(receiver type ), #)) F +@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F context -> FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -14,7 +14,7 @@ context -> FirBackingFieldSymbol /field from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol F from FirPropertySymbol /explicitType anchor -> [FirPropertySymbol /explicitType] @@ -42,7 +42,7 @@ FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.lazyResolve.txt index b132de0196c..8923303f436 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.lazyResolve.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.lazyResolve.txt @@ -280,7 +280,7 @@ FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } @@ -315,7 +315,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] typeParameterAnnotationsInLocalClassScript.kts public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), #)) R|@R|Anno|(position = (String(receiver type ), #)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| + @R|Anno|[Types](position = (String(property ), this@R|/OriginalClass|.R|/prop|)) public final [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalClass|.R|/prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalClass|.R|/prop|)) F|.explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Int| { ^ Int(1) } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.after.txt index 10357507b57..ef0f258c024 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.after.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.after.txt @@ -1,8 +1,8 @@ -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol A from FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [] -@R|Anno|(position = (String(type ), #)) /OriginalClass +@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass context -> FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [FirTypeAliasSymbol /OriginalClass.NestedTypeAlias] @@ -25,7 +25,7 @@ FILE: [ResolvedTo(IMPORTS)] nestedAliasWithNestedAnnotationInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.before.txt index 10357507b57..ef0f258c024 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.before.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.before.txt @@ -1,8 +1,8 @@ -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol A from FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [] -@R|Anno|(position = (String(type ), #)) /OriginalClass +@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass context -> FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [FirTypeAliasSymbol /OriginalClass.NestedTypeAlias] @@ -25,7 +25,7 @@ FILE: [ResolvedTo(IMPORTS)] nestedAliasWithNestedAnnotationInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.lazyResolve.txt index dfe888f7b38..ba620fb935b 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.lazyResolve.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.lazyResolve.txt @@ -200,7 +200,7 @@ FILE: [ResolvedTo(IMPORTS)] nestedAliasWithNestedAnnotationInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } @@ -226,7 +226,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] nestedAliasWithNestedAnnotationInLocalClass.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.after.txt index c6977e4ab6d..03e776bff73 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.after.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.after.txt @@ -1,8 +1,8 @@ -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol A from FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [] -@R|Anno|(position = (String(type ), #)) /OriginalClass +@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass context -> FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [FirTypeAliasSymbol /OriginalClass.NestedTypeAlias] @@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] nestedAliasWithNestedAnnotationInLocalClassScript.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.before.txt index c6977e4ab6d..03e776bff73 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.before.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.before.txt @@ -1,8 +1,8 @@ -@R|Anno|(position = (String(bound ), #)) kotlin/Number +@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number context -> FirTypeParameterSymbol A from FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [] -@R|Anno|(position = (String(type ), #)) /OriginalClass +@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass context -> FirTypeAliasSymbol /OriginalClass.NestedTypeAlias anchor -> [FirTypeAliasSymbol /OriginalClass.NestedTypeAlias] @@ -30,7 +30,7 @@ FILE: [ResolvedTo(IMPORTS)] nestedAliasWithNestedAnnotationInLocalClassScript.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.lazyResolve.txt index 3e5c360919c..b99a77bdc75 100644 --- a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.lazyResolve.txt +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.lazyResolve.txt @@ -271,7 +271,7 @@ FILE: [ResolvedTo(IMPORTS)] nestedAliasWithNestedAnnotationInLocalClassScript.kt public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } @@ -303,7 +303,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] nestedAliasWithNestedAnnotationInLocalClassScri public final [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] get(): R|kotlin/Int| - @R|Anno|[Types](position = (String(alias ), #)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), #)) /OriginalClass| + @R|Anno|[Types](position = (String(alias ), this@R|/OriginalClass|.R|/prop|)) local final [ResolvedTo(BODY_RESOLVE)] typealias NestedTypeAlias<@R|Anno|[Types](position = (String(type param ), this@R|/OriginalClass|.R|/prop|)) [ResolvedTo(BODY_RESOLVE)] A : R|@R|Anno|(position = (String(bound ), this@R|/OriginalClass|.R|/prop|)) kotlin/Number|> = R|@R|Anno|(position = (String(type ), this@R|/OriginalClass|.R|/prop|)) /OriginalClass| } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 2a60ff1d5a3..6aa90c4634d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -54,6 +54,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.buildCurrentSubstitutor import org.jetbrains.kotlin.resolve.calls.inference.components.TypeVariableDirectionCalculator import org.jetbrains.kotlin.resolve.calls.inference.model.ProvideDelegateFixationPosition import org.jetbrains.kotlin.types.model.TypeConstructorMarker +import org.jetbrains.kotlin.util.PrivateForInline import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment open class FirDeclarationsResolveTransformer( @@ -114,7 +115,16 @@ open class FirDeclarationsResolveTransformer( override fun transformDanglingModifierList( danglingModifierList: FirDanglingModifierList, data: ResolutionMode - ): FirDanglingModifierList = danglingModifierList + ): FirDanglingModifierList { + if (implicitTypeOnly) return danglingModifierList + + @OptIn(PrivateForInline::class) + context.withContainer(danglingModifierList) { + danglingModifierList.transformAnnotations(transformer, data) + } + + return danglingModifierList + } override fun transformProperty(property: FirProperty, data: ResolutionMode): FirProperty = whileAnalysing(session, property) { require(property !is FirSyntheticProperty) { "Synthetic properties should not be processed by body transformers" } @@ -138,12 +148,6 @@ open class FirDeclarationsResolveTransformer( } val shouldResolveEverything = !implicitTypeOnly - // this is required to resolve annotations on properties of local classes - if (shouldResolveEverything) { - property.transformReceiverParameter(transformer, ResolutionMode.ContextIndependent) - doTransformTypeParameters(property) - } - val bodyResolveState = property.bodyResolveState return withFullBodyResolve { val initializerIsAlreadyResolved = bodyResolveState >= FirPropertyBodyResolveState.INITIALIZER_RESOLVED @@ -153,6 +157,12 @@ open class FirDeclarationsResolveTransformer( var backingFieldIsAlreadyResolved = false context.withProperty(property) { + // this is required to resolve annotations on properties of local classes + if (shouldResolveEverything) { + property.transformReceiverParameter(transformer, ResolutionMode.ContextIndependent) + doTransformTypeParameters(property) + } + context.forPropertyInitializer { if (!initializerIsAlreadyResolved) { val resolutionMode = withExpectedType(returnTypeRefBeforeResolve) @@ -224,19 +234,20 @@ open class FirDeclarationsResolveTransformer( property.setter?.transformReturnTypeRef(transformer, withExpectedType(session.builtinTypes.unitType.type)) } } - } - if (!initializerIsAlreadyResolved) { - if (!backingFieldIsAlreadyResolved) { + if (!initializerIsAlreadyResolved && !backingFieldIsAlreadyResolved) { property.backingField?.let { transformBackingField(it, withExpectedType(property.returnTypeRef), shouldResolveEverything) } } + } + if (!initializerIsAlreadyResolved) { dataFlowAnalyzer.exitProperty(property)?.let { property.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(it)) } } + property } } @@ -657,7 +668,11 @@ open class FirDeclarationsResolveTransformer( } if (isLocal || !implicitTypeOnly) { - doTransformTypeParameters(regularClass) + context.insideClassHeader { + regularClass.transformAnnotations(this, ResolutionMode.ContextIndependent) + regularClass.transformTypeParameters(this, ResolutionMode.ContextIndependent) + regularClass.transformSuperTypeRefs(this, ResolutionMode.ContextIndependent) + } } doTransformRegularClass(regularClass, data) @@ -691,10 +706,15 @@ open class FirDeclarationsResolveTransformer( if (typeAlias.isLocal && typeAlias !in context.targetedLocalClasses) { return typeAlias.runAllPhasesForLocalClass(transformer, components, data, transformer.firResolveContextCollector) } - doTransformTypeParameters(typeAlias) - typeAlias.transformAnnotations(transformer, data) - transformer.firResolveContextCollector?.addDeclarationContext(typeAlias, context) - typeAlias.transformExpandedTypeRef(transformer, data) + + @OptIn(PrivateForInline::class) + context.withContainer(typeAlias) { + doTransformTypeParameters(typeAlias) + typeAlias.transformAnnotations(transformer, data) + transformer.firResolveContextCollector?.addDeclarationContext(typeAlias, context) + typeAlias.transformExpandedTypeRef(transformer, data) + } + return typeAlias } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirImplicitBodyResolve.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirImplicitBodyResolve.kt index 2cfdc9c16c2..34bdac92691 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirImplicitBodyResolve.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirImplicitBodyResolve.kt @@ -138,17 +138,6 @@ open class FirImplicitAwareBodyResolveTransformer( super.transformDeclarationContent(declaration, data) } - override fun transformDanglingModifierList( - danglingModifierList: FirDanglingModifierList, - data: ResolutionMode - ): FirDanglingModifierList { - return if (implicitTypeOnly) { - danglingModifierList - } else { - transformElement(danglingModifierList, data) - } - } - override fun transformSimpleFunction( simpleFunction: FirSimpleFunction, data: ResolutionMode diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsTransformer.kt index f3bd0bc9c3d..3a365c56155 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsTransformer.kt @@ -321,31 +321,7 @@ private class FirDeclarationsResolveTransformerForAnnotationArguments( return backingField } - override fun transformTypeAlias(typeAlias: FirTypeAlias, data: ResolutionMode): FirTypeAlias { - @OptIn(PrivateForInline::class) - context.withContainer(typeAlias) { - doTransformTypeParameters(typeAlias) - typeAlias.transformAnnotations(transformer, data) - transformer.firResolveContextCollector?.addDeclarationContext(typeAlias, context) - typeAlias.expandedTypeRef.transformSingle(transformer, data) - } - - return typeAlias - } - override fun transformScript(script: FirScript, data: ResolutionMode): FirScript { return script } - - override fun transformDanglingModifierList( - danglingModifierList: FirDanglingModifierList, - data: ResolutionMode - ): FirDanglingModifierList { - @OptIn(PrivateForInline::class) - context.withContainer(danglingModifierList) { - danglingModifierList.transformAnnotations(transformer, data) - } - - return danglingModifierList - } } diff --git a/compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.fir.kt b/compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.fir.kt index 9a49661528c..7bd44f156c2 100644 --- a/compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.fir.kt @@ -9,7 +9,7 @@ fun foo() { class OriginalClass<@Anno("type param $localProp") T : @Anno("bound $localProp") List<@Anno("nested bound $localProp") Int>> : @Anno("super type $localProp") A<@Anno("nested super type $localProp") List<@Anno("nested nested super type $localProp") Int>>() { val prop = 0 - @Anno("class $prop") - class InnerClass<@Anno("type param $prop") T : @Anno("bound $prop") List<@Anno("nested bound $prop") Int>> : @Anno("super type $prop") A<@Anno("nested super type $prop") List<@Anno("nested nested super type $prop") Int>>() + @Anno("class $prop") + class InnerClass<@Anno("type param $prop") T : @Anno("bound $prop") List<@Anno("nested bound $prop") Int>> : @Anno("super type $prop") A<@Anno("nested super type $prop") List<@Anno("nested nested super type $prop") Int>>() } } diff --git a/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnReceiverParameterPropertyInsideLocalClass.fir.kt b/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnReceiverParameterPropertyInsideLocalClass.fir.kt index 903fae37d6e..49107159a2d 100644 --- a/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnReceiverParameterPropertyInsideLocalClass.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnReceiverParameterPropertyInsideLocalClass.fir.kt @@ -4,6 +4,6 @@ annotation class Anno(val number: Int) fun topLevelFun() { class LocalClass { - val @receiver:Anno(42.prop) Int.prop get() = 22 + val @receiver:Anno(42.prop) Int.prop get() = 22 } } diff --git a/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnTypeParameterPropertyInsideLocalClass.kt b/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnTypeParameterPropertyInsideLocalClass.kt index 1da8d1347c3..a1342cb587a 100644 --- a/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnTypeParameterPropertyInsideLocalClass.kt +++ b/compiler/testData/diagnostics/tests/annotations/cycleAnnotationOnTypeParameterPropertyInsideLocalClass.kt @@ -6,6 +6,6 @@ annotation class Anno(val number: Int) fun topLevelFun() { class LocalClass { - val <@Anno(42.prop) T> T.prop get() = 22 + val <@Anno(42.prop) T> T.prop get() = 22 } } diff --git a/compiler/testData/diagnostics/tests/annotations/danglingAnnotationInLocalClass.fir.kt b/compiler/testData/diagnostics/tests/annotations/danglingAnnotationInLocalClass.fir.kt index d80518bf885..741f409e72d 100644 --- a/compiler/testData/diagnostics/tests/annotations/danglingAnnotationInLocalClass.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/danglingAnnotationInLocalClass.fir.kt @@ -4,6 +4,6 @@ fun foo() { class OriginalClass { val prop = 0 - @Anno("dangling $prop") + @Anno("dangling $prop") } } diff --git a/compiler/testData/diagnostics/tests/annotations/nestedAliasWithNestedAnnotationInLocalClass.fir.kt b/compiler/testData/diagnostics/tests/annotations/nestedAliasWithNestedAnnotationInLocalClass.fir.kt index 6f8a07d7149..a84e530d98b 100644 --- a/compiler/testData/diagnostics/tests/annotations/nestedAliasWithNestedAnnotationInLocalClass.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/nestedAliasWithNestedAnnotationInLocalClass.fir.kt @@ -5,7 +5,7 @@ fun foo() { class OriginalClass { val prop = 0 - @Anno("alias $prop") - typealias NestedTypeAlias <@Anno("type param $prop") A : @Anno("bound $prop") Number> = @Anno("type $prop") OriginalClass + @Anno("alias $prop") + typealias NestedTypeAlias <@Anno("type param $prop") A : @Anno("bound $prop") Number> = @Anno("type $prop") OriginalClass } } diff --git a/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotationsInLocalClass.fir.kt b/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotationsInLocalClass.fir.kt index 0fdcbf67d83..fca5054c4a5 100644 --- a/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotationsInLocalClass.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotationsInLocalClass.fir.kt @@ -10,6 +10,6 @@ fun foo() { fun <@Anno("type param $prop") F : @Anno("bound $prop") List<@Anno("nested bound $prop") List<@Anno("nested nested bound $prop") String>>> @receiver:Anno("receiver annotation: $prop") @Anno("receiver type $prop") Collection<@Anno("nested receiver type $prop") List<@Anno("nested nested receiver type $prop")String>>.explicitType(@Anno("parameter annotation $prop") param: @Anno("parameter type $prop") ListIterator<@Anno("nested parameter type $prop") List<@Anno("nested nested parameter type $prop")String>>): @Anno("explicitType return type $prop") List<@Anno("explicitType nested return type $prop") List<@Anno("explicitType nested nested return type $prop") Int>> = emptyList() @Anno("property $prop") - val <@Anno("type param $prop") F : @Anno("bound $prop") Number> @receiver:Anno("receiver annotation: $prop") @Anno("receiver type $prop") F.explicitType: @Anno("bound $prop") Int get() = 1 + val <@Anno("type param $prop") F : @Anno("bound $prop") Number> @receiver:Anno("receiver annotation: $prop") @Anno("receiver type $prop") F.explicitType: @Anno("bound $prop") Int get() = 1 } }