diff --git a/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaType.txt b/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaType.txt index 8b43ec21ab9..3c133fad280 100644 --- a/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaType.txt +++ b/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaType.txt @@ -2,56 +2,152 @@ RAW_FIR: FILE: [ResolvedTo(RAW_FIR)] main.kt public? final? [ResolvedTo(RAW_FIR)] fun resolveMe([ResolvedTo(RAW_FIR)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + IMPORTS: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(RAW_FIR)] fun resolveMe([ResolvedTo(RAW_FIR)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + COMPILER_REQUIRED_ANNOTATIONS: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun resolveMe([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + COMPANION_GENERATION: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(COMPANION_GENERATION)] fun resolveMe([ResolvedTo(COMPANION_GENERATION)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + SUPER_TYPES: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(SUPER_TYPES)] fun resolveMe([ResolvedTo(SUPER_TYPES)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + TYPES: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(TYPES)] fun resolveMe([ResolvedTo(TYPES)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + STATUS: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(STATUS)] fun resolveMe([ResolvedTo(STATUS)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + EXPECT_ACTUAL_MATCHING: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun resolveMe([ResolvedTo(EXPECT_ACTUAL_MATCHING)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + CONTRACTS: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(CONTRACTS)] fun resolveMe([ResolvedTo(CONTRACTS)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + IMPLICIT_TYPES_BODY_RESOLVE: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun resolveMe([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] i: R|JavaInterface|): R|@R|KotlinAnnotation|() kotlin/Int| { ^resolveMe R|/i|.R|/JavaInterface.id| } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + ANNOTATION_ARGUMENTS: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun resolveMe([ResolvedTo(ANNOTATION_ARGUMENTS)] i: R|JavaInterface|): R|@R|KotlinAnnotation|() kotlin/Int| { ^resolveMe R|/i|.R|/JavaInterface.id| } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + BODY_RESOLVE: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe([ResolvedTo(BODY_RESOLVE)] i: R|JavaInterface|): R|@R|KotlinAnnotation|() kotlin/Int| { ^resolveMe R|/i|.R|/JavaInterface.id| } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + FILE RAW TO BODY: FILE: [ResolvedTo(BODY_RESOLVE)] main.kt public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe([ResolvedTo(BODY_RESOLVE)] i: R|JavaInterface|): R|@R|KotlinAnnotation|() kotlin/Int| { diff --git a/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaTypeWithJavaAnnotation.txt b/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaTypeWithJavaAnnotation.txt index d552fbf3eec..5269ee6970c 100644 --- a/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaTypeWithJavaAnnotation.txt +++ b/analysis/low-level-api-fir/testData/lazyResolve/annotationFromImplicitJavaTypeWithJavaAnnotation.txt @@ -2,56 +2,152 @@ RAW_FIR: FILE: [ResolvedTo(RAW_FIR)] main.kt public? final? [ResolvedTo(RAW_FIR)] fun resolveMe([ResolvedTo(RAW_FIR)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + IMPORTS: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(RAW_FIR)] fun resolveMe([ResolvedTo(RAW_FIR)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + COMPILER_REQUIRED_ANNOTATIONS: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun resolveMe([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + COMPANION_GENERATION: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(COMPANION_GENERATION)] fun resolveMe([ResolvedTo(COMPANION_GENERATION)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + SUPER_TYPES: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(SUPER_TYPES)] fun resolveMe([ResolvedTo(SUPER_TYPES)] i: JavaInterface): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + TYPES: FILE: [ResolvedTo(IMPORTS)] main.kt public? final? [ResolvedTo(TYPES)] fun resolveMe([ResolvedTo(TYPES)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + STATUS: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(STATUS)] fun resolveMe([ResolvedTo(STATUS)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + EXPECT_ACTUAL_MATCHING: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun resolveMe([ResolvedTo(EXPECT_ACTUAL_MATCHING)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + CONTRACTS: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(CONTRACTS)] fun resolveMe([ResolvedTo(CONTRACTS)] i: R|JavaInterface|): { LAZY_BLOCK } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + IMPLICIT_TYPES_BODY_RESOLVE: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun resolveMe([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] i: R|JavaInterface|): R|kotlin/Int| { ^resolveMe R|/i|.R|/JavaInterface.id| } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + ANNOTATION_ARGUMENTS: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun resolveMe([ResolvedTo(ANNOTATION_ARGUMENTS)] i: R|JavaInterface|): R|kotlin/Int| { ^resolveMe R|/i|.R|/JavaInterface.id| } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + BODY_RESOLVE: FILE: [ResolvedTo(IMPORTS)] main.kt public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe([ResolvedTo(BODY_RESOLVE)] i: R|JavaInterface|): R|kotlin/Int| { ^resolveMe R|/i|.R|/JavaInterface.id| } +FILE: [ResolvedTo(RAW_FIR)] KotlinAnnotation.kt + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class KotlinAnnotation : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=KotlinAnnotation] constructor(): R|KotlinAnnotation| { + LAZY_super + } + + } + FILE RAW TO BODY: FILE: [ResolvedTo(BODY_RESOLVE)] main.kt public final [ResolvedTo(BODY_RESOLVE)] fun resolveMe([ResolvedTo(BODY_RESOLVE)] i: R|JavaInterface|): R|kotlin/Int| { diff --git a/analysis/low-level-api-fir/testData/lazyResolve/delegateWithImplicitTypeInDifferentModules.txt b/analysis/low-level-api-fir/testData/lazyResolve/delegateWithImplicitTypeInDifferentModules.txt index 2c6d68deeec..8bd23c664e2 100644 --- a/analysis/low-level-api-fir/testData/lazyResolve/delegateWithImplicitTypeInDifferentModules.txt +++ b/analysis/low-level-api-fir/testData/lazyResolve/delegateWithImplicitTypeInDifferentModules.txt @@ -1,6 +1,12 @@ RAW_FIR: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -14,6 +20,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt IMPORTS: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -27,6 +39,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt COMPILER_REQUIRED_ANNOTATIONS: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -40,6 +58,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt COMPANION_GENERATION: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -53,6 +77,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt SUPER_TYPES: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -66,6 +96,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt TYPES: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -79,6 +115,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt STATUS: TARGET: public open [ResolvedTo(STATUS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -92,6 +134,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt EXPECT_ACTUAL_MATCHING: TARGET: public open [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -105,6 +153,12 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt CONTRACTS: TARGET: public open [ResolvedTo(CONTRACTS)] [CallableCopySubstitutionKey=CallableCopySubstitution(substitutor=Empty, baseSymbol=FirNamedFunctionSymbol /Interface.implicitType), DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun implicitType(): { LAZY_BLOCK } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -118,6 +172,14 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt IMPLICIT_TYPES_BODY_RESOLVE: TARGET: public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| { + ^implicitType Int(42) + } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -131,6 +193,14 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt ANNOTATION_ARGUMENTS: TARGET: public open [ResolvedTo(ANNOTATION_ARGUMENTS)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| { + ^implicitType Int(42) + } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { @@ -144,6 +214,14 @@ FILE: [ResolvedTo(IMPORTS)] usage.kt BODY_RESOLVE: TARGET: public open [ResolvedTo(BODY_RESOLVE)] [DelegatedWrapperDataKey=[wrapped=FirNamedFunctionSymbol /Interface.implicitType, containingClass=Aaa, delegateField=FirFieldSymbol /Aaa.$$delegate_0] fun implicitType(): R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] Interface.kt + public abstract [ResolvedTo(STATUS)] interface Interface : R|kotlin/Any| { + public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun implicitType(): R|kotlin/Int| { + ^implicitType Int(42) + } + + } + FILE: [ResolvedTo(IMPORTS)] usage.kt public final [ResolvedTo(STATUS)] [DelegateFieldsMapKey={0=FirFieldSymbol /Aaa.$$delegate_0}] class Aaa : R|Interface| { public [ResolvedTo(STATUS)] [ContainingClassKey=Aaa] constructor([ResolvedTo(STATUS)] i: R|Interface|): R|Aaa| { diff --git a/analysis/low-level-api-fir/testData/lazyResolve/substitutionFakeOverrideInDifferentModules.txt b/analysis/low-level-api-fir/testData/lazyResolve/substitutionFakeOverrideInDifferentModules.txt index 9dad3234406..f7de0e7f483 100644 --- a/analysis/low-level-api-fir/testData/lazyResolve/substitutionFakeOverrideInDifferentModules.txt +++ b/analysis/low-level-api-fir/testData/lazyResolve/substitutionFakeOverrideInDifferentModules.txt @@ -2,6 +2,17 @@ RAW_FIR: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -14,6 +25,17 @@ IMPORTS: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -26,6 +48,17 @@ COMPILER_REQUIRED_ANNOTATIONS: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -38,6 +71,17 @@ COMPANION_GENERATION: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -50,6 +94,17 @@ SUPER_TYPES: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -62,6 +117,17 @@ TYPES: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -74,6 +140,17 @@ STATUS: TARGET: public abstract [ResolvedTo(STATUS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -86,6 +163,17 @@ EXPECT_ACTUAL_MATCHING: TARGET: public abstract [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -98,6 +186,17 @@ CONTRACTS: TARGET: public abstract [ResolvedTo(CONTRACTS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -110,6 +209,17 @@ IMPLICIT_TYPES_BODY_RESOLVE: TARGET: public abstract [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -122,6 +232,17 @@ ANNOTATION_ARGUMENTS: TARGET: public abstract [ResolvedTo(ANNOTATION_ARGUMENTS)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { @@ -134,6 +255,17 @@ BODY_RESOLVE: TARGET: public abstract [ResolvedTo(BODY_RESOLVE)] [SubstitutedOverrideOriginalKey=/AbstractClass.property] val property: R|kotlin/Int| +FILE: [ResolvedTo(IMPORTS)] AbstractClass.kt + public abstract [ResolvedTo(STATUS)] class AbstractClass<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] constructor<[ResolvedTo(STATUS)] T>(): R|AbstractClass| { + LAZY_super + } + + public abstract [ResolvedTo(STATUS)] val property: R|T| + public [ResolvedTo(STATUS)] [ContainingClassKey=AbstractClass] get(): R|T| + + } + FILE: [ResolvedTo(IMPORTS)] SubClass.kt public abstract [ResolvedTo(STATUS)] class SubClass : R|AbstractClass| { public [ResolvedTo(STATUS)] [ContainingClassKey=SubClass] constructor(): R|SubClass| { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt index 1bce11c390a..454349956ee 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTest.kt @@ -29,7 +29,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractFirLazyDeclaratio } override fun doTestByFileStructure(ktFile: KtFile, moduleStructure: TestModuleStructure, testServices: TestServices) { - doLazyResolveTest(ktFile, testServices) { firResolveSession -> + doLazyResolveTest(ktFile, testServices, moduleStructure, renderAllFiles = true) { firResolveSession -> when { Directives.RESOLVE_FILE_ANNOTATIONS in moduleStructure.allDirectives -> { val annotationContainer = firResolveSession.getOrBuildFirFile(ktFile).annotationsContainer!! diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTestCase.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTestCase.kt index 1535aed384c..6868df1a80e 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTestCase.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractFirLazyDeclarationResolveTestCase.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.LLFirResolveMultiDesignationCollector import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder.findElementIn +import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider import org.jetbrains.kotlin.analysis.utils.errors.requireIsInstance import org.jetbrains.kotlin.fir.FirElementWithResolveState import org.jetbrains.kotlin.fir.declarations.FirDeclaration @@ -46,6 +47,8 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiSi protected fun doLazyResolveTest( ktFile: KtFile, testServices: TestServices, + moduleStructure: TestModuleStructure, + renderAllFiles: Boolean, resolverProvider: (LLFirResolveSession) -> Pair Unit)>, ) { val resultBuilder = StringBuilder() @@ -54,10 +57,17 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiSi resolveWithClearCaches(ktFile) { firResolveSession -> checkSession(firResolveSession) - val firFile = firResolveSession.getOrBuildFirFile(ktFile) val (elementToResolve, resolver) = resolverProvider(firResolveSession) - val designations = LLFirResolveMultiDesignationCollector.getDesignationsToResolve(elementToResolve) - val filesToRender = listOf(firFile).plus(designations.map { it.firFile }).distinct() + val filesToRender = if (renderAllFiles) { + moduleStructure.modules + .flatMap(testServices.ktModuleProvider::getModuleFiles) + .mapNotNull { file -> (file as? KtFile)?.let { firResolveSession.getOrBuildFirFile(it) } } + } else { + val firFile = firResolveSession.getOrBuildFirFile(ktFile) + val designations = LLFirResolveMultiDesignationCollector.getDesignationsToResolve(elementToResolve) + listOf(firFile).plus(designations.map { it.firFile }).distinct() + } + val shouldRenderDeclaration = elementToResolve !is FirFile && filesToRender.all { file -> findElementIn(file) { it == elementToResolve diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractStdLibSourcesLazyDeclarationResolveTest.kt b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractStdLibSourcesLazyDeclarationResolveTest.kt index 0c5c6e0f2d6..41b1ddb6cce 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractStdLibSourcesLazyDeclarationResolveTest.kt +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/AbstractStdLibSourcesLazyDeclarationResolveTest.kt @@ -45,7 +45,7 @@ abstract class AbstractStdLibSourcesLazyDeclarationResolveTest : AbstractFirLazy val classDeclaration = findRegularClass(classId, module, resolveSession).findPsi() as KtClassOrObject val file = classDeclaration.containingFile as KtFile - doLazyResolveTest(file, testServices) { firSession -> + doLazyResolveTest(file, testServices, moduleStructure, renderAllFiles = false) { firSession -> val regularClass = findRegularClass(classId, module, firSession) val declarationToResolve = chooseMemberDeclarationIfNeeded(regularClass, moduleStructure, firSession) declarationToResolve.fir to fun(phase: FirResolvePhase) {