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 e44b09c608aac70ac4bf8f05f271e6063658258c..f5d525959db6fa6614702c8a595bd68f5715acda 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 0000000000000000000000000000000000000000..2bf4c5ae879732edcea0533f9fcace72e48643b8 --- /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 0000000000000000000000000000000000000000..fa025a99ca65a0ec4d76cb138bf7b00411af1897 --- /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