Add constructor parameter for compileTimeConstant (can be used in annotation)
This commit is contained in:
+2
-2
@@ -94,7 +94,7 @@ class LazyJavaAnnotationDescriptor(
|
||||
|
||||
private fun resolveAnnotationArgument(argument: JavaAnnotationArgument?): CompileTimeConstant<*>? {
|
||||
return when (argument) {
|
||||
is JavaLiteralAnnotationArgument -> JavaAnnotationArgumentResolver.resolveCompileTimeConstantValue(argument.getValue(), null)
|
||||
is JavaLiteralAnnotationArgument -> JavaAnnotationArgumentResolver.resolveCompileTimeConstantValue(argument.getValue(), true, null)
|
||||
is JavaReferenceAnnotationArgument -> resolveFromReference(argument.resolve())
|
||||
is JavaArrayAnnotationArgument -> resolveFromArray(argument.getName() ?: DEFAULT_ANNOTATION_MEMBER_NAME, argument.getElements())
|
||||
is JavaAnnotationAsAnnotationArgument -> resolveFromAnnotation(argument.getAnnotation())
|
||||
@@ -123,7 +123,7 @@ class LazyJavaAnnotationDescriptor(
|
||||
val values = elements.map {
|
||||
argument -> resolveAnnotationArgument(argument) ?: NullValue.NULL
|
||||
}
|
||||
return ArrayValue(values, valueParameter.getType())
|
||||
return ArrayValue(values, valueParameter.getType(), true)
|
||||
}
|
||||
|
||||
private fun resolveFromReference(element: JavaElement?): CompileTimeConstant<*>? {
|
||||
|
||||
+1
-1
@@ -111,7 +111,7 @@ public class JavaToKotlinClassMap extends JavaToKotlinClassMapBuilder implements
|
||||
ValueParameterDescriptor value = DescriptorResolverUtils.getAnnotationParameterByName(
|
||||
JavaAnnotationResolver.DEFAULT_ANNOTATION_MEMBER_NAME, annotationClass);
|
||||
assert value != null : "jet.deprecated must have one parameter called value";
|
||||
annotation.setValueArgument(value, new StringValue("Deprecated in Java"));
|
||||
annotation.setValueArgument(value, new StringValue("Deprecated in Java", true));
|
||||
return annotation;
|
||||
}
|
||||
|
||||
|
||||
+15
-15
@@ -70,7 +70,7 @@ public final class JavaAnnotationArgumentResolver {
|
||||
@NotNull PostponedTasks postponedTasks
|
||||
) {
|
||||
if (argument instanceof JavaLiteralAnnotationArgument) {
|
||||
return resolveCompileTimeConstantValue(((JavaLiteralAnnotationArgument) argument).getValue(), null);
|
||||
return resolveCompileTimeConstantValue(((JavaLiteralAnnotationArgument) argument).getValue(), true, null);
|
||||
}
|
||||
// Enum
|
||||
else if (argument instanceof JavaReferenceAnnotationArgument) {
|
||||
@@ -124,7 +124,7 @@ public final class JavaAnnotationArgumentResolver {
|
||||
values.add(value == null ? NullValue.NULL : value);
|
||||
}
|
||||
|
||||
return new ArrayValue(values, valueParameter.getType());
|
||||
return new ArrayValue(values, valueParameter.getType(), true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -167,44 +167,44 @@ public final class JavaAnnotationArgumentResolver {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static CompileTimeConstant<?> resolveCompileTimeConstantValue(@Nullable Object value, @Nullable JetType expectedType) {
|
||||
public static CompileTimeConstant<?> resolveCompileTimeConstantValue(@Nullable Object value, boolean canBeUseInAnnotation, @Nullable JetType expectedType) {
|
||||
if (value instanceof String) {
|
||||
return new StringValue((String) value);
|
||||
return new StringValue((String) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Byte) {
|
||||
return new ByteValue((Byte) value);
|
||||
return new ByteValue((Byte) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Short) {
|
||||
return new ShortValue((Short) value);
|
||||
return new ShortValue((Short) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Character) {
|
||||
return new CharValue((Character) value);
|
||||
return new CharValue((Character) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Integer) {
|
||||
KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance();
|
||||
Integer integer = (Integer) value;
|
||||
if (builtIns.getShortType().equals(expectedType)) {
|
||||
return new ShortValue(integer.shortValue());
|
||||
return new ShortValue(integer.shortValue(), canBeUseInAnnotation);
|
||||
}
|
||||
else if (builtIns.getByteType().equals(expectedType)) {
|
||||
return new ByteValue(integer.byteValue());
|
||||
return new ByteValue(integer.byteValue(), canBeUseInAnnotation);
|
||||
}
|
||||
else if (builtIns.getCharType().equals(expectedType)) {
|
||||
return new CharValue((char) integer.intValue());
|
||||
return new CharValue((char) integer.intValue(), canBeUseInAnnotation);
|
||||
}
|
||||
return new IntValue(integer);
|
||||
return new IntValue(integer, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Long) {
|
||||
return new LongValue((Long) value);
|
||||
return new LongValue((Long) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Float) {
|
||||
return new FloatValue((Float) value);
|
||||
return new FloatValue((Float) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Double) {
|
||||
return new DoubleValue((Double) value);
|
||||
return new DoubleValue((Double) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value instanceof Boolean) {
|
||||
return BooleanValue.valueOf((Boolean) value);
|
||||
return new BooleanValue((Boolean) value, canBeUseInAnnotation);
|
||||
}
|
||||
else if (value == null) {
|
||||
return NullValue.NULL;
|
||||
|
||||
+1
-1
@@ -171,7 +171,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
||||
@Override
|
||||
public void visit(@Nullable Name name, @Nullable Object value) {
|
||||
if (name != null) {
|
||||
CompileTimeConstant<?> argument = JavaAnnotationArgumentResolver.resolveCompileTimeConstantValue(value, null);
|
||||
CompileTimeConstant<?> argument = JavaAnnotationArgumentResolver.resolveCompileTimeConstantValue(value, true, null);
|
||||
setArgumentValueByName(name, argument != null ? argument : ErrorValue.create("Unsupported annotation argument: " + name));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user