FIR: Fix loading Java annotations with Class[]-typed methods
This commit is contained in:
@@ -125,7 +125,7 @@ internal fun JavaClassifierType.toFirResolvedTypeRef(
|
||||
internal fun JavaType?.toConeKotlinTypeWithoutEnhancement(
|
||||
session: FirSession,
|
||||
javaTypeParameterStack: JavaTypeParameterStack,
|
||||
forAnnotationValueParameter: Boolean = false,
|
||||
forAnnotationMember: Boolean = false,
|
||||
isForSupertypes: Boolean = false,
|
||||
attributes: ConeAttributes = ConeAttributes.Empty
|
||||
): ConeKotlinType {
|
||||
@@ -134,7 +134,7 @@ internal fun JavaType?.toConeKotlinTypeWithoutEnhancement(
|
||||
toConeKotlinTypeWithoutEnhancement(
|
||||
session,
|
||||
javaTypeParameterStack,
|
||||
forAnnotationValueParameter = forAnnotationValueParameter,
|
||||
forAnnotationMember = forAnnotationMember,
|
||||
attributes = attributes
|
||||
)
|
||||
}
|
||||
@@ -152,7 +152,7 @@ internal fun JavaType?.toConeKotlinTypeWithoutEnhancement(
|
||||
toConeKotlinTypeWithoutEnhancement(
|
||||
session,
|
||||
javaTypeParameterStack,
|
||||
forAnnotationValueParameter,
|
||||
forAnnotationMember,
|
||||
isForSupertypes,
|
||||
attributes = attributes
|
||||
)
|
||||
@@ -225,7 +225,7 @@ private fun JavaClassifierType.toConeKotlinTypeWithoutEnhancement(
|
||||
javaTypeParameterStack: JavaTypeParameterStack,
|
||||
forTypeParameterBounds: Boolean = false,
|
||||
isForSupertypes: Boolean = false,
|
||||
forAnnotationValueParameter: Boolean = false,
|
||||
forAnnotationMember: Boolean = false,
|
||||
attributes: ConeAttributes = ConeAttributes.Empty
|
||||
): ConeKotlinType {
|
||||
val lowerBound = toConeKotlinTypeForFlexibleBound(
|
||||
@@ -234,10 +234,10 @@ private fun JavaClassifierType.toConeKotlinTypeWithoutEnhancement(
|
||||
isLowerBound = true,
|
||||
forTypeParameterBounds,
|
||||
isForSupertypes,
|
||||
forAnnotationValueParameter = forAnnotationValueParameter,
|
||||
forAnnotationMember = forAnnotationMember,
|
||||
attributes = attributes
|
||||
)
|
||||
if (forAnnotationValueParameter) {
|
||||
if (forAnnotationMember) {
|
||||
return lowerBound
|
||||
}
|
||||
val upperBound =
|
||||
@@ -248,7 +248,7 @@ private fun JavaClassifierType.toConeKotlinTypeWithoutEnhancement(
|
||||
forTypeParameterBounds,
|
||||
isForSupertypes,
|
||||
lowerBound,
|
||||
forAnnotationValueParameter = forAnnotationValueParameter,
|
||||
forAnnotationMember = forAnnotationMember,
|
||||
attributes = attributes
|
||||
)
|
||||
|
||||
@@ -362,13 +362,13 @@ private fun JavaClassifierType.toConeKotlinTypeForFlexibleBound(
|
||||
forTypeParameterBounds: Boolean,
|
||||
isForSupertypes: Boolean,
|
||||
lowerBound: ConeLookupTagBasedType? = null,
|
||||
forAnnotationValueParameter: Boolean = false,
|
||||
forAnnotationMember: Boolean = false,
|
||||
attributes: ConeAttributes = ConeAttributes.Empty
|
||||
): ConeLookupTagBasedType {
|
||||
return when (val classifier = classifier) {
|
||||
is JavaClass -> {
|
||||
//val classId = classifier.classId!!
|
||||
var classId = if (forAnnotationValueParameter) {
|
||||
var classId = if (forAnnotationMember) {
|
||||
JavaToKotlinClassMap.mapJavaToKotlinIncludingClassMapping(classifier.fqName!!)
|
||||
} else {
|
||||
JavaToKotlinClassMap.mapJavaToKotlin(classifier.fqName!!)
|
||||
|
||||
+2
-2
@@ -51,7 +51,7 @@ internal class EnhancementSignatureParts(
|
||||
session: FirSession,
|
||||
javaTypeEnhancementState: JavaTypeEnhancementState,
|
||||
predefined: TypeEnhancementInfo? = null,
|
||||
forAnnotationValueParameter: Boolean = false
|
||||
forAnnotationMember: Boolean = false
|
||||
): PartEnhancementResult {
|
||||
val qualifiers = computeIndexedQualifiersForOverride(session, javaTypeEnhancementState)
|
||||
|
||||
@@ -64,7 +64,7 @@ internal class EnhancementSignatureParts(
|
||||
val typeWithoutEnhancement = current.type.toConeKotlinTypeWithoutEnhancement(
|
||||
session,
|
||||
javaTypeParameterStack,
|
||||
forAnnotationValueParameter,
|
||||
forAnnotationMember,
|
||||
attributes = attributesCache.getValue(current)
|
||||
)
|
||||
val containsFunctionN = typeWithoutEnhancement.contains {
|
||||
|
||||
+5
-2
@@ -319,7 +319,7 @@ class FirSignatureEnhancement(
|
||||
session,
|
||||
jsr305State,
|
||||
predefinedEnhancementInfo?.parametersInfo?.getOrNull(index),
|
||||
forAnnotationValueParameter = owner.classKind == ClassKind.ANNOTATION_CLASS
|
||||
forAnnotationMember = owner.classKind == ClassKind.ANNOTATION_CLASS
|
||||
)
|
||||
val firResolvedTypeRef = signatureParts.type
|
||||
val defaultValueExpression = when (val defaultValue = ownerParameter.getDefaultValueFromAnnotation()) {
|
||||
@@ -345,7 +345,10 @@ class FirSignatureEnhancement(
|
||||
if (owner is FirJavaField) AnnotationQualifierApplicabilityType.FIELD
|
||||
else AnnotationQualifierApplicabilityType.METHOD_RETURN_TYPE,
|
||||
typeInSignature = TypeInSignature.Return
|
||||
).enhance(session, jsr305State, predefinedEnhancementInfo?.returnTypeInfo)
|
||||
).enhance(
|
||||
session, jsr305State, predefinedEnhancementInfo?.returnTypeInfo,
|
||||
forAnnotationMember = this.owner.classKind == ClassKind.ANNOTATION_CLASS
|
||||
)
|
||||
return signatureParts.type
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user