From fcb3f003dc18668f38d2d62b5042b026da4177a5 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Mon, 27 Nov 2023 18:49:24 +0100 Subject: [PATCH] [FIR] add more tests on annotations for local declarations ^KT-63842 --- .../classAnnotationsInLocalClass.after.txt | 100 ++++ .../classAnnotationsInLocalClass.before.txt | 100 ++++ .../class/classAnnotationsInLocalClass.kt | 16 + ...assAnnotationsInLocalClass.lazyResolve.txt | 341 ++++++++++++++ ...assAnnotationsInLocalClassScript.after.txt | 106 +++++ ...ssAnnotationsInLocalClassScript.before.txt | 106 +++++ .../classAnnotationsInLocalClassScript.kts | 16 + ...otationsInLocalClassScript.lazyResolve.txt | 431 ++++++++++++++++++ ...ParameterAnnotationsInLocalClass.after.txt | 74 +++ ...arameterAnnotationsInLocalClass.before.txt | 74 +++ .../typeParameterAnnotationsInLocalClass.kt | 11 + ...terAnnotationsInLocalClass.lazyResolve.txt | 243 ++++++++++ ...terAnnotationsInLocalClassScript.after.txt | 79 ++++ ...erAnnotationsInLocalClassScript.before.txt | 79 ++++ ...ParameterAnnotationsInLocalClassScript.kts | 11 + ...otationsInLocalClassScript.lazyResolve.txt | 320 +++++++++++++ ...ParameterAnnotationsInLocalClass.after.txt | 47 ++ ...arameterAnnotationsInLocalClass.before.txt | 47 ++ .../typeParameterAnnotationsInLocalClass.kt | 11 + ...terAnnotationsInLocalClass.lazyResolve.txt | 248 ++++++++++ ...terAnnotationsInLocalClassScript.after.txt | 52 +++ ...erAnnotationsInLocalClassScript.before.txt | 52 +++ ...ParameterAnnotationsInLocalClassScript.kts | 11 + ...otationsInLocalClassScript.lazyResolve.txt | 325 +++++++++++++ ...WithNestedAnnotationInLocalClass.after.txt | 32 ++ ...ithNestedAnnotationInLocalClass.before.txt | 32 ++ ...edAliasWithNestedAnnotationInLocalClass.kt | 12 + ...stedAnnotationInLocalClass.lazyResolve.txt | 233 ++++++++++ ...stedAnnotationInLocalClassScript.after.txt | 37 ++ ...tedAnnotationInLocalClassScript.before.txt | 37 ++ ...WithNestedAnnotationInLocalClassScript.kts | 12 + ...notationInLocalClassScript.lazyResolve.txt | 310 +++++++++++++ ...esolveForTypeAnnotationsTestGenerated.java | 24 + ...tRootLazyTypeAnnotationsTestGenerated.java | 24 + ...esolveForTypeAnnotationsTestGenerated.java | 24 + ...criptLazyTypeAnnotationsTestGenerated.java | 24 + ...esolveForTypeAnnotationsTestGenerated.java | 24 + ...ourceLazyTypeAnnotationsTestGenerated.java | 24 + ...CompilerTestFE10TestdataTestGenerated.java | 30 ++ ...sticCompilerFE10TestDataTestGenerated.java | 30 ++ ...eeOldFrontendDiagnosticsTestGenerated.java | 30 ++ ...siOldFrontendDiagnosticsTestGenerated.java | 30 ++ .../classAnnotationsInLocalClass.fir.kt | 15 + .../classAnnotationsInLocalClass.kt | 15 + .../danglingAnnotationInLocalClass.fir.kt | 9 + .../danglingAnnotationInLocalClass.kt | 9 + ...zerWithNestedAnnotationInLocalClass.fir.kt | 11 + ...ializerWithNestedAnnotationInLocalClass.kt | 11 + ...iasWithNestedAnnotationInLocalClass.fir.kt | 11 + ...edAliasWithNestedAnnotationInLocalClass.kt | 11 + ...ypeParameterAnnotationsInLocalClass.fir.kt | 15 + .../typeParameterAnnotationsInLocalClass.kt | 15 + .../test/runners/DiagnosticTestGenerated.java | 30 ++ 53 files changed, 4021 insertions(+) create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClass.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClass.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClass.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClass.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClassScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClassScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClassScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/typeParameterAnnotationsInLocalClassScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClass.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/typeParameterAnnotationsInLocalClassScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClass.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/typeAlias/nestedAliasWithNestedAnnotationInLocalClassScript.lazyResolve.txt create mode 100644 compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.fir.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/danglingAnnotationInLocalClass.fir.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/danglingAnnotationInLocalClass.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/initializerWithNestedAnnotationInLocalClass.fir.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/initializerWithNestedAnnotationInLocalClass.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/nestedAliasWithNestedAnnotationInLocalClass.fir.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/nestedAliasWithNestedAnnotationInLocalClass.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/typeParameterAnnotationsInLocalClass.fir.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/typeParameterAnnotationsInLocalClass.kt 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 new file mode 100644 index 00000000000..344c9741c0d --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.after.txt @@ -0,0 +1,100 @@ +@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int> + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass + anchor -> [] + +@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass + anchor -> [] + +@R|Anno|(position = (String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>> + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [] + +@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int> + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [] + +@R|Anno|(position = (String(nested bound ), #)) 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>> + 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> + context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(nested nested super type ), #)) 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>> + 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> + context -> FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int + context -> FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>> + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int> + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.CLASS|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(BODY_RESOLVE)] lval localProp: R|kotlin/Int| = Int(1) + @R|Anno|[Types](position = (String(class ), R|/localProp|)) local final [ResolvedTo(BODY_RESOLVE)] class OriginalClass<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] 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 ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] constructor<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|>(): R|/OriginalClass| { + super(String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>|>() + } + + 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>>|>() + } + + } + + } + + } 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 new file mode 100644 index 00000000000..344c9741c0d --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.before.txt @@ -0,0 +1,100 @@ +@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int> + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass + anchor -> [] + +@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass + anchor -> [] + +@R|Anno|(position = (String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>> + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [] + +@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int> + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [] + +@R|Anno|(position = (String(nested bound ), #)) 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>> + 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> + context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(nested nested super type ), #)) 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>> + 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> + context -> FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int + context -> FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>> + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int> + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.CLASS|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(BODY_RESOLVE)] lval localProp: R|kotlin/Int| = Int(1) + @R|Anno|[Types](position = (String(class ), R|/localProp|)) local final [ResolvedTo(BODY_RESOLVE)] class OriginalClass<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] 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 ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] constructor<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|>(): R|/OriginalClass| { + super(String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>|>() + } + + 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>>|>() + } + + } + + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.kt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.kt new file mode 100644 index 00000000000..f38dd51afd7 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.kt @@ -0,0 +1,16 @@ +// BODY_RESOLVE +@Target(AnnotationTarget.TYPE, AnnotationTarget.CLASS, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER) +annotation class Anno(val position: String) + +open class A + +fun foo() { + val localProp = 1 + @Anno("class $localProp") + 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>>() + } +} 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 new file mode 100644 index 00000000000..6cf872175e9 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClass.lazyResolve.txt @@ -0,0 +1,341 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public? final? [ResolvedTo(COMPANION_GENERATION)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public? final? [ResolvedTo(TYPES)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(STATUS)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun foo(): R|kotlin/Unit| { LAZY_BLOCK } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(CONTRACTS)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(RAW_FIR)] lval localProp: = IntegerLiteral(1) + @Anno[Unresolved]((String(class ), localProp#)) local final? [ResolvedTo(RAW_FIR)] class OriginalClass<@Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>> : @Anno[Unresolved]((String(super type ), localProp#)) A<@Anno[Unresolved]((String(nested super type ), localProp#)) List<@Anno[Unresolved]((String(nested nested super type ), localProp#)) Int>> { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] constructor<@Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>>(): R|/OriginalClass| { + super<@Anno[Unresolved]((String(super type ), localProp#)) A<@Anno[Unresolved]((String(nested super type ), localProp#)) List<@Anno[Unresolved]((String(nested nested super type ), localProp#)) Int>>>() + } + + public? final? [ResolvedTo(RAW_FIR)] val prop: = IntegerLiteral(0) + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] get(): + + @Anno[Unresolved]((String(class ), prop#)) local final? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] class InnerClass<@Anno[Unresolved]((String(type param ), prop#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), prop#)) List<@Anno[Unresolved]((String(nested bound ), prop#)) Int>, @Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] Outer(T) : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>> : @Anno[Unresolved]((String(super type ), prop#)) A<@Anno[Unresolved]((String(nested super type ), prop#)) List<@Anno[Unresolved]((String(nested nested super type ), prop#)) Int>> { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=InnerClass] constructor<@Anno[Unresolved]((String(type param ), prop#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), prop#)) List<@Anno[Unresolved]((String(nested bound ), prop#)) Int>>(): R|/OriginalClass.InnerClass| { + super<@Anno[Unresolved]((String(super type ), prop#)) A<@Anno[Unresolved]((String(nested super type ), prop#)) List<@Anno[Unresolved]((String(nested nested super type ), prop#)) Int>>>() + } + + } + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(RAW_FIR)] lval localProp: = IntegerLiteral(1) + @Anno[Unresolved]((String(class ), localProp#)) local final? [ResolvedTo(RAW_FIR)] class OriginalClass<@Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>> : @Anno[Unresolved]((String(super type ), localProp#)) A<@Anno[Unresolved]((String(nested super type ), localProp#)) List<@Anno[Unresolved]((String(nested nested super type ), localProp#)) Int>> { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] constructor<@Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>>(): R|/OriginalClass| { + super<@Anno[Unresolved]((String(super type ), localProp#)) A<@Anno[Unresolved]((String(nested super type ), localProp#)) List<@Anno[Unresolved]((String(nested nested super type ), localProp#)) Int>>>() + } + + public? final? [ResolvedTo(RAW_FIR)] val prop: = IntegerLiteral(0) + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] get(): + + @Anno[Unresolved]((String(class ), prop#)) local final? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] class InnerClass<@Anno[Unresolved]((String(type param ), prop#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), prop#)) List<@Anno[Unresolved]((String(nested bound ), prop#)) Int>, @Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] Outer(T) : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>> : @Anno[Unresolved]((String(super type ), prop#)) A<@Anno[Unresolved]((String(nested super type ), prop#)) List<@Anno[Unresolved]((String(nested nested super type ), prop#)) Int>> { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=InnerClass] constructor<@Anno[Unresolved]((String(type param ), prop#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), prop#)) List<@Anno[Unresolved]((String(nested bound ), prop#)) Int>>(): R|/OriginalClass.InnerClass| { + super<@Anno[Unresolved]((String(super type ), prop#)) A<@Anno[Unresolved]((String(nested super type ), prop#)) List<@Anno[Unresolved]((String(nested nested super type ), prop#)) Int>>>() + } + + } + + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(RAW_FIR)] lval localProp: = IntegerLiteral(1) + @Anno[Unresolved]((String(class ), localProp#)) local final? [ResolvedTo(RAW_FIR)] class OriginalClass<@Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>> : @Anno[Unresolved]((String(super type ), localProp#)) A<@Anno[Unresolved]((String(nested super type ), localProp#)) List<@Anno[Unresolved]((String(nested nested super type ), localProp#)) Int>> { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] constructor<@Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>>(): R|/OriginalClass| { + super<@Anno[Unresolved]((String(super type ), localProp#)) A<@Anno[Unresolved]((String(nested super type ), localProp#)) List<@Anno[Unresolved]((String(nested nested super type ), localProp#)) Int>>>() + } + + public? final? [ResolvedTo(RAW_FIR)] val prop: = IntegerLiteral(0) + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] get(): + + @Anno[Unresolved]((String(class ), prop#)) local final? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalClass] class InnerClass<@Anno[Unresolved]((String(type param ), prop#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), prop#)) List<@Anno[Unresolved]((String(nested bound ), prop#)) Int>, @Anno[Unresolved]((String(type param ), localProp#)) [ResolvedTo(RAW_FIR)] Outer(T) : @Anno[Unresolved]((String(bound ), localProp#)) List<@Anno[Unresolved]((String(nested bound ), localProp#)) Int>> : @Anno[Unresolved]((String(super type ), prop#)) A<@Anno[Unresolved]((String(nested super type ), prop#)) List<@Anno[Unresolved]((String(nested nested super type ), prop#)) Int>> { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=InnerClass] constructor<@Anno[Unresolved]((String(type param ), prop#)) [ResolvedTo(RAW_FIR)] T : @Anno[Unresolved]((String(bound ), prop#)) List<@Anno[Unresolved]((String(nested bound ), prop#)) Int>>(): R|/OriginalClass.InnerClass| { + super<@Anno[Unresolved]((String(super type ), prop#)) A<@Anno[Unresolved]((String(nested super type ), prop#)) List<@Anno[Unresolved]((String(nested nested super type ), prop#)) Int>>>() + } + + } + + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClass.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.CLASS|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>(): R|A| { + LAZY_super + } + + } + public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(BODY_RESOLVE)] lval localProp: R|kotlin/Int| = Int(1) + @R|Anno|[Types](position = (String(class ), R|/localProp|)) local final [ResolvedTo(BODY_RESOLVE)] class OriginalClass<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] 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 ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] constructor<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|>(): R|/OriginalClass| { + super(String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>|>() + } + + 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>>|>() + } + + } + + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] classAnnotationsInLocalClass.kt + @R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.CLASS|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|)) public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public open [ResolvedTo(BODY_RESOLVE)] class A<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor<[ResolvedTo(BODY_RESOLVE)] T>(): R|A| { + super() + } + + } + public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| { + [ResolvedTo(BODY_RESOLVE)] lval localProp: R|kotlin/Int| = Int(1) + @R|Anno|[Types](position = (String(class ), R|/localProp|)) local final [ResolvedTo(BODY_RESOLVE)] class OriginalClass<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] 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 ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalClass] constructor<@R|Anno|[Types](position = (String(type param ), R|/localProp|)) [ResolvedTo(BODY_RESOLVE)] T : R|@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int>|>(): R|/OriginalClass| { + super(String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>>|>() + } + + 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>>|>() + } + + } + + } + + } 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 new file mode 100644 index 00000000000..29821ade8f8 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/class/classAnnotationsInLocalClassScript.after.txt @@ -0,0 +1,106 @@ +@R|Anno|(position = (String(bound ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int> + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass + anchor -> [] + +@R|Anno|(position = (String(nested bound ), R|/localProp|)) kotlin/Int + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass + anchor -> [] + +@R|Anno|(position = (String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>> + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [] + +@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int> + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int + context -> FirConstructorSymbol /OriginalClass.OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/Int> + context -> FirTypeParameterSymbol T from FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [] + +@R|Anno|(position = (String(nested bound ), #)) 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>> + 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> + context -> FirConstructorSymbol /OriginalClass.InnerClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(nested nested super type ), #)) 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>> + 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> + context -> FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(nested nested super type ), #)) kotlin/Int + context -> FirRegularClassSymbol /OriginalClass.InnerClass + anchor -> [FirRegularClassSymbol /OriginalClass.InnerClass] + +@R|Anno|(position = (String(super type ), R|/localProp|)) A<@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int>> + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested super type ), R|/localProp|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int> + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +@R|Anno|(position = (String(nested nested super type ), R|/localProp|)) kotlin/Int + context -> FirRegularClassSymbol /OriginalClass + anchor -> [FirRegularClassSymbol /OriginalClass] + +FILE: [ResolvedTo(IMPORTS)] classAnnotationsInLocalClassScript.kts + context(