Remove utility method from AnnotationDescriptor interface
This commit is contained in:
+25
-29
@@ -70,40 +70,36 @@ class LazyJavaAnnotationDescriptor(
|
||||
|
||||
override fun getType(): JetType = type()
|
||||
|
||||
private val nameToArgument = c.storageManager.createLazyValue {
|
||||
var arguments: Collection<JavaAnnotationArgument> = javaAnnotation.getArguments()
|
||||
if (arguments.isEmpty() && fqName()?.asString() == "java.lang.Deprecated") {
|
||||
arguments = listOf(DEPRECATED_IN_JAVA)
|
||||
}
|
||||
arguments.valuesToMap { it.name }
|
||||
}
|
||||
|
||||
private val valueArguments = c.storageManager.createMemoizedFunctionWithNullableValues<ValueParameterDescriptor, CompileTimeConstant<*>> {
|
||||
valueParameter ->
|
||||
val nameToArg = nameToArgument()
|
||||
|
||||
var javaAnnotationArgument = nameToArg[valueParameter.getName()]
|
||||
if (javaAnnotationArgument == null && valueParameter.getName() == DEFAULT_ANNOTATION_MEMBER_NAME) {
|
||||
javaAnnotationArgument = nameToArg[null]
|
||||
}
|
||||
|
||||
resolveAnnotationArgument(javaAnnotationArgument)
|
||||
}
|
||||
|
||||
override fun getValueArgument(valueParameterDescriptor: ValueParameterDescriptor) = valueArguments(valueParameterDescriptor)
|
||||
|
||||
private val allValueArguments = c.storageManager.createLazyValue {
|
||||
val constructors = getAnnotationClass().getConstructors()
|
||||
if (constructors.isEmpty())
|
||||
mapOf<ValueParameterDescriptor, CompileTimeConstant<*>>()
|
||||
else
|
||||
constructors.first().getValueParameters().keysToMapExceptNulls {
|
||||
vp -> getValueArgument(vp)
|
||||
}
|
||||
computeValueArguments()
|
||||
}
|
||||
|
||||
override fun getAllValueArguments() = allValueArguments()
|
||||
|
||||
private fun computeValueArguments(): Map<ValueParameterDescriptor, CompileTimeConstant<*>> {
|
||||
val constructors = getAnnotationClass().getConstructors()
|
||||
if (constructors.isEmpty()) return mapOf()
|
||||
|
||||
val nameToArg = nameToArgument()
|
||||
|
||||
return constructors.first().getValueParameters().keysToMapExceptNulls { valueParameter ->
|
||||
var javaAnnotationArgument = nameToArg[valueParameter.getName()]
|
||||
if (javaAnnotationArgument == null && valueParameter.getName() == DEFAULT_ANNOTATION_MEMBER_NAME) {
|
||||
javaAnnotationArgument = nameToArg[null]
|
||||
}
|
||||
|
||||
resolveAnnotationArgument(javaAnnotationArgument)
|
||||
}
|
||||
}
|
||||
|
||||
private fun nameToArgument(): Map<Name?, JavaAnnotationArgument> {
|
||||
var arguments = javaAnnotation.getArguments()
|
||||
if (arguments.isEmpty() && fqName()?.asString() == "java.lang.Deprecated") {
|
||||
arguments = listOf(DEPRECATED_IN_JAVA)
|
||||
}
|
||||
return arguments.valuesToMap { it.name }
|
||||
}
|
||||
|
||||
private fun getAnnotationClass() = getType().getConstructor().getDeclarationDescriptor() as ClassDescriptor
|
||||
|
||||
private fun resolveAnnotationArgument(argument: JavaAnnotationArgument?): CompileTimeConstant<*>? {
|
||||
|
||||
Reference in New Issue
Block a user