diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt index a86dee341ff..3a5af982c21 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt @@ -15,11 +15,11 @@ import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder import org.jetbrains.kotlin.fir.contracts.FirRawContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.annotationPlatformSupport import org.jetbrains.kotlin.fir.declarations.utils.getExplicitBackingField import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.impl.FirLazyDelegatedConstructorCall import org.jetbrains.kotlin.fir.extensions.registeredPluginAnnotations -import org.jetbrains.kotlin.fir.declarations.annotationPlatformSupport import org.jetbrains.kotlin.fir.scopes.kotlinScopeProvider import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirTransformer @@ -326,14 +326,22 @@ private abstract class FirLazyAnnotationTransformer : FirTransformer for (typeArgumentAnnotation in coneType.customAnnotations) { typeArgumentAnnotation.accept(this, data) } } - - return super.transformResolvedTypeRef(resolvedTypeRef, data) } override fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: FirLazyAnnotationTransformerData): FirStatement { diff --git a/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.kt b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.kt new file mode 100644 index 00000000000..3d35891bac1 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.kt @@ -0,0 +1,4 @@ +annotation class Anno +interface Foo + +class MyClass : @Anno(Foo) Foo \ No newline at end of file diff --git a/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.txt b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.txt new file mode 100644 index 00000000000..60afdc0709d --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.txt @@ -0,0 +1,237 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + } + public? final? [ResolvedTo(RAW_FIR)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + } + public? final? [ResolvedTo(RAW_FIR)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + } + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { + } + public? final? [ResolvedTo(COMPANION_GENERATION)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface Foo : R|kotlin/Any| { + } + public? final? [ResolvedTo(SUPER_TYPES)] class MyClass : R|@R|Anno|(LAZY_EXPRESSION) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface Foo : R|kotlin/Any| { + } + public? final? [ResolvedTo(TYPES)] class MyClass : R|@R|Anno|(LAZY_EXPRESSION) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class MyClass : R|@R|Anno|(LAZY_EXPRESSION) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class MyClass : R|@R|Anno|(LAZY_EXPRESSION) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] class MyClass : R|@R|Anno|(Q|Foo|) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(CONTRACTS)] class MyClass : R|@R|Anno|(Q|Foo|) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class MyClass : R|@R|Anno|(Q|Foo|) Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] class MyClass : R|@R|Anno|() Foo| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCall.kt + public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor(): R|Anno| { + LAZY_super + } + + } + public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(BODY_RESOLVE)] class MyClass : R|@R|Anno|() Foo| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + super() + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] annotationWithArgumentInsideSuperTypeCall.kt + public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor(): R|Anno| { + super() + } + + } + public abstract [ResolvedTo(BODY_RESOLVE)] interface Foo : R|kotlin/Any| { + } + public final [ResolvedTo(BODY_RESOLVE)] class MyClass : R|@R|Anno|() Foo| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.kt b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.kt new file mode 100644 index 00000000000..0e194641ae1 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.kt @@ -0,0 +1 @@ +class MyClass : @Anno(UnresolvedClass) Foo \ No newline at end of file diff --git a/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.txt b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.txt new file mode 100644 index 00000000000..e0754ddf5a1 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.txt @@ -0,0 +1,125 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public? final? [ResolvedTo(RAW_FIR)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public? final? [ResolvedTo(RAW_FIR)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public? final? [ResolvedTo(COMPANION_GENERATION)] class MyClass : @Anno[Unresolved](LAZY_EXPRESSION) Foo { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public? final? [ResolvedTo(SUPER_TYPES)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public? final? [ResolvedTo(TYPES)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(STATUS)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(CONTRACTS)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] class MyClass : { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + LAZY_super<> + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(BODY_RESOLVE)] class MyClass : { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + super() + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] annotationWithArgumentInsideSuperTypeCallUnresolved.kt + public final [ResolvedTo(BODY_RESOLVE)] class MyClass : { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=MyClass] constructor(): R|MyClass| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.kt b/analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.kt new file mode 100644 index 00000000000..77a3a2e73b4 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.kt @@ -0,0 +1,3 @@ +fun foo(a: @Anno(Foo) Foo): @Anno(Foo) Foo { + +} diff --git a/analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.txt b/analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.txt new file mode 100644 index 00000000000..af2d580e932 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.txt @@ -0,0 +1,60 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] unresolvedAnnotationOnFunctionType.kt + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] a: @Anno[Unresolved](LAZY_EXPRESSION) Foo): @Anno[Unresolved](LAZY_EXPRESSION) Foo { LAZY_BLOCK } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] a: @Anno[Unresolved](LAZY_EXPRESSION) Foo): @Anno[Unresolved](LAZY_EXPRESSION) Foo { LAZY_BLOCK } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun foo([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] a: @Anno[Unresolved](LAZY_EXPRESSION) Foo): @Anno[Unresolved](LAZY_EXPRESSION) Foo { LAZY_BLOCK } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public? final? [ResolvedTo(COMPANION_GENERATION)] fun foo([ResolvedTo(COMPANION_GENERATION)] a: @Anno[Unresolved](LAZY_EXPRESSION) Foo): @Anno[Unresolved](LAZY_EXPRESSION) Foo { LAZY_BLOCK } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public? final? [ResolvedTo(SUPER_TYPES)] fun foo([ResolvedTo(SUPER_TYPES)] a: @Anno[Unresolved](LAZY_EXPRESSION) Foo): @Anno[Unresolved](LAZY_EXPRESSION) Foo { LAZY_BLOCK } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public? final? [ResolvedTo(TYPES)] fun foo([ResolvedTo(TYPES)] a: ): { LAZY_BLOCK } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(STATUS)] fun foo([ResolvedTo(STATUS)] a: ): { LAZY_BLOCK } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun foo([ResolvedTo(EXPECT_ACTUAL_MATCHING)] a: ): { LAZY_BLOCK } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] fun foo([ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] a: ): { LAZY_BLOCK } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(CONTRACTS)] fun foo([ResolvedTo(CONTRACTS)] a: ): { + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun foo([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] a: ): { + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] fun foo([ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] a: ): { + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] a: ): { + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] unresolvedAnnotationOnFunctionType.kt + public final [ResolvedTo(BODY_RESOLVE)] fun foo([ResolvedTo(BODY_RESOLVE)] a: ): { + } diff --git a/analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.kt b/analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.kt new file mode 100644 index 00000000000..0134a8cfddb --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.kt @@ -0,0 +1 @@ +val prop: @Anno(Foo) Foo \ No newline at end of file diff --git a/analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.txt b/analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.txt new file mode 100644 index 00000000000..fb2c270956b --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.txt @@ -0,0 +1,69 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] unresolvedAnnotationOnPropertyType.kt + public? final? [ResolvedTo(RAW_FIR)] val prop: @Anno[Unresolved](LAZY_EXPRESSION) Foo + public? [ResolvedTo(RAW_FIR)] get(): @Anno[Unresolved](LAZY_EXPRESSION) Foo + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public? final? [ResolvedTo(RAW_FIR)] val prop: @Anno[Unresolved](LAZY_EXPRESSION) Foo + public? [ResolvedTo(RAW_FIR)] get(): @Anno[Unresolved](LAZY_EXPRESSION) Foo + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val prop: @Anno[Unresolved](LAZY_EXPRESSION) Foo + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): @Anno[Unresolved](LAZY_EXPRESSION) Foo + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public? final? [ResolvedTo(COMPANION_GENERATION)] val prop: @Anno[Unresolved](LAZY_EXPRESSION) Foo + public? [ResolvedTo(COMPANION_GENERATION)] get(): @Anno[Unresolved](LAZY_EXPRESSION) Foo + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public? final? [ResolvedTo(SUPER_TYPES)] val prop: @Anno[Unresolved](LAZY_EXPRESSION) Foo + public? [ResolvedTo(SUPER_TYPES)] get(): @Anno[Unresolved](LAZY_EXPRESSION) Foo + +TYPES: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public? final? [ResolvedTo(TYPES)] val prop: + public? [ResolvedTo(TYPES)] get(): + +STATUS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(STATUS)] val prop: + public [ResolvedTo(STATUS)] get(): + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val prop: + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] val prop: + public [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] get(): + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(CONTRACTS)] val prop: + public [ResolvedTo(CONTRACTS)] get(): + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val prop: + public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] get(): + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(BODY_RESOLVE)] val prop: + public [ResolvedTo(BODY_RESOLVE)] get(): + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] unresolvedAnnotationOnPropertyType.kt + public final [ResolvedTo(BODY_RESOLVE)] val prop: + public [ResolvedTo(BODY_RESOLVE)] get(): diff --git a/analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.kt b/analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.kt new file mode 100644 index 00000000000..24e2ca9bdf6 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.kt @@ -0,0 +1 @@ +val myAlias = @Anno(Foo) Foo \ No newline at end of file diff --git a/analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.txt b/analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.txt new file mode 100644 index 00000000000..08d61cf3840 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.txt @@ -0,0 +1,69 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] unresolvedAnnotationOnTypeAlias.kt + public? final? [ResolvedTo(RAW_FIR)] val myAlias: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public? final? [ResolvedTo(RAW_FIR)] val myAlias: = LAZY_EXPRESSION + public? [ResolvedTo(RAW_FIR)] get(): + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val myAlias: = LAZY_EXPRESSION + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] get(): + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public? final? [ResolvedTo(COMPANION_GENERATION)] val myAlias: = LAZY_EXPRESSION + public? [ResolvedTo(COMPANION_GENERATION)] get(): + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public? final? [ResolvedTo(SUPER_TYPES)] val myAlias: = LAZY_EXPRESSION + public? [ResolvedTo(SUPER_TYPES)] get(): + +TYPES: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public? final? [ResolvedTo(TYPES)] val myAlias: = LAZY_EXPRESSION + public? [ResolvedTo(TYPES)] get(): + +STATUS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(STATUS)] val myAlias: = LAZY_EXPRESSION + public [ResolvedTo(STATUS)] get(): + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val myAlias: = LAZY_EXPRESSION + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] val myAlias: = LAZY_EXPRESSION + public [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] get(): + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(CONTRACTS)] val myAlias: = @Anno[Unresolved](Foo#) Foo# + public [ResolvedTo(CONTRACTS)] get(): + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val myAlias: = @[Types]() # + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val myAlias: = @[Types]() # + public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] get(): + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(BODY_RESOLVE)] val myAlias: = @[Types]() # + public [ResolvedTo(BODY_RESOLVE)] get(): + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] unresolvedAnnotationOnTypeAlias.kt + public final [ResolvedTo(BODY_RESOLVE)] val myAlias: = @[Types]() # + public [ResolvedTo(BODY_RESOLVE)] get(): diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java index d1b378cc1f3..e3bc39d6f5f 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java @@ -597,6 +597,18 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/lazyResolve/classes"), Pattern.compile("^(.+)\\.(kt)$"), null, true); } + @Test + @TestMetadata("annotationWithArgumentInsideSuperTypeCall.kt") + public void testAnnotationWithArgumentInsideSuperTypeCall() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.kt"); + } + + @Test + @TestMetadata("annotationWithArgumentInsideSuperTypeCallUnresolved.kt") + public void testAnnotationWithArgumentInsideSuperTypeCallUnresolved() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.kt"); + } + @Test @TestMetadata("annotationWithTarget.kt") public void testAnnotationWithTarget() throws Exception { @@ -766,6 +778,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst public void testSimpleLoopInOverride2() throws Exception { runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/simpleLoopInOverride2.kt"); } + + @Test + @TestMetadata("unresolvedAnnotationOnFunctionType.kt") + public void testUnresolvedAnnotationOnFunctionType() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.kt"); + } } @Nested @@ -876,6 +894,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst public void testSimpleLoopInOverride2() throws Exception { runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/simpleLoopInOverride2.kt"); } + + @Test + @TestMetadata("unresolvedAnnotationOnPropertyType.kt") + public void testUnresolvedAnnotationOnPropertyType() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.kt"); + } } @Nested @@ -962,5 +986,11 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst public void testTypeAliasWithTypeParameters() throws Exception { runTest("analysis/low-level-api-fir/testData/lazyResolve/typeAliases/typeAliasWithTypeParameters.kt"); } + + @Test + @TestMetadata("unresolvedAnnotationOnTypeAlias.kt") + public void testUnresolvedAnnotationOnTypeAlias() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.kt"); + } } } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java index e274329e7d8..6207f88bd6a 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java @@ -597,6 +597,18 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/lazyResolve/classes"), Pattern.compile("^(.+)\\.(kt)$"), null, true); } + @Test + @TestMetadata("annotationWithArgumentInsideSuperTypeCall.kt") + public void testAnnotationWithArgumentInsideSuperTypeCall() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCall.kt"); + } + + @Test + @TestMetadata("annotationWithArgumentInsideSuperTypeCallUnresolved.kt") + public void testAnnotationWithArgumentInsideSuperTypeCallUnresolved() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/classes/annotationWithArgumentInsideSuperTypeCallUnresolved.kt"); + } + @Test @TestMetadata("annotationWithTarget.kt") public void testAnnotationWithTarget() throws Exception { @@ -766,6 +778,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou public void testSimpleLoopInOverride2() throws Exception { runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/simpleLoopInOverride2.kt"); } + + @Test + @TestMetadata("unresolvedAnnotationOnFunctionType.kt") + public void testUnresolvedAnnotationOnFunctionType() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/unresolvedAnnotationOnFunctionType.kt"); + } } @Nested @@ -876,6 +894,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou public void testSimpleLoopInOverride2() throws Exception { runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/simpleLoopInOverride2.kt"); } + + @Test + @TestMetadata("unresolvedAnnotationOnPropertyType.kt") + public void testUnresolvedAnnotationOnPropertyType() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/unresolvedAnnotationOnPropertyType.kt"); + } } @Nested @@ -962,5 +986,11 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou public void testTypeAliasWithTypeParameters() throws Exception { runTest("analysis/low-level-api-fir/testData/lazyResolve/typeAliases/typeAliasWithTypeParameters.kt"); } + + @Test + @TestMetadata("unresolvedAnnotationOnTypeAlias.kt") + public void testUnresolvedAnnotationOnTypeAlias() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/typeAliases/unresolvedAnnotationOnTypeAlias.kt"); + } } }