KT-15010 Missing error on an usage non-constant property in annotation default argument

This commit is contained in:
Dmitry Petrov
2017-01-24 13:36:06 +03:00
parent df8394bcd2
commit 5ef27f7ad3
6 changed files with 93 additions and 4 deletions
@@ -61,8 +61,10 @@ class ValueParameterResolver(
val defaultValue = jetParameter.getDefaultValue() ?: return
expressionTypingServices.getTypeInfo(defaultValue, context.replaceExpectedType(valueParameterDescriptor.type))
if (DescriptorUtils.isAnnotationClass(DescriptorResolver.getContainingClass(context.scope))) {
constantExpressionEvaluator.evaluateExpression(defaultValue, context.trace, valueParameterDescriptor.type)
?: context.trace.report(Errors.ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT.on(defaultValue))
val constant = constantExpressionEvaluator.evaluateExpression(defaultValue, context.trace, valueParameterDescriptor.type)
if (constant == null || constant.usesNonConstValAsConstant) {
context.trace.report(Errors.ANNOTATION_PARAMETER_DEFAULT_VALUE_MUST_BE_CONSTANT.on(defaultValue))
}
}
}
}