4881269: improve diagnostic for ill-formed tokens
authorjjg
Tue, 03 Jan 2012 11:37:00 -0800
changeset 11383 ae090403accf
parent 11382 9bd385be6f03
child 11384 6e1d14a4ff86
4881269: improve diagnostic for ill-formed tokens Reviewed-by: mcimadamore
langtools/src/share/classes/com/sun/tools/javac/parser/JavaTokenizer.java
langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties
langtools/test/tools/javac/diags/examples/IllegalDot.java
langtools/test/tools/javac/parser/T4881269.java
langtools/test/tools/javac/parser/T4881269.out
--- 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