From bc5c1b2a6ca46268a4217226e79e3f86c3aaf612 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 23 Mar 2023 09:05:19 +0100 Subject: [PATCH] [LL FIR] add test on lazy resolve annotation with type argument ^KT-56543 --- .../lazyResolve/annotationWithTypeArgument.kt | 8 + .../annotationWithTypeArgument.txt | 202 ++++++++++++++++++ ...otLazyDeclarationResolveTestGenerated.java | 6 + ...ceLazyDeclarationResolveTestGenerated.java | 6 + 4 files changed, 222 insertions(+) create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.kt create mode 100644 analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.txt diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.kt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.kt new file mode 100644 index 00000000000..42e4079011d --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.kt @@ -0,0 +1,8 @@ +package one + +annotation class Anno(val value: KClass) + +@Anno(Int::class) +fun resolveMe() { + +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.txt b/analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.txt new file mode 100644 index 00000000000..7fb01e7ed55 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.txt @@ -0,0 +1,202 @@ +RAW_FIR: +FILE: [RAW_FIR] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @Anno(LAZY_EXPRESSION) public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +IMPORTS: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @Anno(LAZY_EXPRESSION) public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @Anno(LAZY_EXPRESSION) public? final? [COMPILER_REQUIRED_ANNOTATIONS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +COMPANION_GENERATION: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @Anno(LAZY_EXPRESSION) public? final? [COMPANION_GENERATION] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +SUPER_TYPES: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @Anno(LAZY_EXPRESSION) public? final? [SUPER_TYPES] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +TYPES: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @R|one/Anno|(LAZY_EXPRESSION) public? final? [TYPES] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +STATUS: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @R|one/Anno|(LAZY_EXPRESSION) public final [STATUS] fun resolveMe(): R|kotlin/Unit| { LAZY_BLOCK } + +EXPECT_ACTUAL_MATCHING: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @R|one/Anno|((Int#)) public final [EXPECT_ACTUAL_MATCHING] fun resolveMe(): R|kotlin/Unit| { + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @R|one/Anno|((Q|kotlin/Int|)) public final [ARGUMENTS_OF_ANNOTATIONS] fun resolveMe(): R|kotlin/Unit| { + } + +CONTRACTS: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @R|one/Anno|((Q|kotlin/Int|)) public final [CONTRACTS] fun resolveMe(): R|kotlin/Unit| { + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public? final? [RAW_FIR] annotation class Anno<[RAW_FIR] T : Number> : R|kotlin/Annotation| { + public? [RAW_FIR] [ContainingClassKey=Anno] constructor<[RAW_FIR] T : Number>([RAW_FIR] [CorrespondingProperty=one/Anno.value] value: KClass): R|one/Anno| { + LAZY_super + } + + public? final? [RAW_FIR] [IsFromPrimaryConstructor=true] val value: KClass = R|/value| + public? [RAW_FIR] [ContainingClassKey=Anno] get(): KClass + + } + @R|one/Anno|((Q|kotlin/Int|)) public final [IMPLICIT_TYPES_BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public final [TYPES] annotation class Anno<[TYPES] T : R|kotlin/Number|> : R|kotlin/Annotation| { + public [STATUS] [ContainingClassKey=Anno] constructor<[TYPES] T : R|kotlin/Number|>([STATUS] [CorrespondingProperty=one/Anno.value] value: ): R|one/Anno| { + LAZY_super + } + + public final [TYPES] [IsFromPrimaryConstructor=true] val value: = R|/value| + public [TYPES] [ContainingClassKey=Anno] get(): + + } + @R|one/Anno|(value = (Q|kotlin/Int|)) public final [ANNOTATIONS_ARGUMENTS_MAPPING] fun resolveMe(): R|kotlin/Unit| { + } + +BODY_RESOLVE: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [RAW_FIR] annotations container + public final [TYPES] annotation class Anno<[TYPES] T : R|kotlin/Number|> : R|kotlin/Annotation| { + public [STATUS] [ContainingClassKey=Anno] constructor<[TYPES] T : R|kotlin/Number|>([STATUS] [CorrespondingProperty=one/Anno.value] value: ): R|one/Anno| { + LAZY_super + } + + public final [TYPES] [IsFromPrimaryConstructor=true] val value: = R|/value| + public [TYPES] [ContainingClassKey=Anno] get(): + + } + @R|one/Anno|(value = (Q|kotlin/Int|)) public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } + +FILE RAW TO BODY: +FILE: [IMPORTS] annotationWithTypeArgument.kt + [BODY_RESOLVE] annotations container + public final [BODY_RESOLVE] annotation class Anno<[BODY_RESOLVE] T : R|kotlin/Number|> : R|kotlin/Annotation| { + public [BODY_RESOLVE] [ContainingClassKey=Anno] constructor<[BODY_RESOLVE] T : R|kotlin/Number|>([BODY_RESOLVE] [CorrespondingProperty=one/Anno.value] value: ): R|one/Anno| { + super() + } + + public final [BODY_RESOLVE] [IsFromPrimaryConstructor=true] val value: = R|/value| + public [BODY_RESOLVE] [ContainingClassKey=Anno] get(): + + } + @R|one/Anno|(value = (Q|kotlin/Int|)) public final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| { + } 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 b1bacb03e04..9d282d27971 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 @@ -30,6 +30,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.kt"); } + @Test + @TestMetadata("annotationWithTypeArgument.kt") + public void testAnnotationWithTypeArgument() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.kt"); + } + @Test @TestMetadata("annotations.kt") public void testAnnotations() 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 cd299f50029..fe63154fec9 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 @@ -30,6 +30,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testdata/lazyResolve/annotationParameters.kt"); } + @Test + @TestMetadata("annotationWithTypeArgument.kt") + public void testAnnotationWithTypeArgument() throws Exception { + runTest("analysis/low-level-api-fir/testdata/lazyResolve/annotationWithTypeArgument.kt"); + } + @Test @TestMetadata("annotations.kt") public void testAnnotations() throws Exception {