From 2ee9fcab9b55a57de012f63807394147d2ee3855 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 10 Nov 2023 17:16:12 +0100 Subject: [PATCH] [FIR] add diagnostic test for annotations inside type parameters ^KT-63396 --- .../functions/typeParameterAnnotations.kt | 11 + .../functions/typeParameterAnnotations.txt | 347 +++++++++++++++++ .../properties/typeParameterAnnotations.kt | 10 + .../properties/typeParameterAnnotations.txt | 360 ++++++++++++++++++ ...otLazyDeclarationResolveTestGenerated.java | 12 + ...ceLazyDeclarationResolveTestGenerated.java | 12 + ...CompilerTestFE10TestdataTestGenerated.java | 6 + ...sticCompilerFE10TestDataTestGenerated.java | 6 + ...eeOldFrontendDiagnosticsTestGenerated.java | 6 + ...siOldFrontendDiagnosticsTestGenerated.java | 6 + .../typeParameterAnnotations.fir.kt | 15 + .../annotations/typeParameterAnnotations.kt | 15 + .../test/runners/DiagnosticTestGenerated.java | 6 + 13 files changed, 812 insertions(+) create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.txt create mode 100644 compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.fir.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt diff --git a/analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.kt b/analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.kt new file mode 100644 index 00000000000..86d38442794 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.kt @@ -0,0 +1,11 @@ +@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER) +annotation class Anno(val position: String) + +interface OriginalInterface { + @Anno("explicitType $prop") + fun <@Anno("type param $prop") F : @Anno("bound $prop") List<@Anno("nested bound $prop") List<@Anno("nested nested bound $prop") String>>> @receiver:Anno("receiver annotation: $prop") @Anno("receiver type $prop") Collection<@Anno("nested receiver type $prop") List<@Anno("nested nested receiver type $prop")String>>.explicitType(@Anno("parameter annotation $prop") param: @Anno("parameter type $prop") ListIterator<@Anno("nested parameter type $prop") List<@Anno("nested nested parameter type $prop")String>>): @Anno("explicitType return type $prop") List<@Anno("explicitType nested return type $prop") List<@Anno("explicitType nested nested return type $prop") Int>> = 0 + + companion object { + private const val prop = 0 + } +} diff --git a/analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.txt b/analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.txt new file mode 100644 index 00000000000..68dc68c2a75 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.txt @@ -0,0 +1,347 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + @Anno[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] fun <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(RAW_FIR)] F : @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>> @RECEIVER:Anno[Unresolved](LAZY_EXPRESSION) @Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>.explicitType([ResolvedTo(RAW_FIR)] @Anno[Unresolved](LAZY_EXPRESSION) param: @Anno[Unresolved](LAZY_EXPRESSION) ListIterator<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>): @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Int>> { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + @Anno[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] fun <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(RAW_FIR)] F : @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>> @RECEIVER:Anno[Unresolved](LAZY_EXPRESSION) @Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>.explicitType([ResolvedTo(RAW_FIR)] @Anno[Unresolved](LAZY_EXPRESSION) param: @Anno[Unresolved](LAZY_EXPRESSION) ListIterator<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>): @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Int>> { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + @Anno[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] F : @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>> @RECEIVER:Anno[Unresolved](LAZY_EXPRESSION) @Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>.explicitType([ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] @Anno[Unresolved](LAZY_EXPRESSION) param: @Anno[Unresolved](LAZY_EXPRESSION) ListIterator<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>): @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Int>> { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + @Anno[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(COMPANION_GENERATION)] fun <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(COMPANION_GENERATION)] F : @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>> @RECEIVER:Anno[Unresolved](LAZY_EXPRESSION) @Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>.explicitType([ResolvedTo(COMPANION_GENERATION)] @Anno[Unresolved](LAZY_EXPRESSION) param: @Anno[Unresolved](LAZY_EXPRESSION) ListIterator<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>): @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Int>> { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface OriginalInterface : R|kotlin/Any| { + @Anno[Unresolved](LAZY_EXPRESSION) public? final? [ResolvedTo(SUPER_TYPES)] fun <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(SUPER_TYPES)] F : @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>> @RECEIVER:Anno[Unresolved](LAZY_EXPRESSION) @Anno[Unresolved](LAZY_EXPRESSION) Collection<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>.explicitType([ResolvedTo(SUPER_TYPES)] @Anno[Unresolved](LAZY_EXPRESSION) param: @Anno[Unresolved](LAZY_EXPRESSION) ListIterator<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) String>>): @Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) List<@Anno[Unresolved](LAZY_EXPRESSION) Int>> { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(TYPES)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](LAZY_EXPRESSION) public? final? [ResolvedTo(TYPES)] fun <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(TYPES)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested bound ), prop#)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](LAZY_EXPRESSION) R|@R|Anno|((String(receiver type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested receiver type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested receiver type ), prop#)) kotlin/String>>|.explicitType([ResolvedTo(TYPES)] @R|Anno|[Types](LAZY_EXPRESSION) param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/ListIterator<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>|): R|@R|Anno|((String(explicitType return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested nested return type ), prop#)) kotlin/Int>>| { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](LAZY_EXPRESSION) public open [ResolvedTo(STATUS)] fun <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(STATUS)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested bound ), prop#)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](LAZY_EXPRESSION) R|@R|Anno|((String(receiver type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested receiver type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested receiver type ), prop#)) kotlin/String>>|.explicitType([ResolvedTo(STATUS)] @R|Anno|[Types](LAZY_EXPRESSION) param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/ListIterator<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>|): R|@R|Anno|((String(explicitType return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested nested return type ), prop#)) kotlin/Int>>| { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](LAZY_EXPRESSION) public open [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(EXPECT_ACTUAL_MATCHING)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested bound ), prop#)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](LAZY_EXPRESSION) R|@R|Anno|((String(receiver type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested receiver type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested receiver type ), prop#)) kotlin/String>>|.explicitType([ResolvedTo(EXPECT_ACTUAL_MATCHING)] @R|Anno|[Types](LAZY_EXPRESSION) param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/ListIterator<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>|): R|@R|Anno|((String(explicitType return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested nested return type ), prop#)) kotlin/Int>>| { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](LAZY_EXPRESSION) public open [ResolvedTo(CONTRACTS)] fun <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(CONTRACTS)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested bound ), prop#)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](LAZY_EXPRESSION) R|@R|Anno|((String(receiver type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested receiver type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested receiver type ), prop#)) kotlin/String>>|.explicitType([ResolvedTo(CONTRACTS)] @R|Anno|[Types](LAZY_EXPRESSION) param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/ListIterator<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>|): R|@R|Anno|((String(explicitType return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested nested return type ), prop#)) kotlin/Int>>| { + ^explicitType IntegerLiteral(0) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(STATUS)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] get(): + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](LAZY_EXPRESSION) public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested bound ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested bound ), prop#)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](LAZY_EXPRESSION) R|@R|Anno|((String(receiver type ), prop#)) kotlin/collections/Collection<@R|Anno|((String(nested receiver type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested receiver type ), prop#)) kotlin/String>>|.explicitType([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] @R|Anno|[Types](LAZY_EXPRESSION) param: R|@R|Anno|((String(parameter type ), prop#)) kotlin/collections/ListIterator<@R|Anno|((String(nested parameter type ), prop#)) kotlin/collections/List<@R|Anno|((String(nested nested parameter type ), prop#)) kotlin/String>>|): R|@R|Anno|((String(explicitType return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested return type ), prop#)) kotlin/collections/List<@R|Anno|((String(explicitType nested nested return type ), prop#)) kotlin/Int>>| { + ^explicitType IntegerLiteral(0) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(STATUS)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] get(): + + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](position = (String(explicitType ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) public open [ResolvedTo(ANNOTATION_ARGUMENTS)] fun <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(ANNOTATION_ARGUMENTS)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested bound ), #)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/String>>|.explicitType([ResolvedTo(ANNOTATION_ARGUMENTS)] @R|Anno|[Types](position = (String(parameter annotation ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) param: R|@R|Anno|(position = (String(parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/ListIterator<@R|Anno|(position = (String(nested parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/String>>|): R|@R|Anno|(position = (String(explicitType return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(explicitType nested return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(explicitType nested nested return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int>>| { + ^explicitType IntegerLiteral(0) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) + private [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Companion] get(): R|kotlin/Int| + + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](position = (String(explicitType ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) public open [ResolvedTo(BODY_RESOLVE)] fun <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested bound ), #)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/String>>|.explicitType([ResolvedTo(BODY_RESOLVE)] @R|Anno|[Types](position = (String(parameter annotation ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) param: R|@R|Anno|(position = (String(parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/ListIterator<@R|Anno|(position = (String(nested parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/String>>|): R|@R|Anno|(position = (String(explicitType return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(explicitType nested return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(explicitType nested nested return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int>>| { + ^explicitType Int(0) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) + private [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Companion] get(): R|kotlin/Int| + + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|)) public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public abstract [ResolvedTo(BODY_RESOLVE)] interface OriginalInterface : R|kotlin/Any| { + @R|Anno|[Types](position = (String(explicitType ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) public open [ResolvedTo(BODY_RESOLVE)] fun <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested bound ), #)) kotlin/collections/List<@R|Anno|(position = (String(nested nested bound ), #)) kotlin/String>>|> @RECEIVER:R|Anno|[Types](position = (String(receiver annotation: ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) R|@R|Anno|(position = (String(receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/Collection<@R|Anno|(position = (String(nested receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested receiver type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/String>>|.explicitType([ResolvedTo(BODY_RESOLVE)] @R|Anno|[Types](position = (String(parameter annotation ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) param: R|@R|Anno|(position = (String(parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/ListIterator<@R|Anno|(position = (String(nested parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(nested nested parameter type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/String>>|): R|@R|Anno|(position = (String(explicitType return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(explicitType nested return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/collections/List<@R|Anno|(position = (String(explicitType nested nested return type ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int>>| { + ^explicitType Int(0) + } + + public final companion [ResolvedTo(BODY_RESOLVE)] object Companion : R|kotlin/Any| { + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + super() + } + + private final const [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Companion] get(): R|kotlin/Int| + + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.kt b/analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.kt new file mode 100644 index 00000000000..8c017691a0c --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.kt @@ -0,0 +1,10 @@ +@Target(AnnotationTarget.TYPE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER) +annotation class Anno(val position: String) + +interface OriginalInterface { + val <@Anno("type param $prop") F : @Anno("bound $prop") Number> explicitType: @Anno("bound $prop") Int get() = 1 + + companion object { + private const val prop = 0 + } +} diff --git a/analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.txt b/analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.txt new file mode 100644 index 00000000000..002576c43ef --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.txt @@ -0,0 +1,360 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] val <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(RAW_FIR)] F : @Anno[Unresolved](LAZY_EXPRESSION) Number> explicitType: @Anno[Unresolved](LAZY_EXPRESSION) Int + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalInterface] get(): @Anno[Unresolved](LAZY_EXPRESSION) Int { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] val <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(RAW_FIR)] F : @Anno[Unresolved](LAZY_EXPRESSION) Number> explicitType: @Anno[Unresolved](LAZY_EXPRESSION) Int + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=OriginalInterface] get(): @Anno[Unresolved](LAZY_EXPRESSION) Int { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] val <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] F : @Anno[Unresolved](LAZY_EXPRESSION) Number> explicitType: @Anno[Unresolved](LAZY_EXPRESSION) Int + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=OriginalInterface] get(): @Anno[Unresolved](LAZY_EXPRESSION) Int { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(RAW_FIR)] interface OriginalInterface : R|kotlin/Any| { + public? final? [ResolvedTo(COMPANION_GENERATION)] val <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(COMPANION_GENERATION)] F : @Anno[Unresolved](LAZY_EXPRESSION) Number> explicitType: @Anno[Unresolved](LAZY_EXPRESSION) Int + public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=OriginalInterface] get(): @Anno[Unresolved](LAZY_EXPRESSION) Int { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @Target[Unresolved](LAZY_EXPRESSION, LAZY_EXPRESSION, LAZY_EXPRESSION) public? final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(SUPER_TYPES)] interface OriginalInterface : R|kotlin/Any| { + public? final? [ResolvedTo(SUPER_TYPES)] val <@Anno[Unresolved](LAZY_EXPRESSION) [ResolvedTo(SUPER_TYPES)] F : @Anno[Unresolved](LAZY_EXPRESSION) Number> explicitType: @Anno[Unresolved](LAZY_EXPRESSION) Int + public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=OriginalInterface] get(): @Anno[Unresolved](LAZY_EXPRESSION) Int { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public? final? [ResolvedTo(TYPES)] interface OriginalInterface : R|kotlin/Any| { + public? final? [ResolvedTo(TYPES)] val <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(TYPES)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/Number|> explicitType: R|@R|Anno|((String(bound ), prop#)) kotlin/Int| + public? [ResolvedTo(TYPES)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|((String(bound ), prop#)) kotlin/Int| { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] val <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(STATUS)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/Number|> explicitType: R|@R|Anno|((String(bound ), prop#)) kotlin/Int| + public [ResolvedTo(STATUS)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|((String(bound ), prop#)) kotlin/Int| { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(EXPECT_ACTUAL_MATCHING)] val <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(EXPECT_ACTUAL_MATCHING)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/Number|> explicitType: R|@R|Anno|((String(bound ), prop#)) kotlin/Int| + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|((String(bound ), prop#)) kotlin/Int| { LAZY_BLOCK } + + public? final? companion [ResolvedTo(RAW_FIR)] object Companion : R|kotlin/Any| { + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final? const [ResolvedTo(RAW_FIR)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(RAW_FIR)] [ContainingClassKey=Companion] get(): + + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(CONTRACTS)] val <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(CONTRACTS)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/Number|> explicitType: R|@R|Anno|((String(bound ), prop#)) kotlin/Int| + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|((String(bound ), prop#)) kotlin/Int| { + ^ IntegerLiteral(1) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(STATUS)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] get(): + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[CompilerRequiredAnnotations](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Anno : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.position] position: String): R|Anno| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true] val position: String = R|/position| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] get(): String + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val <@R|Anno|[Types](LAZY_EXPRESSION) [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] F : R|@R|Anno|((String(bound ), prop#)) kotlin/Number|> explicitType: R|@R|Anno|((String(bound ), prop#)) kotlin/Int| + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|((String(bound ), prop#)) kotlin/Int| { + ^ IntegerLiteral(1) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(STATUS)] val prop: = LAZY_EXPRESSION + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] get(): + + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(ANNOTATION_ARGUMENTS)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(ANNOTATION_ARGUMENTS)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int| + public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int| { + ^ IntegerLiteral(1) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) + private [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Companion] get(): R|kotlin/Int| + + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] constructor([ResolvedTo(STATUS)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + LAZY_super + } + + public final [ResolvedTo(STATUS)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public abstract [ResolvedTo(STATUS)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int| { + ^ Int(1) + } + + public final companion [ResolvedTo(STATUS)] object Companion : R|kotlin/Any| { + private [ResolvedTo(STATUS)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + LAZY_super + } + + private final const [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) + private [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Companion] get(): R|kotlin/Int| + + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] typeParameterAnnotations.kt + @R|kotlin/annotation/Target|[Types](allowedTargets = vararg(Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.VALUE_PARAMETER|, Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE_PARAMETER|)) public final [ResolvedTo(BODY_RESOLVE)] annotation class Anno : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Anno.position] position: R|kotlin/String|): R|Anno| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true] val position: R|kotlin/String| = R|/position| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Anno] get(): R|kotlin/String| + + } + public abstract [ResolvedTo(BODY_RESOLVE)] interface OriginalInterface : R|kotlin/Any| { + public open [ResolvedTo(BODY_RESOLVE)] val <@R|Anno|[Types](position = (String(type param ), #)) [ResolvedTo(BODY_RESOLVE)] F : R|@R|Anno|(position = (String(bound ), #)) kotlin/Number|> explicitType: R|@R|Anno|(position = (String(bound ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=OriginalInterface] get(): R|@R|Anno|(position = (String(bound ), this@R|/OriginalInterface.Companion|.R|/OriginalInterface.Companion.prop|)) kotlin/Int| { + ^ Int(1) + } + + public final companion [ResolvedTo(BODY_RESOLVE)] object Companion : R|kotlin/Any| { + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Companion] constructor(): R|OriginalInterface.Companion| { + super() + } + + private final const [ResolvedTo(BODY_RESOLVE)] val prop: R|kotlin/Int| = Int(0) + private [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Companion] get(): R|kotlin/Int| + + } + + } 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 167daba9f10..e402995ce27 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 @@ -905,6 +905,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/typeArgumentInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typePropagationFromFunctionWithInaccessibleAnnotationArgument.kt") public void testTypePropagationFromFunctionWithInaccessibleAnnotationArgument() throws Exception { @@ -1081,6 +1087,12 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/simpleLoopInOverride2.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("unresolvedAnnotationOnPropertyType.kt") public void testUnresolvedAnnotationOnPropertyType() 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 b6289df717c..c01688cdc72 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 @@ -905,6 +905,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/typeArgumentInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/functions/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typePropagationFromFunctionWithInaccessibleAnnotationArgument.kt") public void testTypePropagationFromFunctionWithInaccessibleAnnotationArgument() throws Exception { @@ -1081,6 +1087,12 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/simpleLoopInOverride2.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("analysis/low-level-api-fir/testData/lazyResolve/properties/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("unresolvedAnnotationOnPropertyType.kt") public void testUnresolvedAnnotationOnPropertyType() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 79ea63c8468..f25abf4e6f7 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -2196,6 +2196,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/annotations/typeArgumentsInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typeParameterAsAnnotation.kt") public void testTypeParameterAsAnnotation() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index a445f814ddc..2afc8ccc625 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -2196,6 +2196,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/annotations/typeArgumentsInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typeParameterAsAnnotation.kt") public void testTypeParameterAsAnnotation() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index d1f1a2f235a..16ded5c931c 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -2190,6 +2190,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/annotations/typeArgumentsInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typeParameterAsAnnotation.kt") public void testTypeParameterAsAnnotation() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index d59f580174b..3927b54919d 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -2196,6 +2196,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/annotations/typeArgumentsInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typeParameterAsAnnotation.kt") public void testTypeParameterAsAnnotation() throws Exception { diff --git a/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.fir.kt b/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.fir.kt new file mode 100644 index 00000000000..23c066a9741 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.fir.kt @@ -0,0 +1,15 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER +// WITH_STDLIB + +@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER) +annotation class Anno(val position: String) + +interface OriginalInterface { + @Anno("explicitType $prop") + fun <@Anno("type param $prop") F : @Anno("bound $prop") List<@Anno("nested bound $prop") List<@Anno("nested nested bound $prop") String>>> @receiver:Anno("receiver annotation: $prop") @Anno("receiver type $prop") Collection<@Anno("nested receiver type $prop") List<@Anno("nested nested receiver type $prop")String>>.explicitType(@Anno("parameter annotation $prop") param: @Anno("parameter type $prop") ListIterator<@Anno("nested parameter type $prop") List<@Anno("nested nested parameter type $prop")String>>): @Anno("explicitType return type $prop") List<@Anno("explicitType nested return type $prop") List<@Anno("explicitType nested nested return type $prop") Int>> = emptyList() + val <@Anno("type param $prop") F : @Anno("bound $prop") Number> F.explicitType: @Anno("bound $prop") Int get() = 1 + + companion object { + private const val prop = 0 + } +} diff --git a/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt b/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt new file mode 100644 index 00000000000..52000449a82 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt @@ -0,0 +1,15 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER +// WITH_STDLIB + +@Target(AnnotationTarget.TYPE, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER) +annotation class Anno(val position: String) + +interface OriginalInterface { + @Anno("explicitType $prop") + fun <@Anno("type param $prop") F : @Anno("bound $prop") List<@Anno("nested bound $prop") List<@Anno("nested nested bound $prop") String>>> @receiver:Anno("receiver annotation: $prop") @Anno("receiver type $prop") Collection<@Anno("nested receiver type $prop") List<@Anno("nested nested receiver type $prop")String>>.explicitType(@Anno("parameter annotation $prop") param: @Anno("parameter type $prop") ListIterator<@Anno("nested parameter type $prop") List<@Anno("nested nested parameter type $prop")String>>): @Anno("explicitType return type $prop") List<@Anno("explicitType nested return type $prop") List<@Anno("explicitType nested nested return type $prop") Int>> = emptyList() + val <@Anno("type param $prop") F : @Anno("bound $prop") Number> F.explicitType: @Anno("bound $prop") Int get() = 1 + + companion object { + private const val prop = 0 + } +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 6ffb168c41f..61b44b57724 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -2196,6 +2196,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/annotations/typeArgumentsInAnnotation.kt"); } + @Test + @TestMetadata("typeParameterAnnotations.kt") + public void testTypeParameterAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/typeParameterAnnotations.kt"); + } + @Test @TestMetadata("typeParameterAsAnnotation.kt") public void testTypeParameterAsAnnotation() throws Exception {