src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java
changeset 48054 702043a4cdeb
parent 47957 7175a92b6fd7
child 48932 9e3f2ec326ba
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java	Mon Dec 04 10:13:58 2017 +0100
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java	Mon Dec 04 17:54:49 2017 +0000
@@ -29,6 +29,7 @@
 
 import com.sun.source.tree.LambdaExpressionTree;
 import com.sun.tools.javac.code.Source;
+import com.sun.tools.javac.code.Source.Feature;
 import com.sun.tools.javac.code.Type;
 import com.sun.tools.javac.code.Types;
 import com.sun.tools.javac.comp.ArgumentAttr.LocalCacheContext;
@@ -128,7 +129,7 @@
         String findOpt = options.get("find");
         //parse modes
         Source source = Source.instance(context);
-        allowDiamondWithAnonymousClassCreation = source.allowDiamondWithAnonymousClassCreation();
+        allowDiamondWithAnonymousClassCreation = Feature.DIAMOND_WITH_ANONYMOUS_CLASS_CREATION.allowedInSource(source);
         analyzerModes = AnalyzerMode.getAnalyzerModes(findOpt, source);
     }
 
@@ -137,17 +138,17 @@
      * the {@code -XDfind} option.
      */
     enum AnalyzerMode {
-        DIAMOND("diamond", Source::allowDiamond),
-        LAMBDA("lambda", Source::allowLambda),
-        METHOD("method", Source::allowGraphInference),
-        LOCAL("local", Source::allowLocalVariableTypeInference);
+        DIAMOND("diamond", Feature.DIAMOND),
+        LAMBDA("lambda", Feature.LAMBDA),
+        METHOD("method", Feature.GRAPH_INFERENCE),
+        LOCAL("local", Feature.LOCAL_VARIABLE_TYPE_INFERENCE);
 
         final String opt;
-        final Predicate<Source> sourceFilter;
+        final Feature feature;
 
-        AnalyzerMode(String opt, Predicate<Source> sourceFilter) {
+        AnalyzerMode(String opt, Feature feature) {
             this.opt = opt;
-            this.sourceFilter = sourceFilter;
+            this.feature = feature;
         }
 
         /**
@@ -168,7 +169,7 @@
             for (AnalyzerMode mode : values()) {
                 if (modes.contains(mode.opt)) {
                     res.add(mode);
-                } else if (modes.contains("-" + mode.opt) || !mode.sourceFilter.test(source)) {
+                } else if (modes.contains("-" + mode.opt) || !mode.feature.allowedInSource(source)) {
                     res.remove(mode);
                 }
             }