diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt index ecdeaf6a2e5..e4116095b1c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyBodiesCalculator.kt @@ -18,12 +18,17 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirLazyDelegatedConstructorCall import org.jetbrains.kotlin.fir.extensions.registeredPluginAnnotations import org.jetbrains.kotlin.fir.resolve.transformers.plugin.CompilerRequiredAnnotationsHelper import org.jetbrains.kotlin.fir.scopes.kotlinScopeProvider +import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef +import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirUserTypeRef +import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.transformSingle import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.name.StandardClassIds.Annotations.SinceKotlin +import org.jetbrains.kotlin.fir.types.customAnnotations +import org.jetbrains.kotlin.fir.types.forEachType internal object FirLazyBodiesCalculator { fun calculateLazyBodiesInside(designation: FirDesignation) { @@ -223,6 +228,16 @@ private object FirLazyAnnotationTransformer : FirTransformer + for (typeArgumentAnnotation in coneType.customAnnotations) { + typeArgumentAnnotation.accept(this, data) + } + } + + return super.transformResolvedTypeRef(resolvedTypeRef, data) + } + override fun transformAnnotationCall(annotationCall: FirAnnotationCall, data: FirLazyAnnotationTransformerData): FirStatement { val shouldCalculate = data.compilerAnnotationsOnly == FirLazyAnnotationTransformerScope.ALL_ANNOTATIONS || canBeCompilerAnnotation(annotationCall, data.session) diff --git a/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.fir.kt b/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.fir.kt index 2a6a5672bb1..d3d97bf937f 100644 --- a/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.fir.kt @@ -1,4 +1,3 @@ -// IGNORE_REVERSED_RESOLVE // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE annotation class Ann diff --git a/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.kt b/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.kt index 2641bd13ae4..40b059b4ffe 100644 --- a/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.kt +++ b/compiler/testData/diagnostics/tests/annotations/annotationOnParameterInFunctionType.kt @@ -1,4 +1,3 @@ -// IGNORE_REVERSED_RESOLVE // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE annotation class Ann diff --git a/compiler/testData/diagnostics/tests/annotations/typeAnnotations.fir.kt b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.fir.kt index 222b4c0d772..11ced1d6401 100644 --- a/compiler/testData/diagnostics/tests/annotations/typeAnnotations.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.fir.kt @@ -1,4 +1,3 @@ -// IGNORE_REVERSED_RESOLVE // !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER class A diff --git a/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt index 5bdc1f6e0c7..8ce2e4916bc 100644 --- a/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt +++ b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt @@ -1,4 +1,3 @@ -// IGNORE_REVERSED_RESOLVE // !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER class A