--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Tue Oct 16 21:03:36 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Wed Oct 17 16:43:26 2012 +0100
@@ -116,6 +116,8 @@
fac.options.isSet("allowLambda"); //pre-lambda guard
this.allowMethodReferences = source.allowMethodReferences() &&
fac.options.isSet("allowMethodReferences"); //pre-lambda guard
+ this.allowDefaultMethods = source.allowDefaultMethods() &&
+ fac.options.isSet("allowDefaultMethods"); //pre-lambda guard
this.keepDocComments = keepDocComments;
docComments = newDocCommentTable(keepDocComments);
this.keepLineMap = keepLineMap;
@@ -185,6 +187,10 @@
*/
boolean allowMethodReferences;
+ /** Switch: should we allow default methods in interfaces?
+ */
+ boolean allowDefaultMethods;
+
/** Switch: should we keep docComments?
*/
boolean keepDocComments;
@@ -2311,6 +2317,7 @@
case SYNCHRONIZED: flag = Flags.SYNCHRONIZED; break;
case STRICTFP : flag = Flags.STRICTFP; break;
case MONKEYS_AT : flag = Flags.ANNOTATION; break;
+ case DEFAULT : checkDefaultMethods(); flag = Flags.DEFAULT; break;
case ERROR : flag = 0; nextToken(); break;
default: break loop;
}
@@ -3361,6 +3368,12 @@
allowMethodReferences = true;
}
}
+ void checkDefaultMethods() {
+ if (!allowDefaultMethods) {
+ log.error(token.pos, "default.methods.not.supported.in.source", source.name);
+ allowDefaultMethods = true;
+ }
+ }
/*
* a functional source tree and end position mappings