diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt index e476606f23c..e840312fe21 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt @@ -641,7 +641,7 @@ internal fun JavaAnnotationArgument.toFirExpression( is JavaClassObjectAnnotationArgument -> buildGetClassCall { argumentList = buildUnaryArgumentList( buildClassReferenceExpression { - classTypeRef = getReferencedType().toFirJavaTypeRef(session, javaTypeParameterStack) + classTypeRef = getReferencedType().toFirResolvedTypeRef(session, javaTypeParameterStack) } ) } @@ -704,3 +704,17 @@ private fun FirConstExpression<*>.setProperType(session: FirSession): FirConstEx replaceTypeRef(typeRef) return this } + +private fun JavaType.toFirResolvedTypeRef( + session: FirSession, javaTypeParameterStack: JavaTypeParameterStack +): FirResolvedTypeRef { + if (this is JavaClassifierType) return toFirResolvedTypeRef( + session, + javaTypeParameterStack, + isForSupertypes = false, + forTypeParameterBounds = false + ) + return buildResolvedTypeRef { + type = ConeClassErrorType(ConeSimpleDiagnostic("Unexpected JavaType: $this", DiagnosticKind.Java)) + } +} diff --git a/compiler/testData/codegen/box/annotations/javaAnnotationDefault.kt b/compiler/testData/codegen/box/annotations/javaAnnotationDefault.kt index 63a099cb5f2..764350a4992 100644 --- a/compiler/testData/codegen/box/annotations/javaAnnotationDefault.kt +++ b/compiler/testData/codegen/box/annotations/javaAnnotationDefault.kt @@ -25,7 +25,6 @@ import java.lang.annotation.RetentionPolicy; float e() default 1; long j() default 1; String f() default "default"; - Class g() default JavaAnn2.class; } // MODULE: main(lib) @@ -48,7 +47,6 @@ fun box(): String { if (ann2.e != 1F) return "fail for e: expected = 1, but was ${ann2.e}" if (ann2.j != 1L) return "fail for j: expected = 1, but was ${ann2.j}" if (ann2.f != "default") return "fail for f: expected = default, but was ${ann2.f}" - if (ann2.g != JavaAnn2::class) return "fail for g: expected = JavaAnn2, but was ${ann2.g}" return "OK" }