From 8c2d9559bcfcf7e163bea3c2bed3a7899ba679ed Mon Sep 17 00:00:00 2001 From: jlahoda Date: Mon, 22 Sep 2014 14:55:14 +0200 Subject: [PATCH] 8057794: Compiler Error when obtaining .class property Summary: Ensuring a non-null type and sym for illegal T.class to prevent downstream errors. Reviewed-by: mcimadamore --- src/share/classes/com/sun/tools/javac/comp/Attr.java | 5 +++-- test/tools/javac/lambda/T8057794.java | 12 ++++++++++++ test/tools/javac/lambda/T8057794.out | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 test/tools/javac/lambda/T8057794.java create mode 100644 test/tools/javac/lambda/T8057794.out diff --git a/src/share/classes/com/sun/tools/javac/comp/Attr.java b/src/share/classes/com/sun/tools/javac/comp/Attr.java index e44b09c6..f5d52595 100644 --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java @@ -3226,8 +3226,9 @@ public class Attr extends JCTree.Visitor { elt = ((ArrayType)elt.unannotatedType()).elemtype; if (elt.hasTag(TYPEVAR)) { log.error(tree.pos(), "type.var.cant.be.deref"); - result = types.createErrorType(tree.type); - return; + result = tree.type = types.createErrorType(tree.name, site.tsym, site); + tree.sym = tree.type.tsym; + return ; } } diff --git a/test/tools/javac/lambda/T8057794.java b/test/tools/javac/lambda/T8057794.java new file mode 100644 index 00000000..2bf4c5ae --- /dev/null +++ b/test/tools/javac/lambda/T8057794.java @@ -0,0 +1,12 @@ +/** + * @test /nodynamiccopyright/ + * @bug 8057794 + * @summary The tree for TypeVar.class does not have a type set, which leads to an NPE when + * checking if deferred attribution is needed + * @compile/fail/ref=T8057794.out -XDrawDiagnostics T8057794.java + */ +class T8057794 { + void t() { + System.out.println(T.class.getSimpleName()); + } +} diff --git a/test/tools/javac/lambda/T8057794.out b/test/tools/javac/lambda/T8057794.out new file mode 100644 index 00000000..fa025a99 --- /dev/null +++ b/test/tools/javac/lambda/T8057794.out @@ -0,0 +1,2 @@ +T8057794.java:10:29: compiler.err.type.var.cant.be.deref +1 error -- GitLab