From 3d43dff8b5da7fbcd77e6fb12e07d25b9a1f650d Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 7 Dec 2023 15:42:55 +0100 Subject: [PATCH] [LL/FIR] add tests on function parameter as implicit return type ^KT-64164 --- .../parameterWithAnnotations.after.txt | 32 ++ .../parameterWithAnnotations.before.txt | 30 ++ .../constructor/parameterWithAnnotations.kt | 8 + .../parameterWithAnnotations.lazyResolve.txt | 269 ++++++++++++ ...ameterWithAnnotationsBodyResolve.after.txt | 48 ++ ...meterWithAnnotationsBodyResolve.before.txt | 48 ++ .../parameterWithAnnotationsBodyResolve.kt | 9 + ...WithAnnotationsBodyResolve.lazyResolve.txt | 269 ++++++++++++ .../parameterWithAnnotationsScript.after.txt | 38 ++ .../parameterWithAnnotationsScript.before.txt | 36 ++ .../parameterWithAnnotationsScript.kts | 8 + ...meterWithAnnotationsScript.lazyResolve.txt | 359 +++++++++++++++ ...WithAnnotationsScriptBodyResolve.after.txt | 54 +++ ...ithAnnotationsScriptBodyResolve.before.txt | 54 +++ ...ameterWithAnnotationsScriptBodyResolve.kts | 9 + ...notationsScriptBodyResolve.lazyResolve.txt | 359 +++++++++++++++ .../parameterAsImplicitReturnType.after.txt | 41 ++ .../parameterAsImplicitReturnType.before.txt | 41 ++ .../function/parameterAsImplicitReturnType.kt | 6 + ...ameterAsImplicitReturnType.lazyResolve.txt | 210 +++++++++ ...rAsImplicitReturnTypeBodyResolve.after.txt | 57 +++ ...AsImplicitReturnTypeBodyResolve.before.txt | 57 +++ ...arameterAsImplicitReturnTypeBodyResolve.kt | 7 + ...licitReturnTypeBodyResolve.lazyResolve.txt | 210 +++++++++ ...rAsImplicitReturnTypePropagation.after.txt | 32 ++ ...AsImplicitReturnTypePropagation.before.txt | 32 ++ ...arameterAsImplicitReturnTypePropagation.kt | 8 + ...licitReturnTypePropagation.lazyResolve.txt | 231 ++++++++++ ...licitReturnTypePropagationScript.after.txt | 39 ++ ...icitReturnTypePropagationScript.before.txt | 39 ++ ...rAsImplicitReturnTypePropagationScript.kts | 8 + ...eturnTypePropagationScript.lazyResolve.txt | 334 ++++++++++++++ ...ameterAsImplicitReturnTypeScript.after.txt | 47 ++ ...meterAsImplicitReturnTypeScript.before.txt | 47 ++ .../parameterAsImplicitReturnTypeScript.kts | 6 + ...AsImplicitReturnTypeScript.lazyResolve.txt | 300 +++++++++++++ ...licitReturnTypeScriptBodyResolve.after.txt | 63 +++ ...icitReturnTypeScriptBodyResolve.before.txt | 63 +++ ...rAsImplicitReturnTypeScriptBodyResolve.kts | 7 + ...eturnTypeScriptBodyResolve.lazyResolve.txt | 300 +++++++++++++ ...plicitTypeFromIncorrectAccessors.after.txt | 16 + ...licitTypeFromIncorrectAccessors.before.txt | 16 + .../implicitTypeFromIncorrectAccessors.kt | 10 + ...TypeFromIncorrectAccessors.lazyResolve.txt | 221 ++++++++++ ...romIncorrectAccessorsPropagation.after.txt | 18 + ...omIncorrectAccessorsPropagation.before.txt | 18 + ...itTypeFromIncorrectAccessorsPropagation.kt | 12 + ...orrectAccessorsPropagation.lazyResolve.txt | 247 +++++++++++ ...orrectAccessorsPropagationScript.after.txt | 29 ++ ...rrectAccessorsPropagationScript.before.txt | 29 ++ ...romIncorrectAccessorsPropagationScript.kts | 12 + ...AccessorsPropagationScript.lazyResolve.txt | 414 ++++++++++++++++++ ...TypeFromIncorrectAccessorsScript.after.txt | 26 ++ ...ypeFromIncorrectAccessorsScript.before.txt | 26 ++ ...plicitTypeFromIncorrectAccessorsScript.kts | 10 + ...omIncorrectAccessorsScript.lazyResolve.txt | 375 ++++++++++++++++ .../implicitTypeFromIncorrectSetter.after.txt | 31 ++ ...implicitTypeFromIncorrectSetter.before.txt | 31 ++ .../implicitTypeFromIncorrectSetter.kt | 10 + ...citTypeFromIncorrectSetter.lazyResolve.txt | 240 ++++++++++ ...peFromIncorrectSetterPropagation.after.txt | 21 + ...eFromIncorrectSetterPropagation.before.txt | 21 + ...licitTypeFromIncorrectSetterPropagation.kt | 12 + ...IncorrectSetterPropagation.lazyResolve.txt | 262 +++++++++++ ...IncorrectSetterPropagationScript.after.txt | 28 ++ ...ncorrectSetterPropagationScript.before.txt | 28 ++ ...peFromIncorrectSetterPropagationScript.kts | 12 + ...ectSetterPropagationScript.lazyResolve.txt | 365 +++++++++++++++ ...citTypeFromIncorrectSetterScript.after.txt | 37 ++ ...itTypeFromIncorrectSetterScript.before.txt | 37 ++ .../implicitTypeFromIncorrectSetterScript.kts | 10 + ...eFromIncorrectSetterScript.lazyResolve.txt | 330 ++++++++++++++ ...RootLazyBodiesCalculatorTestGenerated.java | 12 + ...urceLazyBodiesCalculatorTestGenerated.java | 12 + ...esolveForTypeAnnotationsTestGenerated.java | 54 +++ ...tRootLazyTypeAnnotationsTestGenerated.java | 54 +++ ...esolveForTypeAnnotationsTestGenerated.java | 54 +++ ...criptLazyTypeAnnotationsTestGenerated.java | 54 +++ ...esolveForTypeAnnotationsTestGenerated.java | 54 +++ ...ourceLazyTypeAnnotationsTestGenerated.java | 54 +++ ...CompilerTestFE10TestdataTestGenerated.java | 6 + ...sticCompilerFE10TestDataTestGenerated.java | 6 + ...eeOldFrontendDiagnosticsTestGenerated.java | 6 + ...siOldFrontendDiagnosticsTestGenerated.java | 6 + ...ghtTree2FirConverterTestCaseGenerated.java | 10 + ...ructorWithAnnotations.annotationOwners.txt | 23 + .../constructorWithAnnotations.kt | 3 + .../constructorWithAnnotations.lazyBodies.txt | 7 + .../constructorWithAnnotations.txt | 9 + ...nctionWithAnnotations.annotationOwners.txt | 27 ++ .../declarations/functionWithAnnotations.kt | 1 + .../functionWithAnnotations.lazyBodies.txt | 2 + .../declarations/functionWithAnnotations.txt | 6 + ...FirBuilderLazyBodiesTestCaseGenerated.java | 10 + .../RawFirBuilderTestCaseGenerated.java | 10 + .../functionParameterAsImplicitReturnType.kt | 7 + .../test/runners/DiagnosticTestGenerated.java | 6 + 97 files changed, 7262 insertions(+) create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotations.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsBodyResolve.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScriptBodyResolve.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScriptBodyResolve.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScriptBodyResolve.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/constructor/parameterWithAnnotationsScriptBodyResolve.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnType.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnType.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnType.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnType.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeBodyResolve.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeBodyResolve.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeBodyResolve.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeBodyResolve.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagation.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagation.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagation.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagation.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagationScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagationScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagationScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypePropagationScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScriptBodyResolve.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScriptBodyResolve.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScriptBodyResolve.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/function/parameterAsImplicitReturnTypeScriptBodyResolve.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessors.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessors.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessors.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessors.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagation.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagation.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagation.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagation.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagationScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagationScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagationScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsPropagationScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectAccessorsScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetter.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetter.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetter.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetter.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagation.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagation.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagation.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagation.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagationScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagationScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagationScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterPropagationScript.lazyResolve.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterScript.after.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterScript.before.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterScript.kts create mode 100644 analysis/low-level-api-fir/testData/lazyResolveTypeAnnotations/property/implicitTypeFromIncorrectSetterScript.lazyResolve.txt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorWithAnnotations.annotationOwners.txt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorWithAnnotations.kt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorWithAnnotations.lazyBodies.txt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/constructorWithAnnotations.txt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/functionWithAnnotations.annotationOwners.txt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/functionWithAnnotations.kt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/functionWithAnnotations.lazyBodies.txt create mode 100644 compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/functionWithAnnotations.txt create mode 100644 compiler/testData/diagnostics/tests/annotations/functionParameterAsImplicitReturnType.kt 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(