diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java index 3caa17a4dd2..ddc0dffbd79 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java @@ -366,7 +366,7 @@ public class Analyzer { } boolean isImplicitlyTyped(JCVariableDecl decl) { - return decl.vartype.pos == Position.NOPOS; + return decl.declaredUsingVar(); } /** diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java index fec60176573..160e5b8d253 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java @@ -5693,9 +5693,9 @@ public class Attr extends JCTree.Visitor { private void setSyntheticVariableType(JCVariableDecl tree, Type type) { if (type.isErroneous()) { - tree.vartype = make.at(Position.NOPOS).Erroneous(); + tree.vartype = make.at(tree.pos()).Erroneous(); } else { - tree.vartype = make.at(Position.NOPOS).Type(type); + tree.vartype = make.at(tree.pos()).Type(type); } } diff --git a/test/langtools/tools/javac/tree/VarWarnPosition.java b/test/langtools/tools/javac/tree/VarWarnPosition.java new file mode 100644 index 00000000000..bcb377bd2b0 --- /dev/null +++ b/test/langtools/tools/javac/tree/VarWarnPosition.java @@ -0,0 +1,26 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8329951 + * @summary Check that "var" variable synthetic types have a source position + * @compile/process/ref=VarWarnPosition.out -Xlint:deprecation -XDrawDiagnostics VarWarnPosition.java + */ + +import java.util.*; +import java.util.function.*; + +public class VarWarnPosition { + + VarWarnPosition() { + + // Test 1 + @SuppressWarnings("deprecation") + List deprecatedList = null; + for (var deprValue : deprecatedList) { } + + // Test 2 + Consumer c = d -> { }; + } +} + +@Deprecated +class Depr {} diff --git a/test/langtools/tools/javac/tree/VarWarnPosition.out b/test/langtools/tools/javac/tree/VarWarnPosition.out new file mode 100644 index 00000000000..c8fd6005b8d --- /dev/null +++ b/test/langtools/tools/javac/tree/VarWarnPosition.out @@ -0,0 +1,4 @@ +VarWarnPosition.java:18:14: compiler.warn.has.been.deprecated: Depr, compiler.misc.unnamed.package +VarWarnPosition.java:21:18: compiler.warn.has.been.deprecated: Depr, compiler.misc.unnamed.package +VarWarnPosition.java:21:28: compiler.warn.has.been.deprecated: Depr, compiler.misc.unnamed.package +3 warnings