diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.after.txt new file mode 100644 index 00000000000..029a687e844 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.after.txt @@ -0,0 +1,32 @@ +@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=A] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.before.txt new file mode 100644 index 00000000000..46b15a5ba7d --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.before.txt @@ -0,0 +1,30 @@ +@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(TYPES)] class A : R|kotlin/Any| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=A] constructor([ResolvedTo(TYPES)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.kt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.kt new file mode 100644 index 00000000000..96e41864157 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.kt @@ -0,0 +1,8 @@ +@Target(AnnotationTarget.TYPE) +annotation class Anno(val position: String) + +const val prop = "str" + +class A { + constructor(param: @Anno("parameter type $prop") List<@Anno("nested parameter type $prop") Collection<@Anno("nested nested parameter type $prop") String>> = @Anno("defaultValue $prop") fun(i: @Anno("anonymousFunction parameter type $prop") Int): @Anno("anonymousFunction return type $prop") Int {}) +} diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.lazyResolve.txt new file mode 100644 index 00000000000..95b906eca8b --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.lazyResolve.txt @@ -0,0 +1,269 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] parameterWithAnnotations.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(RAW_FIR)] class A : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor([ResolvedTo(RAW_FIR)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(RAW_FIR)] class A : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor([ResolvedTo(RAW_FIR)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class A : R|kotlin/Any| { + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=A] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(COMPANION_GENERATION)] class A : R|kotlin/Any| { + public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=A] constructor([ResolvedTo(COMPANION_GENERATION)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(SUPER_TYPES)] class A : R|kotlin/Any| { + public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=A] constructor([ResolvedTo(SUPER_TYPES)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(TYPES)] class A : R|kotlin/Any| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=A] constructor([ResolvedTo(TYPES)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(STATUS)] class A : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor([ResolvedTo(STATUS)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class A : R|kotlin/Any| { + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=A] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(CONTRACTS)] class A : R|kotlin/Any| { + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=A] constructor([ResolvedTo(CONTRACTS)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class A : R|kotlin/Any| { + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=A] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(BODY_RESOLVE)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @R|Anno|[Types](position = (String(defaultValue ), R|/prop|)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: R|@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int|): R|@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int| { + } + ): R|A| { + super() + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] parameterWithAnnotations.kt + @R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|)) 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 final const [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(BODY_RESOLVE)] class A : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(BODY_RESOLVE)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @R|Anno|[Types](position = (String(defaultValue ), R|/prop|)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: R|@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int|): R|@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int| { + } + ): R|A| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.after.txt new file mode 100644 index 00000000000..ecceec50e62 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.after.txt @@ -0,0 +1,48 @@ +@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int + context -> FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int + context -> FirValueParameterSymbol /i from FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int + context -> FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int + context -> FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(BODY_RESOLVE)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @R|Anno|[Types](position = (String(defaultValue ), R|/prop|)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: R|@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int|): R|@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int| { + } + ): R|A| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.before.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.before.txt new file mode 100644 index 00000000000..ecceec50e62 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.before.txt @@ -0,0 +1,48 @@ +@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int + context -> FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int + context -> FirValueParameterSymbol /i from FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int + context -> FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int + context -> FirAnonymousFunctionSymbol special/anonymous + anchor -> [FirConstructorSymbol /A.A] + +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(BODY_RESOLVE)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @R|Anno|[Types](position = (String(defaultValue ), R|/prop|)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: R|@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int|): R|@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int| { + } + ): R|A| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.kt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.kt new file mode 100644 index 00000000000..e3a36b8e500 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.kt @@ -0,0 +1,9 @@ +// BODY_RESOLVE +@Target(AnnotationTarget.TYPE) +annotation class Anno(val position: String) + +const val prop = "str" + +class A { + constructor(param: @Anno("parameter type $prop") List<@Anno("nested parameter type $prop") Collection<@Anno("nested nested parameter type $prop") String>> = @Anno("defaultValue $prop") fun(i: @Anno("anonymousFunction parameter type $prop") Int): @Anno("anonymousFunction return type $prop") Int {}) +} diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.lazyResolve.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.lazyResolve.txt new file mode 100644 index 00000000000..f5da1b66793 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.lazyResolve.txt @@ -0,0 +1,269 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] parameterWithAnnotationsBodyResolve.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(RAW_FIR)] class A : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor([ResolvedTo(RAW_FIR)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(RAW_FIR)] class A : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor([ResolvedTo(RAW_FIR)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class A : R|kotlin/Any| { + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=A] constructor([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(COMPANION_GENERATION)] class A : R|kotlin/Any| { + public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=A] constructor([ResolvedTo(COMPANION_GENERATION)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @Target[Unresolved](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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(SUPER_TYPES)] class A : R|kotlin/Any| { + public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=A] constructor([ResolvedTo(SUPER_TYPES)] param: @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) String>> = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public? final? [ResolvedTo(TYPES)] class A : R|kotlin/Any| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=A] constructor([ResolvedTo(TYPES)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(STATUS)] class A : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor([ResolvedTo(STATUS)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class A : R|kotlin/Any| { + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=A] constructor([ResolvedTo(EXPECT_ACTUAL_MATCHING)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = LAZY_EXPRESSION): R|A| { + LAZY_super + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(CONTRACTS)] class A : R|kotlin/Any| { + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=A] constructor([ResolvedTo(CONTRACTS)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] 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? final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class A : R|kotlin/Any| { + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=A] constructor([ResolvedTo(ANNOTATION_ARGUMENTS)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @Anno[Unresolved]((String(defaultValue ), prop#)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: @Anno[Unresolved]((String(anonymousFunction parameter type ), prop#)) Int): @Anno[Unresolved]((String(anonymousFunction return type ), prop#)) Int { + } + ): R|A| { + super() + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) 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 final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class A : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(BODY_RESOLVE)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @R|Anno|[Types](position = (String(defaultValue ), R|/prop|)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: R|@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int|): R|@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int| { + } + ): R|A| { + super() + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] parameterWithAnnotationsBodyResolve.kt + @R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|)) 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 final const [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/String| = String(str) + public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| + public final [ResolvedTo(BODY_RESOLVE)] class A : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor([ResolvedTo(BODY_RESOLVE)] param: R|@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>>| = @R|Anno|[Types](position = (String(defaultValue ), R|/prop|)) [ResolvedTo(RAW_FIR)] fun ([ResolvedTo(RAW_FIR)] i: R|@R|Anno|(position = (String(anonymousFunction parameter type ), R|/prop|)) kotlin/Int|): R|@R|Anno|(position = (String(anonymousFunction return type ), R|/prop|)) kotlin/Int| { + } + ): R|A| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.after.txt b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.after.txt new file mode 100644 index 00000000000..a8ceeca0e32 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.after.txt @@ -0,0 +1,38 @@ +@R|Anno|(position = (String(parameter type ), R|/prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String>> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested parameter type ), R|/prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String> + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +@R|Anno|(position = (String(nested nested parameter type ), R|/prop|)) kotlin/String + context -> FirValueParameterSymbol /param from FirConstructorSymbol /A.A + anchor -> [FirConstructorSymbol /A.A] + +FILE: [ResolvedTo(IMPORTS)] parameterWithAnnotationsScript.kts + context(