--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Wed Dec 28 10:52:11 2011 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java Tue Jan 03 11:37:00 2012 -0800
@@ -535,13 +535,14 @@
reader.putChar('.');
scanFractionAndSuffix(pos);
} else if (reader.ch == '.') {
+ int savePos = reader.bp;
reader.putChar('.'); reader.putChar('.', true);
if (reader.ch == '.') {
reader.scanChar();
reader.putChar('.');
tk = TokenKind.ELLIPSIS;
} else {
- lexError(pos, "malformed.fp.lit");
+ lexError(savePos, "illegal.dot");
}
} else {
tk = TokenKind.DOT;
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties Wed Dec 28 10:52:11 2011 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties Tue Jan 03 11:37:00 2012 -0800
@@ -384,6 +384,9 @@
compiler.err.illegal.underscore=\
illegal underscore
+compiler.err.illegal.dot=\
+ illegal ''.''
+
# 0: symbol
compiler.err.illegal.qual.not.icls=\
illegal qualifier; {0} is not an inner class
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/diags/examples/IllegalDot.java Tue Jan 03 11:37:00 2012 -0800
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+// key: compiler.err.illegal.dot
+// key: compiler.err.expected
+// key: compiler.err.illegal.start.of.type
+
+class X {
+ void m(Object.. args) { }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/parser/T4881269.java Tue Jan 03 11:37:00 2012 -0800
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4881269
+ * @summary improve diagnostic for ill-formed tokens
+ * @compile/fail/ref=T4881269.out -XDrawDiagnostics T4881269.java
+ */
+
+public class T4881269 {
+ java.io..PrintStream s;
+ void m() { System.err..println(); }
+ void m(Object.. o) { }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/parser/T4881269.out Tue Jan 03 11:37:00 2012 -0800
@@ -0,0 +1,9 @@
+T4881269.java:32:13: compiler.err.illegal.dot
+T4881269.java:33:27: compiler.err.illegal.dot
+T4881269.java:33:22: compiler.err.not.stmt
+T4881269.java:34:19: compiler.err.illegal.dot
+T4881269.java:34:20: compiler.err.expected: ';'
+T4881269.java:34:22: compiler.err.illegal.start.of.type
+T4881269.java:34:23: compiler.err.expected: token.identifier
+T4881269.java:34:25: compiler.err.expected: ';'
+8 errors