Load enum/array annotation arguments for not found classes

It's necessary to load type qualifier related annotations
without JSR305 annotations being in the classpath

 #KT-19419 In Progress
This commit is contained in:
Denis Zharkov
2017-08-09 18:19:21 +07:00
parent a82e313d14
commit f8f0c0b6d7
8 changed files with 40 additions and 15 deletions
@@ -72,6 +72,9 @@ class JavaEnumValueAnnotationArgumentImpl(
else -> throw IllegalStateException("Reference argument should be an enum value, but was $element: ${element.text}")
}
}
override val entryName: Name?
get() = psiReference.referenceName?.let(Name::identifier)
}
class JavaClassObjectAnnotationArgumentImpl(
@@ -184,12 +184,14 @@ class PlainJavaAnnotationAsAnnotationArgument(
class PlainJavaEnumValueAnnotationArgument(
name: String?,
private val desc: String,
private val entryName: String,
entryName: String,
private val context: ClassifierResolutionContext
) : PlainJavaAnnotationArgument(name), JavaEnumValueAnnotationArgument {
override val entryName = Name.identifier(entryName)
override fun resolve(): JavaField? {
val javaClass = context.resolveByInternalName(Type.getType(desc).internalName).classifier as? JavaClass ?: return null
return javaClass.fields.singleOrNull { it.name.asString() == entryName }
return javaClass.fields.singleOrNull { it.name == entryName }
}
}