aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcushon <cushon@google.com>2018-12-18 11:19:35 -0800
committerLiam Miller-Cushon <cushon@google.com>2019-01-28 21:35:31 -0800
commit54a187ea4032d422554e3dee65c3323866281434 (patch)
tree0b934034babc3c5e96d66a4fbfaeaccca0a6d056
parent6f4bab196a3558618206cd59e5bb7477776cffff (diff)
downloadturbine-54a187ea4032d422554e3dee65c3323866281434.tar.gz
Fix an NPE in constant expression binding of malformed annotations
MOE_MIGRATED_REVID=226028069
-rw-r--r--java/com/google/turbine/binder/ConstEvaluator.java3
-rw-r--r--javatests/com/google/turbine/binder/BinderErrorTest.java15
2 files changed, 18 insertions, 0 deletions
diff --git a/java/com/google/turbine/binder/ConstEvaluator.java b/java/com/google/turbine/binder/ConstEvaluator.java
index d565cee..6db85e1 100644
--- a/java/com/google/turbine/binder/ConstEvaluator.java
+++ b/java/com/google/turbine/binder/ConstEvaluator.java
@@ -953,6 +953,9 @@ public strictfp class ConstEvaluator {
for (Ident name : result.remaining()) {
sym = Resolve.resolve(env, sym, sym, name);
}
+ if (sym == null) {
+ return null;
+ }
AnnoInfo annoInfo = evaluateAnnotation(new AnnoInfo(source, sym, t, null));
return new AnnotationValue(annoInfo.sym(), annoInfo.values());
}
diff --git a/javatests/com/google/turbine/binder/BinderErrorTest.java b/javatests/com/google/turbine/binder/BinderErrorTest.java
index 737339b..5e6b9f1 100644
--- a/javatests/com/google/turbine/binder/BinderErrorTest.java
+++ b/javatests/com/google/turbine/binder/BinderErrorTest.java
@@ -504,6 +504,21 @@ public class BinderErrorTest {
" ^",
},
},
+ {
+ {
+ "package p;", //
+ "import java.lang.annotation.Retention;",
+ "import java.lang.annotation.RetentionPolicy;",
+ "@Retention(@RetentionPolicy.RUNTIME)",
+ "public @interface A {",
+ "}",
+ },
+ {
+ "<>:4: error: could not evaluate constant expression",
+ "@Retention(@RetentionPolicy.RUNTIME)",
+ " ^",
+ },
+ },
};
return Arrays.asList((Object[][]) testCases);
}