Add constructor parameter for compileTimeConstant (can be used in annotation)

This commit is contained in:
Natalia Ukhorskaya
2014-01-23 15:40:11 +04:00
parent fd3f852a93
commit 3f429116e5
37 changed files with 276 additions and 175 deletions
@@ -90,11 +90,12 @@ public class TraceBasedJavaResolverCache implements JavaResolverCache {
PsiField psiField = ((JavaFieldImpl) field).getPsi();
trace.record(VARIABLE, psiField, descriptor);
if (AnnotationUtils.isPropertyCompileTimeConstant(descriptor)) {
if (!descriptor.isVar()) {
PsiExpression initializer = psiField.getInitializer();
Object evaluatedExpression = JavaConstantExpressionEvaluator.computeConstantExpression(initializer, false);
if (evaluatedExpression != null) {
CompileTimeConstant<?> constant = JavaAnnotationArgumentResolver.resolveCompileTimeConstantValue(evaluatedExpression, descriptor.getType());
CompileTimeConstant<?> constant = JavaAnnotationArgumentResolver.
resolveCompileTimeConstantValue(evaluatedExpression, AnnotationUtils.isPropertyCompileTimeConstant(descriptor), descriptor.getType());
if (constant != null) {
trace.record(COMPILE_TIME_INITIALIZER, descriptor, constant);
}