langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java
changeset 39812 6272642715a1
parent 39601 5b37e511ae4b
child 40232 4995ab1a4558
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java	Tue Jul 26 15:52:51 2016 +0200
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java	Tue Jul 26 07:45:29 2016 -0700
@@ -346,21 +346,6 @@
         }
     },
 
-    DIAGS("-XDdiags=", null, HIDDEN, INFO) {
-        @Override
-        public boolean process(OptionHelper helper, String option) {
-            option = option.substring(option.indexOf('=') + 1);
-            String diagsOption = option.contains("%") ?
-                "-XDdiagsFormat=" :
-                "-XDdiags=";
-            diagsOption += option;
-            if (XD.matches(diagsOption))
-                return XD.process(helper, diagsOption);
-            else
-                return false;
-        }
-    },
-
     HELP("-help", "opt.help", STANDARD, INFO) {
         @Override
         public boolean process(OptionHelper helper, String option) {
@@ -506,30 +491,6 @@
 
     XDIAGS("-Xdiags:", "opt.diags", EXTENDED, BASIC, ONEOF, "compact", "verbose"),
 
-    /* This is a back door to the compiler's option table.
-     * -XDx=y sets the option x to the value y.
-     * -XDx sets the option x to the value x.
-     */
-    XD("-XD", null, HIDDEN, BASIC) {
-        @Override
-        public boolean matches(String s) {
-            return s.startsWith(text);
-        }
-        @Override
-        public boolean process(OptionHelper helper, String option) {
-            return process(helper, option, option.substring(text.length()));
-        }
-
-        @Override
-        public boolean process(OptionHelper helper, String option, String arg) {
-            int eq = arg.indexOf('=');
-            String key = (eq < 0) ? arg : arg.substring(0, eq);
-            String value = (eq < 0) ? arg : arg.substring(eq+1);
-            helper.put(key, value);
-            return false;
-        }
-    },
-
     XDEBUG("-Xdebug:", null, HIDDEN, BASIC) {
         @Override
         public boolean process(OptionHelper helper, String option) {
@@ -556,6 +517,37 @@
         }
     },
 
+    DIAGS("-diags:", null, HIDDEN, BASIC, true) {
+        @Override
+        public boolean process(OptionHelper helper, String option) {
+            return HiddenGroup.DIAGS.process(helper, option);
+        }
+    },
+
+    /* This is a back door to the compiler's option table.
+     * -XDx=y sets the option x to the value y.
+     * -XDx sets the option x to the value x.
+     */
+    XD("-XD", null, HIDDEN, BASIC) {
+        @Override
+        public boolean matches(String s) {
+            return s.startsWith(text);
+        }
+        @Override
+        public boolean process(OptionHelper helper, String option) {
+            return process(helper, option, option.substring(text.length()));
+        }
+
+        @Override
+        public boolean process(OptionHelper helper, String option, String arg) {
+            int eq = arg.indexOf('=');
+            String key = (eq < 0) ? arg : arg.substring(0, eq);
+            String value = (eq < 0) ? arg : arg.substring(eq+1);
+            helper.put(key, value);
+            return false;
+        }
+    },
+
     XADDEXPORTS("-XaddExports:", "opt.arg.addExports", "opt.addExports", EXTENDED, BASIC) {
         @Override
         public boolean process(OptionHelper helper, String option) {
@@ -672,6 +664,26 @@
         ANYOF
     }
 
+    enum HiddenGroup {
+        DIAGS("diags");
+
+        final String text;
+
+        HiddenGroup(String text) {
+            this.text = text;
+        }
+
+        public boolean process(OptionHelper helper, String option) {
+            String p = option.substring(option.indexOf(':') + 1).trim();
+            String[] subOptions = p.split(";");
+            for (String subOption : subOptions) {
+                subOption = text + "." + subOption.trim();
+                XD.process(helper, subOption, subOption);
+            }
+            return false;
+        }
+    }
+
     public final String text;
 
     final OptionKind kind;
@@ -705,6 +717,12 @@
         this(text, null, descrKey, kind, group, null, null, false);
     }
 
+    Option(String text, String descrKey,
+            OptionKind kind, OptionGroup group,
+            boolean doHasSuffix) {
+        this(text, null, descrKey, kind, group, null, null, doHasSuffix);
+    }
+
     Option(String text, String argsNameKey, String descrKey,
             OptionKind kind, OptionGroup group) {
         this(text, argsNameKey, descrKey, kind, group, null, null, false);