From 1c456b216ba73e70cde983d67c32e4ceb7ed9e23 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Tue, 11 Apr 2023 18:30:51 +0200 Subject: [PATCH] [AA FIR] add lazy resolve test on java target ^KT-57849 --- .../annotationClassWithJavaTarget.kt | 4 + ...onClassWithJavaTarget.out_of_src_roots.txt | 139 ++++++++++++++++++ .../annotationClassWithJavaTarget.txt | 139 ++++++++++++++++++ ...otLazyDeclarationResolveTestGenerated.java | 6 + ...ceLazyDeclarationResolveTestGenerated.java | 6 + 5 files changed, 294 insertions(+) create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.kt create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.out_of_src_roots.txt create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.txt diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.kt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.kt new file mode 100644 index 00000000000..e1880eea140 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.kt @@ -0,0 +1,4 @@ +import java.lang.annotation.ElementType + +@java.lang.annotation.Target(ElementType.TYPE_USE) +annotation class ResolveMe \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.out_of_src_roots.txt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.out_of_src_roots.txt new file mode 100644 index 00000000000..d9e9077d5bf --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.out_of_src_roots.txt @@ -0,0 +1,139 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](ElementType#.TYPE_USE#) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](ElementType#.TYPE_USE#) public? final? [ResolvedTo(COMPANION_GENERATION)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](ElementType#.TYPE_USE#) public? final? [ResolvedTo(SUPER_TYPES)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types](ElementType#.TYPE_USE#) public? final? [ResolvedTo(TYPES)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(STATUS)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(CONTRACTS)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types]() public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @[Types]() public final [ResolvedTo(BODY_RESOLVE)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + super() + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + @[Types]() public final [ResolvedTo(BODY_RESOLVE)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + super() + } + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.txt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.txt new file mode 100644 index 00000000000..0d7b3f34d4c --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.txt @@ -0,0 +1,139 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](ElementType#.TYPE_USE#) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](ElementType#.TYPE_USE#) public? final? [ResolvedTo(COMPANION_GENERATION)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @java.lang.annotation.Target[Unresolved](ElementType#.TYPE_USE#) public? final? [ResolvedTo(SUPER_TYPES)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](ElementType#.TYPE_USE#) public? final? [ResolvedTo(TYPES)] annotation class ResolveMe : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(STATUS)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](ElementType#.TYPE_USE#) public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](Q|java/lang/annotation/ElementType|.TYPE_USE#) public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](Q|java/lang/annotation/ElementType|.TYPE_USE#) public final [ResolvedTo(CONTRACTS)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](Q|java/lang/annotation/ElementType|.TYPE_USE#) public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](value = vararg(Q|java/lang/annotation/ElementType|.#)) public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + LAZY_super + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(RAW_FIR)] annotations container + @R|java/lang/annotation/Target|[Types](value = vararg(Q|java/lang/annotation/ElementType|.#)) public final [ResolvedTo(BODY_RESOLVE)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + super() + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] annotationClassWithJavaTarget.kt + [ResolvedTo(BODY_RESOLVE)] annotations container + @R|java/lang/annotation/Target|[Types](value = vararg(Q|java/lang/annotation/ElementType|.#)) public final [ResolvedTo(BODY_RESOLVE)] annotation class ResolveMe : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=ResolveMe] constructor(): R|ResolveMe| { + super() + } + + } 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 da1ab460100..f8f25eea843 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 @@ -24,6 +24,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/lazyResolve"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("annotationClassWithJavaTarget.kt") + public void testAnnotationClassWithJavaTarget() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.kt"); + } + @Test @TestMetadata("annotationFromImplicitJavaType.kt") public void testAnnotationFromImplicitJavaType() throws Exception { 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 eefac6ea45d..6de3c286cd4 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 @@ -24,6 +24,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/lazyResolve"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("annotationClassWithJavaTarget.kt") + public void testAnnotationClassWithJavaTarget() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/annotationClassWithJavaTarget.kt"); + } + @Test @TestMetadata("annotationFromImplicitJavaType.kt") public void testAnnotationFromImplicitJavaType() throws Exception {