langtools/src/share/classes/com/sun/tools/javap/JavapTask.java
changeset 862 44f1d401c8f5
parent 860 c7a22d6d7184
child 1038 fbe81cf1123d
--- a/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Tue Jul 08 17:53:03 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Tue Jul 08 18:06:19 2008 -0700
@@ -140,24 +140,31 @@
 
         new Option(false, "-public") {
             void process(JavapTask task, String opt, String arg) {
+                task.options.accessOptions.add(opt);
                 task.options.showAccess = AccessFlags.ACC_PUBLIC;
             }
         },
 
         new Option(false, "-protected") {
             void process(JavapTask task, String opt, String arg) {
+                task.options.accessOptions.add(opt);
                 task.options.showAccess = AccessFlags.ACC_PROTECTED;
             }
         },
 
         new Option(false, "-package") {
             void process(JavapTask task, String opt, String arg) {
+                task.options.accessOptions.add(opt);
                 task.options.showAccess = 0;
             }
         },
 
         new Option(false, "-p", "-private") {
             void process(JavapTask task, String opt, String arg) {
+                if (!task.options.accessOptions.contains("-p") &&
+                        !task.options.accessOptions.contains("-private")) {
+                    task.options.accessOptions.add(opt);
+                }
                 task.options.showAccess = AccessFlags.ACC_PRIVATE;
             }
         },
@@ -386,6 +393,16 @@
                 throw new BadArgs("err.unknown.option", arg).showUsage(true);
         }
 
+        if (!options.compat && options.accessOptions.size() > 1) {
+            StringBuilder sb = new StringBuilder();
+            for (String opt: options.accessOptions) {
+                if (sb.length() > 0)
+                    sb.append(" ");
+                sb.append(opt);
+            }
+            throw new BadArgs("err.incompatible.options", sb);
+        }
+
         if (options.ignoreSymbolFile && fileManager instanceof JavapFileManager)
             ((JavapFileManager) fileManager).setIgnoreSymbolFile(true);