Mercurial > hg > openjdk > jdk8u > langtools
changeset 2614:a12a9932f649 jdk8u40-b17
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
author | jlahoda |
---|---|
date | Mon, 22 Sep 2014 14:55:14 +0200 |
parents | 4721674bb051 |
children | 94f30e5fde53 feafeed79979 |
files | src/share/classes/com/sun/tools/javac/comp/Attr.java test/tools/javac/lambda/T8057794.java test/tools/javac/lambda/T8057794.out |
diffstat | 3 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/comp/Attr.java Wed Nov 26 13:59:04 2014 -0800 +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java Mon Sep 22 14:55:14 2014 +0200 @@ -3226,8 +3226,9 @@ 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 ; } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/lambda/T8057794.java Mon Sep 22 14:55:14 2014 +0200 @@ -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<T> { + void t() { + System.out.println(T.class.getSimpleName()); + } +}