diff options
author | cushon <cushon@google.com> | 2018-12-18 11:19:35 -0800 |
---|---|---|
committer | Liam Miller-Cushon <cushon@google.com> | 2019-01-28 21:35:31 -0800 |
commit | 54a187ea4032d422554e3dee65c3323866281434 (patch) | |
tree | 0b934034babc3c5e96d66a4fbfaeaccca0a6d056 | |
parent | 6f4bab196a3558618206cd59e5bb7477776cffff (diff) | |
download | turbine-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.java | 3 | ||||
-rw-r--r-- | javatests/com/google/turbine/binder/BinderErrorTest.java | 15 |
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); } |