Assert that reference annotation argument is always an enum value
Rename JavaReferenceAnnotationArgument on that occasion to JavaEnumValueAnnotationArgument. Also add a test on a nested enum annotation argument
This commit is contained in:
+3
-5
@@ -100,7 +100,7 @@ class LazyJavaAnnotationDescriptor(
|
||||
private fun resolveAnnotationArgument(argument: JavaAnnotationArgument?): CompileTimeConstant<*>? {
|
||||
return when (argument) {
|
||||
is JavaLiteralAnnotationArgument -> createCompileTimeConstant(argument.getValue(), true, false, false, null)
|
||||
is JavaReferenceAnnotationArgument -> resolveFromReference(argument.resolve())
|
||||
is JavaEnumValueAnnotationArgument -> resolveFromEnumValue(argument.resolve())
|
||||
is JavaArrayAnnotationArgument -> resolveFromArray(argument.getName() ?: DEFAULT_ANNOTATION_MEMBER_NAME, argument.getElements())
|
||||
is JavaAnnotationAsAnnotationArgument -> resolveFromAnnotation(argument.getAnnotation())
|
||||
is JavaClassObjectAnnotationArgument -> resolveFromJavaClassObjectType(argument.getReferencedType())
|
||||
@@ -131,10 +131,8 @@ class LazyJavaAnnotationDescriptor(
|
||||
return ArrayValue(values, valueParameter.getType(), true, values.any { it.usesVariableAsConstant() })
|
||||
}
|
||||
|
||||
private fun resolveFromReference(element: JavaElement?): CompileTimeConstant<*>? {
|
||||
if (element !is JavaField) return null
|
||||
|
||||
if (!element.isEnumEntry()) return null
|
||||
private fun resolveFromEnumValue(element: JavaField?): CompileTimeConstant<*>? {
|
||||
if (element == null || !element.isEnumEntry()) return null
|
||||
|
||||
val containingJavaClass = element.getContainingClass()
|
||||
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ package org.jetbrains.jet.lang.resolve.java.structure;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface JavaReferenceAnnotationArgument extends JavaAnnotationArgument {
|
||||
public interface JavaEnumValueAnnotationArgument extends JavaAnnotationArgument {
|
||||
@Nullable
|
||||
JavaElement resolve();
|
||||
JavaField resolve();
|
||||
}
|
||||
Reference in New Issue
Block a user