OpenJDK / bsd-port / jdk9 / langtools
changeset 3230:6ee9f8822081
8148213: Regression: nested unchecked call does not trigger erasure of return type
Summary: FreeTypeListener was deferred too much and caused loss of unchecked warning while in the middle of overload
Reviewed-by: vromero
author | mcimadamore |
---|---|
date | Thu, 28 Jan 2016 14:06:27 +0000 |
parents | 9c18e22cb5ac |
children | 50467a1cf5b1 |
files | src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java test/tools/javac/generics/inference/8148213/T8148213.java test/tools/javac/generics/inference/8148213/T8148213.out |
diffstat | 3 files changed, 36 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Thu Jan 28 17:41:52 2016 +0530 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Thu Jan 28 14:06:27 2016 +0000 @@ -239,7 +239,7 @@ //this means we are dealing with a partially inferred poly expression owntype = shouldCheck ? resultInfo.pt : found; if (resultInfo.checkMode.installPostInferenceHook()) { - inferenceContext.addFreeTypeListener(List.of(found, resultInfo.pt), + inferenceContext.addFreeTypeListener(List.of(found), instantiatedContext -> { ResultInfo pendingResult = resultInfo.dup(inferenceContext.asInstType(resultInfo.pt));
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/generics/inference/8148213/T8148213.java Thu Jan 28 14:06:27 2016 +0000 @@ -0,0 +1,30 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8148213 + * @summary Regression: nested unchecked call does not trigger erasure of return type + * + * @compile/fail/ref=T8148213.out -Werror -Xlint:unchecked -XDrawDiagnostics T8148213.java + */ + +abstract class T8148213 { + + interface R<E> { } + + interface Q<T> { } + + interface T { + <E> Q<E> n(R<E> r); + } + + abstract <T> T isA(Class<T> t); + + abstract <T> S<T> w(T t); + + interface S<T> { + S<T> t(T value); + } + + void f(T t, Q<String> q) { + w(t.n(isA(R.class))).t(q); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/generics/inference/8148213/T8148213.out Thu Jan 28 14:06:27 2016 +0000 @@ -0,0 +1,5 @@ +T8148213.java:28:14: compiler.warn.unchecked.meth.invocation.applied: kindname.method, n, T8148213.R<E>, T8148213.R, kindname.interface, T8148213.T +T8148213.java:28:18: compiler.warn.prob.found.req: (compiler.misc.unchecked.assign), T8148213.R, T8148213.R<E> +- compiler.err.warnings.and.werror +1 error +2 warnings