diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java index 593066ffffa..f8d5c4bc8d6 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerFirTestdataTestGenerated.java @@ -32,6 +32,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt"); } + @Test + @TestMetadata("annotationOnGetClassCall.kt") + public void testAnnotationOnGetClassCall() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt"); + } + @Test @TestMetadata("annotationUsedAsAnnotationArgument.kt") public void testAnnotationUsedAsAnnotationArgument() throws Exception { diff --git a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java index b8b29b9f30a..99d85ba215b 100644 --- a/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java +++ b/compiler/fir/analysis-tests/legacy-fir-tests/tests-gen/org/jetbrains/kotlin/fir/LazyBodyIsNotTouchedTilContractsPhaseTestGenerated.java @@ -34,6 +34,11 @@ public class LazyBodyIsNotTouchedTilContractsPhaseTestGenerated extends Abstract runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt"); } + @TestMetadata("annotationOnGetClassCall.kt") + public void testAnnotationOnGetClassCall() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt"); + } + @TestMetadata("annotationUsedAsAnnotationArgument.kt") public void testAnnotationUsedAsAnnotationArgument() throws Exception { runTest("compiler/fir/analysis-tests/testData/resolve/annotationUsedAsAnnotationArgument.kt"); diff --git a/compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.fir.txt b/compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.fir.txt new file mode 100644 index 00000000000..3d26a55eebe --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.fir.txt @@ -0,0 +1,16 @@ +FILE: annotationOnGetClassCall.kt + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(x: R|kotlin/Long|, s: R|kotlin/String|): R|Ann| { + super() + } + + public final val x: R|kotlin/Long| = R|/x| + public get(): R|kotlin/Long| + + public final val s: R|kotlin/String| = R|/s| + public get(): R|kotlin/String| + + } + public final fun test(): R|kotlin/Unit| { + @R|Ann|(s = String(hello), x = Long(1)) (Q|kotlin/String|) + } diff --git a/compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt b/compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt new file mode 100644 index 00000000000..1a5d087dc21 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt @@ -0,0 +1,5 @@ +annotation class Ann(val x: Long, val s: String) + +fun test() { + @Ann(s = "hello", x = 1) String::class +} diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java index 430355b5857..d25f9a44fb2 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java @@ -32,6 +32,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt"); } + @Test + @TestMetadata("annotationOnGetClassCall.kt") + public void testAnnotationOnGetClassCall() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt"); + } + @Test @TestMetadata("annotationUsedAsAnnotationArgument.kt") public void testAnnotationUsedAsAnnotationArgument() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java index 8170e4aa96c..7fe3b55ff60 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java @@ -32,6 +32,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt"); } + @Test + @TestMetadata("annotationOnGetClassCall.kt") + public void testAnnotationOnGetClassCall() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt"); + } + @Test @TestMetadata("annotationUsedAsAnnotationArgument.kt") public void testAnnotationUsedAsAnnotationArgument() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 590635635d6..1ace3c265d0 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -895,6 +895,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform } override fun transformGetClassCall(getClassCall: FirGetClassCall, data: ResolutionMode): FirStatement { + getClassCall.transformAnnotations(transformer, ResolutionMode.ContextIndependent) val arg = getClassCall.argument val dataForLhs = if (arg is FirConstExpression<*>) { withExpectedType(arg.typeRef.resolvedTypeFromPrototype(arg.kind.expectedConeType(session)))