Revert "FIR: do not eagerly resolve class references in imported annotations"
This reverts commit 1a57d60f
This commit is contained in:
@@ -641,7 +641,7 @@ internal fun JavaAnnotationArgument.toFirExpression(
|
|||||||
is JavaClassObjectAnnotationArgument -> buildGetClassCall {
|
is JavaClassObjectAnnotationArgument -> buildGetClassCall {
|
||||||
argumentList = buildUnaryArgumentList(
|
argumentList = buildUnaryArgumentList(
|
||||||
buildClassReferenceExpression {
|
buildClassReferenceExpression {
|
||||||
classTypeRef = getReferencedType().toFirJavaTypeRef(session, javaTypeParameterStack)
|
classTypeRef = getReferencedType().toFirResolvedTypeRef(session, javaTypeParameterStack)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -704,3 +704,17 @@ private fun FirConstExpression<*>.setProperType(session: FirSession): FirConstEx
|
|||||||
replaceTypeRef(typeRef)
|
replaceTypeRef(typeRef)
|
||||||
return this
|
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))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
float e() default 1;
|
float e() default 1;
|
||||||
long j() default 1;
|
long j() default 1;
|
||||||
String f() default "default";
|
String f() default "default";
|
||||||
Class<?> g() default JavaAnn2.class;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MODULE: main(lib)
|
// 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.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.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.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"
|
return "OK"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user