From 35af8eccde0df341af64a19b0403ff9eef6896d4 Mon Sep 17 00:00:00 2001 From: Jan Lahoda Date: Wed, 17 Jul 2013 15:08:58 +0200 Subject: [PATCH] 8020586: Warning produced for an incorrect file Always using DeferredLintHandler.immediateHandler when processing import classes Reviewed-by: mcimadamore --- .../com/sun/tools/javac/comp/MemberEnter.java | 14 ++++++++++---- .../tools/javac/warnings/6594914/Auxiliary.java | 5 +++++ .../javac/warnings/6594914/ExplicitCompilation.out | 2 ++ .../warnings/6594914/ImplicitCompilation.java | 13 +++++++++++++ .../javac/warnings/6594914/ImplicitCompilation.out | 2 ++ 5 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 langtools/test/tools/javac/warnings/6594914/Auxiliary.java create mode 100644 langtools/test/tools/javac/warnings/6594914/ExplicitCompilation.out create mode 100644 langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.java create mode 100644 langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.out diff --git a/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java index 6c044c0ec14..24a69f09e96 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java @@ -508,11 +508,17 @@ public class MemberEnter extends JCTree.Visitor implements Completer { // process package annotations annotateLater(tree.packageAnnotations, env, tree.packge); - // Import-on-demand java.lang. - importAll(tree.pos, reader.enterPackage(names.java_lang), env); + DeferredLintHandler prevLintHandler = chk.setDeferredLintHandler(DeferredLintHandler.immediateHandler); - // Process all import clauses. - memberEnter(tree.defs, env); + try { + // Import-on-demand java.lang. + importAll(tree.pos, reader.enterPackage(names.java_lang), env); + + // Process all import clauses. + memberEnter(tree.defs, env); + } finally { + chk.setDeferredLintHandler(prevLintHandler); + } } // process the non-static imports and the static imports of types. diff --git a/langtools/test/tools/javac/warnings/6594914/Auxiliary.java b/langtools/test/tools/javac/warnings/6594914/Auxiliary.java new file mode 100644 index 00000000000..e9c881643e2 --- /dev/null +++ b/langtools/test/tools/javac/warnings/6594914/Auxiliary.java @@ -0,0 +1,5 @@ +import java.io.StringBufferInputStream; + +public class Auxiliary { + +} diff --git a/langtools/test/tools/javac/warnings/6594914/ExplicitCompilation.out b/langtools/test/tools/javac/warnings/6594914/ExplicitCompilation.out new file mode 100644 index 00000000000..3dff7922cf7 --- /dev/null +++ b/langtools/test/tools/javac/warnings/6594914/ExplicitCompilation.out @@ -0,0 +1,2 @@ +Auxiliary.java:1:15: compiler.warn.has.been.deprecated: java.io.StringBufferInputStream, java.io +1 warning diff --git a/langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.java b/langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.java new file mode 100644 index 00000000000..6bf41567f5a --- /dev/null +++ b/langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.java @@ -0,0 +1,13 @@ +/** + * @test /nodynamiccopyright/ + * @bug 8020586 + * @summary Warnings in the imports section should be attributed to the correct source file + * @clean Auxiliary ImplicitCompilation + * @compile/ref=ImplicitCompilation.out -XDrawDiagnostics -Xlint:deprecation -sourcepath . ImplicitCompilation.java + * @clean Auxiliary ImplicitCompilation + * @compile/ref=ExplicitCompilation.out -XDrawDiagnostics -Xlint:deprecation ImplicitCompilation.java Auxiliary.java + */ + +public class ImplicitCompilation { + private Auxiliary a; +} diff --git a/langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.out b/langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.out new file mode 100644 index 00000000000..3dff7922cf7 --- /dev/null +++ b/langtools/test/tools/javac/warnings/6594914/ImplicitCompilation.out @@ -0,0 +1,2 @@ +Auxiliary.java:1:15: compiler.warn.has.been.deprecated: java.io.StringBufferInputStream, java.io +1 warning