langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Mon Dec 08 16:30:43 2014 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Mon Dec 08 18:02:07 2014 +0100
@@ -157,6 +157,7 @@
this.allowIntersectionTypesInCast = source.allowIntersectionTypesInCast();
this.allowTypeAnnotations = source.allowTypeAnnotations();
this.allowAnnotationsAfterTypeParams = source.allowAnnotationsAfterTypeParams();
+ this.allowUnderscoreIdentifier = source.allowUnderscoreIdentifier();
this.keepDocComments = keepDocComments;
docComments = newDocCommentTable(keepDocComments, fac);
this.keepLineMap = keepLineMap;
@@ -230,6 +231,10 @@
*/
boolean allowAnnotationsAfterTypeParams;
+ /** Switch: should we allow '_' as an identifier?
+ */
+ boolean allowUnderscoreIdentifier;
+
/** Switch: is "this" allowed as an identifier?
* This is needed to parse receiver types.
*/
@@ -595,7 +600,11 @@
return names.error;
}
} else if (token.kind == UNDERSCORE) {
- warning(token.pos, "underscore.as.identifier");
+ if (allowUnderscoreIdentifier) {
+ warning(token.pos, "underscore.as.identifier");
+ } else {
+ error(token.pos, "underscore.as.identifier");
+ }
Name name = token.name();
nextToken();
return name;