makes GWT boolean flags togglable
Change-Id: I5eee53b0b50fde31f3e750ad85c3e089a52fcbab
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
index e8f65e7..2b4f76e 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
@@ -182,11 +182,6 @@
}
@Override
- public boolean isUseGuiLogger() {
- return false;
- }
-
- @Override
public boolean isValidateOnly() {
return false;
}
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
index 08380bd..ab3a83b 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
@@ -98,6 +98,13 @@
}
/**
+ * Whether the codeServer should allow missing source directories.
+ */
+ boolean shouldAllowMissingSourceDir() {
+ return allowMissingSourceDir;
+ }
+
+ /**
* Whether the codeServer should start without precompiling modules.
*/
boolean getNoPrecompile() {
@@ -159,39 +166,49 @@
private class NoPrecompileFlag extends ArgHandlerFlag {
@Override
- public String getTag() {
- return "-noprecompile";
+ public String getLabel() {
+ return "precompile";
}
@Override
- public String getPurpose() {
- return "Disables pre-compilation of modules.";
+ public String getPurposeSnippet() {
+ return "Precompile modules.";
}
@Override
- public boolean setFlag() {
- noPrecompile = true;
+ public boolean setFlag(boolean value) {
+ noPrecompile = !value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return !noPrecompile;
+ }
}
private class CompileTestFlag extends ArgHandlerFlag {
@Override
- public String getTag() {
- return "-compileTest";
+ public String getLabel() {
+ return "compileTest";
}
@Override
- public String getPurpose() {
- return "Just compile the modules and exit.";
+ public String getPurposeSnippet() {
+ return "Exits after compiling the modules. The exit code will be 0 if the compile succeeded.";
}
@Override
- public boolean setFlag() {
- isCompileTest = true;
+ public boolean setFlag(boolean value) {
+ isCompileTest = value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return isCompileTest;
+ }
}
private class BindAddressFlag extends ArgHandlerString {
@@ -278,20 +295,25 @@
private class AllowMissingSourceDirFlag extends ArgHandlerFlag {
@Override
- public String getTag() {
- return "-allowMissingSrc";
+ public String getLabel() {
+ return "allowMissingSrc";
}
@Override
- public String getPurpose() {
- return "Disables the directory existence check for -src flags.";
+ public String getPurposeSnippet() {
+ return "Allows -src flags to reference missing directories.";
}
@Override
- public boolean setFlag() {
- allowMissingSourceDir = true;
+ public boolean setFlag(boolean value) {
+ allowMissingSourceDir = value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return allowMissingSourceDir;
+ }
}
private class SourceFlag extends ArgHandler {
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
index b6b63e7..865f095 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
@@ -193,11 +193,6 @@
}
@Override
- public final void setUseGuiLogger(boolean useGuiLogger) {
- throw new UnsupportedOperationException();
- }
-
- @Override
public final void setValidateOnly(boolean validateOnly) {
throw new UnsupportedOperationException();
}
diff --git a/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java b/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java
index d0964de..50b4bec 100644
--- a/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java
+++ b/dev/core/src/com/google/gwt/dev/CompileArgProcessor.java
@@ -17,13 +17,11 @@
import com.google.gwt.dev.util.arg.ArgHandlerLogLevel;
import com.google.gwt.dev.util.arg.ArgHandlerModuleName;
-import com.google.gwt.dev.util.arg.ArgHandlerTreeLoggerFlag;
import com.google.gwt.dev.util.arg.ArgHandlerWorkDirRequired;
abstract class CompileArgProcessor extends ArgProcessorBase {
public CompileArgProcessor(CompileTaskOptions options) {
registerHandler(new ArgHandlerLogLevel(options));
- registerHandler(new ArgHandlerTreeLoggerFlag(options));
registerHandler(new ArgHandlerWorkDirRequired(options));
registerHandler(new ArgHandlerModuleName(options) {
@Override
diff --git a/dev/core/src/com/google/gwt/dev/CompileTaskOptions.java b/dev/core/src/com/google/gwt/dev/CompileTaskOptions.java
index 82965c9..8b04846 100644
--- a/dev/core/src/com/google/gwt/dev/CompileTaskOptions.java
+++ b/dev/core/src/com/google/gwt/dev/CompileTaskOptions.java
@@ -15,7 +15,6 @@
*/
package com.google.gwt.dev;
-import com.google.gwt.dev.util.arg.OptionGuiLogger;
import com.google.gwt.dev.util.arg.OptionLogLevel;
import com.google.gwt.dev.util.arg.OptionModuleName;
import com.google.gwt.dev.util.arg.OptionWorkDir;
@@ -23,6 +22,5 @@
/**
* A common set of options for all compile tasks.
*/
-public interface CompileTaskOptions extends OptionGuiLogger, OptionModuleName,
- OptionLogLevel, OptionWorkDir {
+public interface CompileTaskOptions extends OptionModuleName, OptionLogLevel, OptionWorkDir {
}
diff --git a/dev/core/src/com/google/gwt/dev/CompileTaskOptionsImpl.java b/dev/core/src/com/google/gwt/dev/CompileTaskOptionsImpl.java
index cabbc4f..3855eb8 100644
--- a/dev/core/src/com/google/gwt/dev/CompileTaskOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/CompileTaskOptionsImpl.java
@@ -28,7 +28,6 @@
private Type logLevel;
private final List<String> moduleNames = new ArrayList<String>();
- private boolean useGuiLogger;
private File workDir;
public CompileTaskOptionsImpl() {
@@ -45,7 +44,6 @@
public void copyFrom(CompileTaskOptions other) {
setLogLevel(other.getLogLevel());
setModuleNames(other.getModuleNames());
- setUseGuiLogger(other.isUseGuiLogger());
setWorkDir(other.getWorkDir());
}
@@ -65,10 +63,6 @@
return workDir;
}
- public boolean isUseGuiLogger() {
- return useGuiLogger;
- }
-
public void setLogLevel(Type logLevel) {
this.logLevel = logLevel;
}
@@ -78,10 +72,6 @@
this.moduleNames.addAll(moduleNames);
}
- public void setUseGuiLogger(boolean useGuiLogger) {
- this.useGuiLogger = useGuiLogger;
- }
-
public void setWorkDir(File workDir) {
this.workDir = workDir;
}
diff --git a/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java b/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
index 914713d..42d4276 100644
--- a/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
+++ b/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
@@ -18,7 +18,6 @@
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.dev.javac.CompilationProblemReporter;
-import com.google.gwt.dev.shell.log.SwingLoggerPanel;
import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
/**
@@ -38,49 +37,17 @@
* is used, this method will not return until its window is closed by the
* user.
*/
- public static boolean runWithAppropriateLogger(CompileTaskOptions options,
- final CompileTask task) {
+ public static boolean runWithAppropriateLogger(
+ CompileTaskOptions options, final CompileTask task) {
// Set any platform specific system properties.
BootStrapPlatform.applyPlatformHacks();
- // TODO(jat): add support for GUI logger back
- if (false && options.isUseGuiLogger()) {
- // Initialize a tree logger window.
- SwingLoggerPanel loggerWindow = new SwingLoggerPanel(
- options.getLogLevel(), null);
-
- // Eager AWT initialization for OS X to ensure safe coexistence with SWT.
- BootStrapPlatform.initGui();
-
- final TreeLogger logger = loggerWindow.getLogger();
- final boolean[] success = new boolean[1];
-
- // Compiler will be spawned onto a second thread, UI thread for tree
- // logger will remain on the main.
- Thread compilerThread = new Thread(new Runnable() {
- public void run() {
- success[0] = doRun(logger, task);
- }
- });
-
- compilerThread.setName("GWT Compiler Thread");
- compilerThread.start();
- // TODO(jat): create an app frame for loggerWindow
-
- // Even if the tree logger window is closed, we wait for the compiler
- // to finish.
- waitForThreadToTerminate(compilerThread);
-
- return success[0];
- } else {
- // Compile tasks without -treeLogger should run headless.
- if (System.getProperty("java.awt.headless") == null) {
- System.setProperty("java.awt.headless", "true");
- }
- PrintWriterTreeLogger logger = new PrintWriterTreeLogger();
- logger.setMaxDetail(options.getLogLevel());
- return doRun(logger, task);
+ if (System.getProperty("java.awt.headless") == null) {
+ System.setProperty("java.awt.headless", "true");
}
+ PrintWriterTreeLogger logger = new PrintWriterTreeLogger();
+ logger.setMaxDetail(options.getLogLevel());
+ return doRun(logger, task);
}
private static boolean doRun(TreeLogger logger, CompileTask task) {
diff --git a/dev/core/src/com/google/gwt/dev/DevModeBase.java b/dev/core/src/com/google/gwt/dev/DevModeBase.java
index d4374c8..1440210 100644
--- a/dev/core/src/com/google/gwt/dev/DevModeBase.java
+++ b/dev/core/src/com/google/gwt/dev/DevModeBase.java
@@ -287,30 +287,38 @@
}
/**
- * Handles the -noserver command line flag.
+ * Runs a convenient embedded web server.
*/
protected static class ArgHandlerNoServerFlag extends ArgHandlerFlag {
+
private final OptionNoServer options;
public ArgHandlerNoServerFlag(OptionNoServer options) {
this.options = options;
+
+ addTagValue("-noserver", false);
}
@Override
- public String getPurpose() {
- return "Prevents the embedded web server from running";
+ public String getPurposeSnippet() {
+ return "Starts a servlet container serving the directory specified by the -war flag.";
}
@Override
- public String getTag() {
- return "-noserver";
+ public String getLabel() {
+ return "startServer";
}
@Override
- public boolean setFlag() {
- options.setNoServer(true);
+ public boolean setFlag(boolean value) {
+ options.setNoServer(!value);
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return !options.isNoServer();
+ }
}
/**
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
index 7a5bbf9..d853cf6 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
@@ -34,7 +34,7 @@
private int fragmentCount = -1;
private int fragmentsMerge = -1;
private boolean inlineLiteralParameters = true;
- private int optimizationLevel = OptionOptimize.OPTIMIZE_LEVEL_MAX;
+ private int optimizationLevel = OptionOptimize.OPTIMIZE_LEVEL_DEFAULT;
private boolean optimizeDataflow = true;
private boolean optimizePrecompile = false;
private boolean ordinalizeEnums = true;
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompileReport.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompileReport.java
index 1e90f0d..5186ed6 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompileReport.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompileReport.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler that enables Story Of Your Compile data-collection.
+ * Enables Story Of Your Compile data-collection.
*/
public class ArgHandlerCompileReport extends ArgHandlerFlag {
@@ -29,18 +29,23 @@
}
@Override
- public String getPurpose() {
- return "Create a compile report that tells the Story of Your Compile";
+ public String getPurposeSnippet() {
+ return "Compile a report that tells the \"Story of Your Compile\".";
}
@Override
- public String getTag() {
- return "-compileReport";
+ public String getLabel() {
+ return "compileReport";
}
@Override
- public boolean setFlag() {
- options.setSoycEnabled(true);
+ public boolean setFlag(boolean value) {
+ options.setSoycEnabled(value);
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return options.isSoycEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompilerMetrics.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompilerMetrics.java
index 05e74db..e775839 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompilerMetrics.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerCompilerMetrics.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler that enables Compiler Metrics.
+ * Enables Compiler Metrics.
*/
public class ArgHandlerCompilerMetrics extends ArgHandlerFlag {
@@ -29,13 +29,13 @@
}
@Override
- public String getPurpose() {
- return "Enable CompilerMetrics";
+ public String getPurposeSnippet() {
+ return "Gather compiler metrics.";
}
@Override
- public String getTag() {
- return "-XcompilerMetrics";
+ public String getLabel() {
+ return "compilerMetrics";
}
@Override
@@ -44,8 +44,18 @@
}
@Override
- public boolean setFlag() {
- options.setCompilerMetricsEnabled(true);
+ public boolean setFlag(boolean value) {
+ options.setCompilerMetricsEnabled(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return options.isCompilerMetricsEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAggressiveOptimization.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAggressiveOptimization.java
index e6d42e7..3c8602c 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAggressiveOptimization.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableAggressiveOptimization.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableAggressiveOptimization command line flag.<br />
+ * Enables several aggressive optimization options.<br />
*
* Has been deprecated but preserved for backwards compatibility. The impact it has now is via its
* cascaded modification of five more specific options (each of which is also modifiable via flag).
@@ -44,17 +44,19 @@
this.optimizeDataflowOption = option;
this.ordinalizeEnumsOption = option;
this.removeDuplicateFunctionsOption = option;
+
+ addTagValue("-XdisableAggressiveOptimization", false);
}
@Override
- public String getPurpose() {
- return "Troubleshooting: Prevent the Production Mode compiler from "
- + "performing aggressive optimizations.";
+ public String getPurposeSnippet() {
+ return "DEPRECATED: Tells the Production Mode compiler to perform "
+ + "aggressive optimizations.";
}
@Override
- public String getTag() {
- return "-XdisableAggressiveOptimization";
+ public String getLabel() {
+ return "aggressiveOptimizations";
}
@Override
@@ -63,13 +65,24 @@
}
@Override
- public boolean setFlag() {
- aggressivelyOptimizeOption.setAggressivelyOptimize(false);
- clusterSimilarFunctionsOption.setClusterSimilarFunctions(false);
- inlineLiteralParametersOption.setInlineLiteralParameters(false);
- optimizeDataflowOption.setOptimizeDataflow(false);
- ordinalizeEnumsOption.setOrdinalizeEnums(false);
- removeDuplicateFunctionsOption.setRemoveDuplicateFunctions(false);
+ public boolean setFlag(boolean value) {
+ aggressivelyOptimizeOption.setAggressivelyOptimize(value);
+ clusterSimilarFunctionsOption.setClusterSimilarFunctions(value);
+ inlineLiteralParametersOption.setInlineLiteralParameters(value);
+ optimizeDataflowOption.setOptimizeDataflow(value);
+ ordinalizeEnumsOption.setOrdinalizeEnums(value);
+ removeDuplicateFunctionsOption.setRemoveDuplicateFunctions(value);
+
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return aggressivelyOptimizeOption.isAggressivelyOptimize();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java
index 29c8a1c..bf97d6c 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler to provide the -disableCastChecking flag.
+ * Enables run-time cast checking.
*/
public class ArgHandlerDisableCastChecking extends ArgHandlerFlag {
@@ -26,21 +26,33 @@
public ArgHandlerDisableCastChecking(OptionDisableCastChecking option) {
this.option = option;
+
+ addTagValue("-XdisableCastChecking", false);
}
@Override
- public String getPurpose() {
- return "EXPERIMENTAL: Disables run-time checking of cast operations";
+ public String getPurposeSnippet() {
+ return "Insert run-time checking of cast operations.";
}
@Override
- public String getTag() {
- return "-XdisableCastChecking";
+ public String getLabel() {
+ return "checkCasts";
}
@Override
- public boolean setFlag() {
- option.setCastCheckingDisabled(true);
+ public boolean setFlag(boolean value) {
+ option.setCastCheckingDisabled(!value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return !option.isCastCheckingDisabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClassMetadata.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClassMetadata.java
index 13590a6..552cdc7 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClassMetadata.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClassMetadata.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler to provide the -disableClassMetadata flag.
+ * Includes metadata for class name methods.
*/
public class ArgHandlerDisableClassMetadata extends ArgHandlerFlag {
@@ -26,21 +26,33 @@
public ArgHandlerDisableClassMetadata(OptionDisableClassMetadata option) {
this.option = option;
+
+ addTagValue("-XdisableClassMetadata", false);
}
@Override
- public String getPurpose() {
- return "EXPERIMENTAL: Disables some java.lang.Class methods (e.g. getName())";
+ public String getPurposeSnippet() {
+ return "Include metadata for some java.lang.Class methods (e.g. getName()).";
}
@Override
- public String getTag() {
- return "-XdisableClassMetadata";
+ public String getLabel() {
+ return "classMetadata";
}
@Override
- public boolean setFlag() {
- option.setClassMetadataDisabled(true);
+ public boolean setFlag(boolean value) {
+ option.setClassMetadataDisabled(!value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return !option.isClassMetadataDisabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClusterSimilarFunctions.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClusterSimilarFunctions.java
index 37df471..d329e1d 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClusterSimilarFunctions.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableClusterSimilarFunctions.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableClusterSimilarFunctions command line flag.
+ * Clusters similar functions in the output to improve compression.
*/
public final class ArgHandlerDisableClusterSimilarFunctions extends ArgHandlerFlag {
@@ -26,17 +26,18 @@
public ArgHandlerDisableClusterSimilarFunctions(OptionClusterSimilarFunctions option) {
this.option = option;
+
+ addTagValue("-XdisableClusterSimilarFunctions", false);
}
@Override
- public String getPurpose() {
- return "Troubleshooting: Prevent the compiler from clustering similar "
- + "functions in the output.";
+ public String getPurposeSnippet() {
+ return "Cluster similar functions in the output to improve compression.";
}
@Override
- public String getTag() {
- return "-XdisableClusterSimilarFunctions";
+ public String getLabel() {
+ return "clusterFunctions";
}
@Override
@@ -45,8 +46,18 @@
}
@Override
- public boolean setFlag() {
- option.setClusterSimilarFunctions(false);
+ public boolean setFlag(boolean value) {
+ option.setClusterSimilarFunctions(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.shouldClusterSimilarFunctions();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableGeneratingOnShards.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableGeneratingOnShards.java
index c01cb2a..6555557 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableGeneratingOnShards.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableGeneratingOnShards.java
@@ -32,16 +32,18 @@
public ArgHandlerDisableGeneratingOnShards(
OptionEnableGeneratingOnShards options) {
this.options = options;
+
+ addTagValue("-XdisableGeneratingOnShards", false);
}
@Override
- public String getPurpose() {
- return "Disables running generators on CompilePerms shards, even when it would be a likely speedup";
+ public String getPurposeSnippet() {
+ return "Run generators on CompilePerms shards for a likely speedup.";
}
@Override
- public String getTag() {
- return "-XdisableGeneratingOnShards";
+ public String getLabel() {
+ return "generateOnShards";
}
@Override
@@ -50,8 +52,18 @@
}
@Override
- public boolean setFlag() {
- options.setEnabledGeneratingOnShards(false);
+ public boolean setFlag(boolean value) {
+ options.setEnabledGeneratingOnShards(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return options.isEnabledGeneratingOnShards();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableInlineLiteralParameters.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableInlineLiteralParameters.java
index 9f4087c..c0515f9 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableInlineLiteralParameters.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableInlineLiteralParameters.java
@@ -18,7 +18,8 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableInlineLiteralParameters command line flag.
+ * Inlines literal parameters to shrink function declarations and provide more deadcode elimination
+ * possibilities.
*/
public final class ArgHandlerDisableInlineLiteralParameters extends ArgHandlerFlag {
@@ -26,16 +27,19 @@
public ArgHandlerDisableInlineLiteralParameters(OptionInlineLiteralParameters option) {
this.option = option;
+
+ addTagValue("-XdisableInlineLiteralParameters", false);
}
@Override
- public String getPurpose() {
- return "Troubleshooting: Prevent the compiler from inlining literal parameters.";
+ public String getPurposeSnippet() {
+ return "Inline literal parameters to shrink function declarations and "
+ + "provide more deadcode elimination possibilities.";
}
@Override
- public String getTag() {
- return "-XdisableInlineLiteralParameters";
+ public String getLabel() {
+ return "inlineLiteralParameters";
}
@Override
@@ -44,8 +48,18 @@
}
@Override
- public boolean setFlag() {
- option.setInlineLiteralParameters(false);
+ public boolean setFlag(boolean value) {
+ option.setInlineLiteralParameters(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.shouldInlineLiteralParameters();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOptimizeDataflow.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOptimizeDataflow.java
index aa5e1bd..eda7d2f 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOptimizeDataflow.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOptimizeDataflow.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableOptimizeDataflow command line flag.
+ * Analyzes and optimizes dataflow.
*/
public final class ArgHandlerDisableOptimizeDataflow extends ArgHandlerFlag {
@@ -26,16 +26,18 @@
public ArgHandlerDisableOptimizeDataflow(OptionOptimizeDataflow option) {
this.option = option;
+
+ addTagValue("-XdisableOptimizeDataflow", false);
}
@Override
- public String getPurpose() {
- return "Troubleshooting: Prevent the compiler from optimizing dataflow.";
+ public String getPurposeSnippet() {
+ return "Analyze and optimize dataflow.";
}
@Override
- public String getTag() {
- return "-XdisableOptimizeDataflow";
+ public String getLabel() {
+ return "optimizeDataflow";
}
@Override
@@ -44,8 +46,18 @@
}
@Override
- public boolean setFlag() {
- option.setOptimizeDataflow(false);
+ public boolean setFlag(boolean value) {
+ option.setOptimizeDataflow(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.shouldOptimizeDataflow();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOrdinalizeEnums.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOrdinalizeEnums.java
index 4141f39..8579840 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOrdinalizeEnums.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableOrdinalizeEnums.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableOrdinalizeEnums command line flag.
+ * Ordinalizes enums to reduce some large strings.
*/
public final class ArgHandlerDisableOrdinalizeEnums extends ArgHandlerFlag {
@@ -26,16 +26,18 @@
public ArgHandlerDisableOrdinalizeEnums(OptionOrdinalizeEnums option) {
this.option = option;
+
+ addTagValue("-XdisableOrdinalizeEnums", false);
}
@Override
- public String getPurpose() {
- return "Troubleshooting: Prevent the compiler from ordinalizing enums.";
+ public String getPurposeSnippet() {
+ return "Ordinalize enums to reduce some large strings.";
}
@Override
- public String getTag() {
- return "-XdisableOrdinalizeEnums";
+ public String getLabel() {
+ return "ordinalizeEnums";
}
@Override
@@ -44,8 +46,18 @@
}
@Override
- public boolean setFlag() {
- option.setOrdinalizeEnums(false);
+ public boolean setFlag(boolean value) {
+ option.setOrdinalizeEnums(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.shouldOrdinalizeEnums();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRemoveDuplicateFunctions.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRemoveDuplicateFunctions.java
index 67d72d1..db8ff6f 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRemoveDuplicateFunctions.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRemoveDuplicateFunctions.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableRemoveDuplicateFunctions command line flag.
+ * Removes duplicate functions to shrink output.
*/
public final class ArgHandlerDisableRemoveDuplicateFunctions extends ArgHandlerFlag {
@@ -26,16 +26,19 @@
public ArgHandlerDisableRemoveDuplicateFunctions(OptionRemoveDuplicateFunctions option) {
this.option = option;
+
+ addTagValue("-XdisableRemoveDuplicateFunctions", false);
}
@Override
- public String getPurpose() {
- return "Troubleshooting: Prevent the compiler from removing duplicate functions.";
+ public String getPurposeSnippet() {
+ return "Removing duplicate functions. Will interfere with stacktrace "
+ + "deobfuscation and so is only honored when compiler.stackMode is set to strip.";
}
@Override
- public String getTag() {
- return "-XdisableRemoveDuplicateFunctions";
+ public String getLabel() {
+ return "removeDuplicateFunctions";
}
@Override
@@ -44,8 +47,18 @@
}
@Override
- public boolean setFlag() {
- option.setRemoveDuplicateFunctions(false);
+ public boolean setFlag(boolean value) {
+ option.setRemoveDuplicateFunctions(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.shouldRemoveDuplicateFunctions();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java
index 581ba32..07f0d78 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler than can be used to disable runAsync code-splitting.
+ * Splits code on runAsync boundaries.
*/
public class ArgHandlerDisableRunAsync extends ArgHandlerFlag {
@@ -26,16 +26,18 @@
public ArgHandlerDisableRunAsync(OptionRunAsyncEnabled option) {
this.option = option;
+
+ addTagValue("-XdisableRunAsync", false);
}
@Override
- public String getPurpose() {
- return "Disable runAsync code-splitting";
+ public String getPurposeSnippet() {
+ return "Split code on runAsync boundaries.";
}
@Override
- public String getTag() {
- return "-XdisableRunAsync";
+ public String getLabel() {
+ return "codeSplitting";
}
@Override
@@ -44,8 +46,18 @@
}
@Override
- public boolean setFlag() {
- option.setRunAsyncEnabled(false);
+ public boolean setFlag(boolean value) {
+ option.setRunAsyncEnabled(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.isRunAsyncEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableSoycHtml.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableSoycHtml.java
index e6b9608..42f8e95 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableSoycHtml.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableSoycHtml.java
@@ -18,25 +18,29 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler that enables detailed Story Of Your Compile data collection,
- * but disables HTML report generation, leaving only XML output.
+ * Collects SOYC metrics and output in xml but not html format.
*/
public class ArgHandlerDisableSoycHtml extends ArgHandlerFlag {
- private final OptionSoycHtmlDisabled options;
+ private final OptionSoycHtmlDisabled optionSoycHtmlDisabled;
+ private final OptionSoycEnabled optionSoycEnabled;
- public ArgHandlerDisableSoycHtml(OptionSoycHtmlDisabled options) {
- this.options = options;
+ public <T extends OptionSoycHtmlDisabled & OptionSoycEnabled> ArgHandlerDisableSoycHtml(
+ T options) {
+ optionSoycHtmlDisabled = options;
+ optionSoycEnabled = options;
+
+ addTagValue("-XdisableSoycHtml", false);
}
@Override
- public String getPurpose() {
- return "Enable SOYC reporting without HTML report generation.";
+ public String getPurposeSnippet() {
+ return "Collect SOYC metrics and output in xml but not html format.";
}
@Override
- public String getTag() {
- return "-XdisableSoycHtml";
+ public String getLabel() {
+ return "soycHtmlOnly";
}
@Override
@@ -45,9 +49,19 @@
}
@Override
- public boolean setFlag() {
- options.setSoycHtmlDisabled(true);
- options.setSoycEnabled(true);
+ public boolean setFlag(boolean value) {
+ optionSoycHtmlDisabled.setSoycHtmlDisabled(!value);
+ optionSoycEnabled.setSoycEnabled(!value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return !optionSoycHtmlDisabled.isSoycHtmlDisabled() && !optionSoycEnabled.isSoycEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableUpdateCheck.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableUpdateCheck.java
index 142f69c..3123879 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableUpdateCheck.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableUpdateCheck.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -XdisableUpdateCheck command line flag.
+ * Checks to see if an updated version of GWT is available.
*/
public final class ArgHandlerDisableUpdateCheck extends ArgHandlerFlag {
@@ -26,16 +26,18 @@
public ArgHandlerDisableUpdateCheck(OptionDisableUpdateCheck option) {
this.option = option;
+
+ addTagValue("-XdisableUpdateCheck", false);
}
@Override
- public String getPurpose() {
- return "Disable the check to see if an update version of GWT is available";
+ public String getPurposeSnippet() {
+ return "Check to see if an updated version of GWT is available.";
}
@Override
- public String getTag() {
- return "-XdisableUpdateCheck";
+ public String getLabel() {
+ return "checkForUpdates";
}
@Override
@@ -44,8 +46,18 @@
}
@Override
- public boolean setFlag() {
- option.setDisableUpdateCheck(true);
+ public boolean setFlag(boolean value) {
+ option.setDisableUpdateCheck(!value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return !option.isUpdateCheckDisabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDraftCompile.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDraftCompile.java
index f60d53a..7e29eb0 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDraftCompile.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDraftCompile.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler to enable draft compiles.
+ * Compiles quickly with minimal optimizations.
*/
public class ArgHandlerDraftCompile extends ArgHandlerFlag {
@@ -46,24 +46,34 @@
}
@Override
- public String getPurpose() {
- return "Enable faster, but less-optimized, compilations";
+ public String getPurposeSnippet() {
+ return "Compile quickly with minimal optimizations.";
}
@Override
- public String getTag() {
- return "-draftCompile";
+ public String getLabel() {
+ return "draftCompile";
}
@Override
- public boolean setFlag() {
- optimizeOption.setOptimizationLevel(OptionOptimize.OPTIMIZE_LEVEL_DRAFT);
- aggressivelyOptimizeOption.setAggressivelyOptimize(false);
- clusterSimilarFunctionsOption.setClusterSimilarFunctions(false);
- inlineLiteralParametersOption.setInlineLiteralParameters(false);
- optimizeDataflowOption.setOptimizeDataflow(false);
- ordinalizeEnumsOption.setOrdinalizeEnums(false);
- removeDuplicateFunctionsOption.setRemoveDuplicateFunctions(false);
+ public boolean setFlag(boolean value) {
+ int optimizeLevel =
+ value ? OptionOptimize.OPTIMIZE_LEVEL_DRAFT : OptionOptimize.OPTIMIZE_LEVEL_DEFAULT;
+ optimizeOption.setOptimizationLevel(optimizeLevel);
+
+ aggressivelyOptimizeOption.setAggressivelyOptimize(!value);
+ clusterSimilarFunctionsOption.setClusterSimilarFunctions(!value);
+ inlineLiteralParametersOption.setInlineLiteralParameters(!value);
+ optimizeDataflowOption.setOptimizeDataflow(!value);
+ ordinalizeEnumsOption.setOrdinalizeEnums(!value);
+ removeDuplicateFunctionsOption.setRemoveDuplicateFunctions(!value);
+
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return optimizeOption.getOptimizationLevel() == OptionOptimize.OPTIMIZE_LEVEL_DRAFT
+ && !aggressivelyOptimizeOption.isAggressivelyOptimize();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java
index f62bcd8..ce4e1cf 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableAssertions.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -ea command line flag.
+ * Includes assert statements in compiled output.
*/
public final class ArgHandlerEnableAssertions extends ArgHandlerFlag {
@@ -26,21 +26,28 @@
public ArgHandlerEnableAssertions(OptionEnableAssertions option) {
this.option = option;
+
+ addTagValue("-ea", true);
}
@Override
- public String getPurpose() {
- return "Debugging: causes the compiled output to check assert statements";
+ public String getPurposeSnippet() {
+ return "Include assert statements in compiled output.";
}
@Override
- public String getTag() {
- return "-ea";
+ public String getLabel() {
+ return "checkAssertions";
}
@Override
- public boolean setFlag() {
- option.setEnableAssertions(true);
+ public boolean setFlag(boolean value) {
+ option.setEnableAssertions(value);
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.isEnableAssertions();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableClosureCompiler.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableClosureCompiler.java
index 206cccd..3c8ab42 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableClosureCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableClosureCompiler.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler to provide the -enableClosureCompiler flag.
+ * Compiles output Javascript with the Closure compiler for even further optimizations.
*/
public class ArgHandlerEnableClosureCompiler extends ArgHandlerFlag {
@@ -26,21 +26,33 @@
public ArgHandlerEnableClosureCompiler(OptionEnableClosureCompiler option) {
this.option = option;
+
+ addTagValue("-XenableClosureCompiler", true);
}
@Override
- public String getPurpose() {
- return "EXPERIMENTAL: Enables Closure Compiler optimizations";
+ public String getPurposeSnippet() {
+ return "Compile output Javascript with the Closure compiler for even further optimizations.";
}
@Override
- public String getTag() {
- return "-XenableClosureCompiler";
+ public String getLabel() {
+ return "closureCompiler";
}
@Override
- public boolean setFlag() {
- option.setClosureCompilerEnabled(true);
+ public boolean setFlag(boolean value) {
+ option.setClosureCompilerEnabled(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.isClosureCompilerEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableGeneratorResultCaching.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableGeneratorResultCaching.java
index 9825457..625893e 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableGeneratorResultCaching.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerEnableGeneratorResultCaching.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler to provide the -XenableGeneratorResultCaching flag.
+ * Caches results of generators with stable output.
*
* Note: This is no longer needed since generator result caching is now enabled by default.
* It's left here for an interim period, so that uses of the flag can be removed.
@@ -27,25 +27,36 @@
public class ArgHandlerEnableGeneratorResultCaching extends ArgHandlerFlag {
public ArgHandlerEnableGeneratorResultCaching() {
+ addTagValue("-XenableGeneratorResultCaching", true);
}
@Override
- public String getPurpose() {
- return "Enables generator result caching, for those generators that implement it";
+ public String getPurposeSnippet() {
+ return "Cache results of generators with stable output.";
}
@Override
- public String getTag() {
- return "-XenableGeneratorResultCaching";
+ public String getLabel() {
+ return "cacheGeneratorResults";
}
-
+
@Override
public boolean isUndocumented() {
return true;
}
-
+
@Override
- public boolean setFlag() {
+ public boolean setFlag(boolean value) {
+ return true;
+ }
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
return true;
}
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerOptimize.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerOptimize.java
index 48cc787..1ac3b5f 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerOptimize.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerOptimize.java
@@ -19,20 +19,20 @@
/**
* Set the optimization level from the command line. For now, level 1 is the same
- * as draft compile, and level 9 is the same as the default (maximium optimization).
+ * as draft compile, and level 9 is the same as the default (maximum optimization).
*
* TODO(zundel): In theory, a level 0 should be possible, where all optimizers
* are eliminated for the fastest possible compile. In practice, code generation
* depends on some optimizers being run.
*/
public class ArgHandlerOptimize extends ArgHandlerInt {
-
+
private final OptionOptimize options;
public ArgHandlerOptimize(OptionOptimize options) {
this.options = options;
}
-
+
@Override
public String getPurpose() {
return "Sets the optimization level used by the compiler. 0=none 9=maximum.";
@@ -50,10 +50,9 @@
@Override
public void setInt(int level) {
- if (level <= OptionOptimize.OPTIMIZE_LEVEL_MAX) {
- options.setOptimizationLevel(Math.max(level, OptionOptimize.OPTIMIZE_LEVEL_DRAFT));
- } else {
- options.setOptimizationLevel(OptionOptimize.OPTIMIZE_LEVEL_MAX);
- }
+ level = Math.max(level, OptionOptimize.OPTIMIZE_LEVEL_DRAFT);
+ level = Math.min(level, OptionOptimize.OPTIMIZE_LEVEL_MAX);
+
+ options.setOptimizationLevel(level);
}
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoyc.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoyc.java
index bf6b17c..0f3c6c1 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoyc.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoyc.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler that enables Story Of Your Compile data-collection.
+ * Generates the "Story Of Your Compile".
*/
public class ArgHandlerSoyc extends ArgHandlerFlag {
@@ -26,16 +26,18 @@
public ArgHandlerSoyc(OptionSoycEnabled options) {
this.options = options;
+
+ addTagValue("-soyc", true);
}
@Override
- public String getPurpose() {
- return "Enable Story Of Your Compile";
+ public String getPurposeSnippet() {
+ return "Generate the \"Story Of Your Compile\".";
}
@Override
- public String getTag() {
- return "-soyc";
+ public String getLabel() {
+ return "soycReport";
}
@Override
@@ -44,8 +46,13 @@
}
@Override
- public boolean setFlag() {
- options.setSoycEnabled(true);
+ public boolean setFlag(boolean value) {
+ options.setSoycEnabled(value);
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return options.isSoycEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoycDetailed.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoycDetailed.java
index 3fb028c..1c71845 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoycDetailed.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerSoycDetailed.java
@@ -18,23 +18,30 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * An ArgHandler that enables detailed Story Of Your Compile data collection.
+ * Emits extra, detailed compile-report information in the "Story Of Your Compile".
*/
public class ArgHandlerSoycDetailed extends ArgHandlerFlag {
- private final OptionSoycDetailed options;
- public ArgHandlerSoycDetailed(OptionSoycDetailed options) {
- this.options = options;
+ private final OptionSoycDetailed optionSoycDetailed;
+ private final OptionSoycEnabled optionSoycEnabled;
+
+ public <T extends OptionSoycDetailed & OptionSoycEnabled> ArgHandlerSoycDetailed(
+ T options) {
+ optionSoycDetailed = options;
+ optionSoycEnabled = options;
+
+ addTagValue("-XsoycDetailed", true);
}
@Override
- public String getPurpose() {
- return "Emit extra, detailed compile-report information at the expense of compile time";
+ public String getPurposeSnippet() {
+ return "Emit extra, detailed compile-report information in the \"Story Of Your Compile\" "
+ + "at the expense of compile time.";
}
@Override
- public String getTag() {
- return "-XsoycDetailed";
+ public String getLabel() {
+ return "detailedSoyc";
}
@Override
@@ -43,9 +50,19 @@
}
@Override
- public boolean setFlag() {
- options.setSoycExtra(true);
- options.setSoycEnabled(true);
+ public boolean setFlag(boolean value) {
+ optionSoycDetailed.setSoycExtra(value);
+ optionSoycEnabled.setSoycEnabled(value);
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return optionSoycDetailed.isSoycExtra() && optionSoycEnabled.isSoycEnabled();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrict.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrict.java
index 2cb116e..fe6fb1e 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrict.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrict.java
@@ -19,28 +19,36 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Argument handler for {@link OptionStrict}.
+ * Fails compilation if any input file contains an error.
*/
public class ArgHandlerStrict extends ArgHandlerFlag {
+
private final OptionStrict options;
public ArgHandlerStrict(OptionStrict options) {
this.options = options;
+
+ addTagValue("-strict", true);
}
@Override
- public String getPurpose() {
- return "Only succeed if no input files have errors";
+ public String getPurposeSnippet() {
+ return "Fail compilation if any input file contains an error.";
}
@Override
- public String getTag() {
- return "-strict";
+ public String getLabel() {
+ return "failOnError";
}
@Override
- public boolean setFlag() {
- options.setStrict(true);
+ public boolean setFlag(boolean value) {
+ options.setStrict(value);
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return options.isStrict();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerTreeLoggerFlag.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerTreeLoggerFlag.java
deleted file mode 100644
index a0bd680..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerTreeLoggerFlag.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2006 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.util.arg;
-
-import com.google.gwt.util.tools.ArgHandlerFlag;
-
-/**
- * Argument handler for processing the GUI tree logger boolean flag.
- */
-public final class ArgHandlerTreeLoggerFlag extends ArgHandlerFlag {
-
- private final OptionGuiLogger option;
-
- public ArgHandlerTreeLoggerFlag(OptionGuiLogger option) {
- this.option = option;
- }
-
- @Override
- public String getPurpose() {
- return "Logs output in a graphical tree view";
- }
- @Override
-
- public String getTag() {
- return "-treeLogger";
- }
-
- @Override
- public boolean isUndocumented() {
- return true;
- }
-
- @Override
- public boolean setFlag() {
- option.setUseGuiLogger(true);
- return true;
- }
-}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerValidateOnlyFlag.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerValidateOnlyFlag.java
index b3ea8ac..ae4601d 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerValidateOnlyFlag.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerValidateOnlyFlag.java
@@ -18,7 +18,7 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Handles the -validateOnly command line flag.
+ * Validates all source code, but does not compile it.
*/
public final class ArgHandlerValidateOnlyFlag extends ArgHandlerFlag {
@@ -29,18 +29,23 @@
}
@Override
- public String getPurpose() {
- return "Validate all source code, but do not compile";
+ public String getPurposeSnippet() {
+ return "Validate all source code, but do not compile.";
}
@Override
- public String getTag() {
- return "-validateOnly";
+ public String getLabel() {
+ return "validateOnly";
}
@Override
- public boolean setFlag() {
- option.setValidateOnly(true);
+ public boolean setFlag(boolean value) {
+ option.setValidateOnly(value);
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return option.isValidateOnly();
+ }
}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionGuiLogger.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionGuiLogger.java
deleted file mode 100644
index 56205ba..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionGuiLogger.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2008 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.util.arg;
-
-/**
- * Option to set whether to use a GUI logger instead of stdout.
- */
-public interface OptionGuiLogger {
-
- /**
- * Returns true if a GUI logger should be used.
- */
- boolean isUseGuiLogger();
-
- /**
- * Sets whether or not to use a GUI logger.
- */
- void setUseGuiLogger(boolean useGuiLogger);
-}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionOptimize.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionOptimize.java
index 696da47..39980bf 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionOptimize.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/OptionOptimize.java
@@ -22,6 +22,8 @@
public interface OptionOptimize {
int OPTIMIZE_LEVEL_DRAFT = 0;
+ // TODO(stalcup): change the default to 8 to balance time and shrinkage.
+ int OPTIMIZE_LEVEL_DEFAULT = 9;
int OPTIMIZE_LEVEL_MAX = 9;
/**
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycDetailed.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycDetailed.java
index baf05f1..eba98f8 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycDetailed.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycDetailed.java
@@ -26,12 +26,6 @@
boolean isSoycExtra();
/**
- * Sets whether or not the compiler should record and emit Compile Report information
- * and build the dashboard.
- */
- void setSoycEnabled(boolean enabled);
-
- /**
* Sets whether or not the compiler should record and emit extra Compile Report
* information.
*/
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycHtmlDisabled.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycHtmlDisabled.java
index a105fd3..753d505 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycHtmlDisabled.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/OptionSoycHtmlDisabled.java
@@ -27,12 +27,6 @@
boolean isSoycHtmlDisabled();
/**
- * Sets whether or not the compiler should record and emit Compile Report
- * information and build the dashboard.
- */
- void setSoycEnabled(boolean enabled);
-
- /**
* Sets whether or not the compiler should produce HTML compile reports in
* addition to SOYC XML output.
*/
diff --git a/dev/core/src/com/google/gwt/util/tools/ArgHandler.java b/dev/core/src/com/google/gwt/util/tools/ArgHandler.java
index d0124bd..10ea662 100644
--- a/dev/core/src/com/google/gwt/util/tools/ArgHandler.java
+++ b/dev/core/src/com/google/gwt/util/tools/ArgHandler.java
@@ -29,6 +29,21 @@
public abstract String getTag();
/**
+ * The set of tags matched by this argument handler. By default includes just the one primary tag
+ * mentioned in getTag() but can be overridden to provide broader matching.
+ */
+ public String[] getTags() {
+ return new String[] {getTag()};
+ }
+
+ /**
+ * The tag to display in help messages.
+ */
+ public String getHelpTag() {
+ return getTag();
+ }
+
+ /**
* A list of words representing the arguments in help text.
*/
public abstract String[] getTagArgs();
@@ -54,4 +69,7 @@
return false;
}
+ public boolean isExperimental() {
+ return false;
+ }
}
diff --git a/dev/core/src/com/google/gwt/util/tools/ArgHandlerFlag.java b/dev/core/src/com/google/gwt/util/tools/ArgHandlerFlag.java
index 887652a..c96cb0b 100644
--- a/dev/core/src/com/google/gwt/util/tools/ArgHandlerFlag.java
+++ b/dev/core/src/com/google/gwt/util/tools/ArgHandlerFlag.java
@@ -17,23 +17,105 @@
import com.google.gwt.dev.util.Empty;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
/**
- * Argument handler for flags that have no parameters.
+ * Argument handler for boolean flags that have no parameters.
+ *
+ * Supports toggling the boolean value on and off using -label and -nolabel tag variants and
+ * calculating a meaningful purpose including default value.
*/
public abstract class ArgHandlerFlag extends ArgHandler {
+ private Map<String, Boolean> valuesByTag;
+
+ protected void addTagValue(String tag, boolean value) {
+ initValuesByTag();
+ valuesByTag.put(tag, value);
+ }
+
+ /**
+ * Returns the default value that will appear in help messages.
+ */
+ public abstract boolean getDefaultValue();
+
+ @Override
+ public String getHelpTag() {
+ return "-" + (isExperimental() ? "X" : "") + "[no]" + getLabel();
+ }
+
+ /**
+ * The root String that will be munged into -label and -nolabel variants for flag value toggling.
+ * Should follow the verb[Adjective]Noun naming pattern. For example:
+ *
+ * @Override
+ * public String getLabel() {
+ * return "allowMissingSrc";
+ * }
+ */
+ public String getLabel() {
+ return "";
+ }
+
+ @Override
+ public final String getPurpose() {
+ return (isExperimental() ? "EXPERIMENTAL: " : "") + getPurposeSnippet() + " " + "(defaults to "
+ + (getDefaultValue() ? "ON" : "OFF") + ")";
+ }
+
+ /**
+ * Returns a description that will be mixed together with default value to come up with the
+ * overall flag purpose.
+ */
+ public abstract String getPurposeSnippet();
+
+ /**
+ * The primary tag matched by this argument handler.
+ */
+ @Override
+ public final String getTag() {
+ String label = getLabel();
+ if (label == "") {
+ return "";
+ }
+ return "-" + (isExperimental() ? "X" : "") + label;
+ }
+
@Override
public String[] getTagArgs() {
return Empty.STRINGS;
}
@Override
+ public final String[] getTags() {
+ initValuesByTag();
+ Set<String> tags = valuesByTag.keySet();
+ return tags.toArray(new String[tags.size()]);
+ }
+
+ // @VisibleForTesting
+ boolean getValueByTag(String tag) {
+ initValuesByTag();
+ return valuesByTag.get(tag);
+ }
+
+ @Override
public int handle(String[] args, int startIndex) {
- if (setFlag()) {
- return 0;
- } else {
- return -1;
+ String tag = args[startIndex];
+ Boolean value = getValueByTag(tag);
+ return setFlag(value) ? 0 : 1;
+ }
+
+ private void initValuesByTag() {
+ if (valuesByTag != null) {
+ return;
}
+
+ valuesByTag = new LinkedHashMap<String, Boolean>();
+ valuesByTag.put("-" + (isExperimental() ? "X" : "") + getLabel(), true);
+ valuesByTag.put("-" + (isExperimental() ? "X" : "") + "no" + getLabel(), false);
}
@Override
@@ -41,5 +123,12 @@
return false;
}
- public abstract boolean setFlag();
+ /**
+ * Takes the explicitly provided value and propagates it into whatever option settings this flag
+ * controls.
+ *
+ * @param value the new value for the flag.
+ * @return whether the assignment was valid.
+ */
+ public abstract boolean setFlag(boolean value);
}
diff --git a/dev/core/src/com/google/gwt/util/tools/ToolBase.java b/dev/core/src/com/google/gwt/util/tools/ToolBase.java
index c6931a0..ce201ec 100644
--- a/dev/core/src/com/google/gwt/util/tools/ToolBase.java
+++ b/dev/core/src/com/google/gwt/util/tools/ToolBase.java
@@ -19,6 +19,7 @@
import java.util.HashSet;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -85,16 +86,18 @@
protected void printHelp() {
System.err.println(About.getGwtVersion());
+ Set<ArgHandler> uniqueArgHandlers = new LinkedHashSet<ArgHandler>(argHandlers.values());
+
ArgHandler nullHandler = null;
int widest = 0;
- for (ArgHandler handler : argHandlers.values()) {
+ for (ArgHandler handler : uniqueArgHandlers) {
if (handler.isUndocumented()) {
continue;
}
- String tag = handler.getTag();
- if (tag != null) {
- if (tag.length() > widest) {
- widest = tag.length();
+ String helpTag = handler.getHelpTag();
+ if (helpTag != null) {
+ if (helpTag.length() > widest) {
+ widest = helpTag.length();
}
} else {
nullHandler = handler;
@@ -116,14 +119,14 @@
// Print the command-line template.
//
- for (ArgHandler handler : argHandlers.values()) {
+ for (ArgHandler handler : uniqueArgHandlers) {
if (handler.isUndocumented()) {
continue;
}
- String tag = handler.getTag();
- if (tag != null) {
+ String helpTag = handler.getHelpTag();
+ if (helpTag != null) {
System.err.print(handler.isRequired() ? " " : " [");
- System.err.print(tag);
+ System.err.print(helpTag);
String[] tagArgs = handler.getTagArgs();
for (String tagArg : tagArgs) {
System.err.print(" " + tagArg);
@@ -155,15 +158,15 @@
// Print the details.
//
- for (ArgHandler handler : argHandlers.values()) {
+ for (ArgHandler handler : uniqueArgHandlers) {
if (handler.isUndocumented()) {
continue;
}
- String tag = handler.getTag();
- if (tag != null) {
- int len = tag.length();
+ String helpTag = handler.getHelpTag();
+ if (helpTag != null) {
+ int len = helpTag.length();
System.err.print(" ");
- System.err.print(tag);
+ System.err.print(helpTag);
for (i = len; i < widest; ++i) {
System.err.print(' ');
}
@@ -296,7 +299,9 @@
}
protected void registerHandler(ArgHandler handler) {
- String tag = handler.getTag();
- argHandlers.put(tag != null ? tag : "", handler);
+ for (String tag : handler.getTags()) {
+ tag = tag != null ? tag : "";
+ argHandlers.put(tag, handler);
+ }
}
}
diff --git a/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java b/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java
new file mode 100644
index 0000000..079abb1
--- /dev/null
+++ b/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.dev;
+
+import junit.framework.TestCase;
+
+/**
+ * Test for PrecompileTaskArgProcessor.
+ */
+public class PrecompileTaskArgProcessorTest extends TestCase {
+
+ private PrecompileTaskOptions defaultOptions = new PrecompileTaskOptionsImpl();
+ private PrecompileTaskOptions handledOptions = new PrecompileTaskOptionsImpl();
+ private PrecompileTaskArgProcessor precompileTaskArgProcessor;
+
+ private static void assertNotEquals(boolean expected, boolean actual) {
+ assertTrue(expected != actual);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ precompileTaskArgProcessor = new PrecompileTaskArgProcessor(handledOptions);
+ }
+
+ public void testFlagBackwardCompatibility() {
+ // Set a bunch of boolean flags using old-style tags.
+ precompileTaskArgProcessor.processArgs("-workDir", "/tmp", "-XcompilerMetrics",
+ "-XdisableCastChecking", "-XdisableClassMetadata", "-XdisableClusterSimilarFunctions",
+ "-XdisableInlineLiteralParameters", "-XdisableOptimizeDataflow", "-XdisableOrdinalizeEnums",
+ "-XdisableRemoveDuplicateFunctions", "-XdisableRunAsync", "-XdisableSoycHtml",
+ "-XdisableUpdateCheck", "-ea", "-XenableClosureCompiler", "-soyc", "-XsoycDetailed",
+ "-strict", "com.google.gwt.dev.DevModule");
+
+ // Show that the flags were recognized and ended up modifying options.
+ assertNotEquals(
+ defaultOptions.isCompilerMetricsEnabled(), handledOptions.isCompilerMetricsEnabled());
+ assertNotEquals(
+ defaultOptions.isCastCheckingDisabled(), handledOptions.isCastCheckingDisabled());
+ assertNotEquals(
+ defaultOptions.isClassMetadataDisabled(), handledOptions.isClassMetadataDisabled());
+ assertNotEquals(defaultOptions.shouldClusterSimilarFunctions(),
+ handledOptions.shouldClusterSimilarFunctions());
+ assertNotEquals(defaultOptions.shouldInlineLiteralParameters(),
+ handledOptions.shouldInlineLiteralParameters());
+ assertNotEquals(
+ defaultOptions.shouldOptimizeDataflow(), handledOptions.shouldOptimizeDataflow());
+ assertNotEquals(defaultOptions.shouldOrdinalizeEnums(), handledOptions.shouldOrdinalizeEnums());
+ assertNotEquals(defaultOptions.shouldRemoveDuplicateFunctions(),
+ handledOptions.shouldRemoveDuplicateFunctions());
+ assertNotEquals(defaultOptions.isRunAsyncEnabled(), handledOptions.isRunAsyncEnabled());
+ assertNotEquals(defaultOptions.isSoycHtmlDisabled(), handledOptions.isSoycHtmlDisabled());
+ assertNotEquals(defaultOptions.isUpdateCheckDisabled(), handledOptions.isUpdateCheckDisabled());
+ assertNotEquals(defaultOptions.isEnableAssertions(), handledOptions.isEnableAssertions());
+ assertNotEquals(
+ defaultOptions.isClosureCompilerEnabled(), handledOptions.isClosureCompilerEnabled());
+ assertNotEquals(defaultOptions.isSoycEnabled(), handledOptions.isSoycEnabled());
+ assertNotEquals(defaultOptions.isSoycExtra(), handledOptions.isSoycExtra());
+ assertNotEquals(defaultOptions.isStrict(), handledOptions.isStrict());
+ }
+
+ @SuppressWarnings("deprecation")
+ public void testFlagBackwardCompatibility_aggressiveOptimizations() {
+ // Set aggressiveOptimizations using the old-style tag.
+ precompileTaskArgProcessor.processArgs(
+ "-workDir", "/tmp", "-XdisableAggressiveOptimization", "com.google.gwt.dev.DevModule");
+
+ // Show that the flags were recognized and ended up modifying options.
+ assertNotEquals(
+ defaultOptions.isAggressivelyOptimize(), handledOptions.isAggressivelyOptimize());
+ }
+
+ @SuppressWarnings("deprecation")
+ public void testFlagBackwardCompatibility_draftCompile() {
+ // Set draftCompile using the old-style tag.
+ precompileTaskArgProcessor.processArgs(
+ "-workDir", "/tmp", "-draftCompile", "com.google.gwt.dev.DevModule");
+
+ // Show that the flags were recognized and ended up modifying options.
+ assertTrue(defaultOptions.getOptimizationLevel() != handledOptions.getOptimizationLevel());
+ assertNotEquals(
+ defaultOptions.isAggressivelyOptimize(), handledOptions.isAggressivelyOptimize());
+ }
+}
diff --git a/dev/core/test/com/google/gwt/util/tools/ArgHandlerFlagTest.java b/dev/core/test/com/google/gwt/util/tools/ArgHandlerFlagTest.java
new file mode 100644
index 0000000..47f939d
--- /dev/null
+++ b/dev/core/test/com/google/gwt/util/tools/ArgHandlerFlagTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.util.tools;
+
+import junit.framework.TestCase;
+
+/**
+ * Test for ArgHandlerFlag.
+ */
+public class ArgHandlerFlagTest extends TestCase {
+
+ private class MockArgHandlerFlag extends ArgHandlerFlag {
+
+ private boolean value;
+
+ public MockArgHandlerFlag() {
+ addTagValue("-XdisableSand", false);
+ }
+
+ @Override
+ public String getLabel() {
+ return "floorSanding";
+ }
+
+ @Override
+ public String getPurposeSnippet() {
+ return null;
+ }
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean setFlag(boolean value) {
+ this.value = value;
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return value;
+ }
+ }
+
+ private MockArgHandlerFlag argHandlerFlag;
+
+ @Override
+ protected void setUp() throws Exception {
+ argHandlerFlag = new MockArgHandlerFlag();
+ }
+
+ public void testGetTag() {
+ assertEquals("-XfloorSanding", argHandlerFlag.getTag());
+ }
+
+ public void testGetTags() {
+ assertEquals("-XfloorSanding", argHandlerFlag.getTags()[0]);
+ assertEquals("-XnofloorSanding", argHandlerFlag.getTags()[1]);
+ assertEquals("-XdisableSand", argHandlerFlag.getTags()[2]);
+ }
+
+ public void testGetValueByTag() {
+ assertEquals(true, argHandlerFlag.getValueByTag("-XfloorSanding"));
+ assertEquals(false, argHandlerFlag.getValueByTag("-XnofloorSanding"));
+ assertEquals(false, argHandlerFlag.getValueByTag("-XdisableSand"));
+ }
+
+ public void testHandle() {
+ argHandlerFlag.handle(new String[] {"-XfloorSanding"}, 0);
+ assertEquals(true, argHandlerFlag.value);
+
+ argHandlerFlag.handle(new String[] {"-XnofloorSanding"}, 0);
+ assertEquals(false, argHandlerFlag.value);
+
+ argHandlerFlag.handle(new String[] {"-XdisableSand"}, 0);
+ assertEquals(false, argHandlerFlag.value);
+ }
+}
diff --git a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java
index b6b5785..9eb92dc 100644
--- a/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java
+++ b/tools/api-checker/src/com/google/gwt/tools/apichecker/ApiCompatibilityChecker.java
@@ -762,21 +762,25 @@
registerHandler(new ArgHandlerFlag() {
@Override
- public String getPurpose() {
- return "Prints all api";
+ public String getPurposeSnippet() {
+ return "Prints all api.";
}
@Override
- public String getTag() {
- return "-printAllApi";
+ public String getLabel() {
+ return "printAllApi";
}
@Override
- public boolean setFlag() {
- printAllApi = true;
+ public boolean setFlag(boolean enabled) {
+ printAllApi = enabled;
return true;
}
+ @Override
+ public boolean getDefaultValue() {
+ return printAllApi;
+ }
});
// handler for configFile
diff --git a/user/src/com/google/gwt/i18n/tools/ArgHandlerValueChooser.java b/user/src/com/google/gwt/i18n/tools/ArgHandlerValueChooser.java
index 0dd2b1c..01dda07 100644
--- a/user/src/com/google/gwt/i18n/tools/ArgHandlerValueChooser.java
+++ b/user/src/com/google/gwt/i18n/tools/ArgHandlerValueChooser.java
@@ -48,42 +48,47 @@
}
/**
- * Retrieve the argument handler for -createConstantsWithLookup.
- *
+ * Creates scripts for a ConstantsWithLookup interface rather than a Constants one.
+ *
* @return a flag argument handler
*/
- ArgHandler getConstantsWithLookupArgHandler() {
+ ArgHandler getConstantsWithLookupArgHandler() {
if (cwlArgHandler == null) {
cwlArgHandler = new ArgHandlerFlag() {
@Override
- public String getPurpose() {
+ public String getPurposeSnippet() {
return "Create scripts for a ConstantsWithLookup interface "
- + "rather than a Constants one";
+ + "rather than a Constants one.";
}
@Override
- public String getTag() {
- return "-createConstantsWithLookup";
+ public String getLabel() {
+ return "createConstantsWithLookup";
}
@Override
- public boolean setFlag() {
- if (argValue == Messages.class) {
+ public boolean setFlag(boolean value) {
+ if (value && argValue == Messages.class) {
System.err.println("-createMessages cannot be used with -createConstantsWithLookup");
return false;
}
- argValue = ConstantsWithLookup.class;
+ argValue = value ? ConstantsWithLookup.class : Constants.class;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return argValue == ConstantsWithLookup.class;
+ }
};
}
return cwlArgHandler;
}
/**
- * Retrieves the -createMessages argument handler.
- *
+ * Creates scripts for a Messages interface rather than a Constants one.
+ *
* @return a flag argument handler
*/
ArgHandler getMessagesArgHandler() {
@@ -91,25 +96,29 @@
messagesArgHandler = new ArgHandlerFlag() {
@Override
- public String getPurpose() {
- return "Create scripts for a Messages interface "
- + "rather than a Constants one";
+ public String getPurposeSnippet() {
+ return "Create scripts for a Messages interface rather than a Constants one.";
}
@Override
- public String getTag() {
- return "-createMessages";
+ public String getLabel() {
+ return "createMessages";
}
@Override
- public boolean setFlag() {
- if (argValue == ConstantsWithLookup.class) {
+ public boolean setFlag(boolean value) {
+ if (value && argValue == ConstantsWithLookup.class) {
System.err.println("-createMessages cannot be used with -createConstantsWithLookup");
return false;
}
- argValue = Messages.class;
+ argValue = value ? Messages.class : Constants.class;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return argValue == Messages.class;
+ }
};
}
return messagesArgHandler;
diff --git a/user/src/com/google/gwt/i18n/tools/I18NCreator.java b/user/src/com/google/gwt/i18n/tools/I18NCreator.java
index 5d5c582..d7e178a 100755
--- a/user/src/com/google/gwt/i18n/tools/I18NCreator.java
+++ b/user/src/com/google/gwt/i18n/tools/I18NCreator.java
@@ -252,10 +252,6 @@
protected I18NCreator() {
registerHandler(new ArgHandlerEclipse() {
- @Override
- public String getPurpose() {
- return "Creates a i18n update launch config for the named eclipse project";
- }
@Override
public boolean setString(String str) {
@@ -275,14 +271,19 @@
registerHandler(new ArgHandlerOverwrite() {
@Override
- public boolean setFlag() {
- if (ignore) {
+ public boolean setFlag(boolean value) {
+ if (value && ignore) {
System.err.println("-overwrite cannot be used with -ignore.");
return false;
}
- overwrite = true;
+ overwrite = value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return overwrite;
+ }
});
chooser = new ArgHandlerValueChooser();
registerHandler(chooser.getConstantsWithLookupArgHandler());
@@ -291,14 +292,19 @@
registerHandler(new ArgHandlerIgnore() {
@Override
- public boolean setFlag() {
- if (overwrite) {
+ public boolean setFlag(boolean value) {
+ if (value && overwrite) {
System.err.println("-ignore cannot be used with -overwrite.");
return false;
}
- ignore = true;
+ ignore = value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return ignore;
+ }
});
registerHandler(new ArgHandlerClassName());
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java
index 4838338..b442959 100644
--- a/user/src/com/google/gwt/junit/JUnitShell.java
+++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -130,6 +130,104 @@
void processModule(ModuleDef module);
}
+ private static class ArgHandlerRunCompiledJavascript extends ArgHandlerFlag {
+
+ private JUnitShell shell;
+
+ public ArgHandlerRunCompiledJavascript(JUnitShell shell) {
+ this.shell = shell;
+
+ addTagValue("-web", false);
+ addTagValue("-prod", false);
+ }
+
+ @Override
+ public String getPurposeSnippet() {
+ return "Runs tests in Development Mode, using the Java virtual machine.";
+ }
+
+ @Override
+ public String getLabel() {
+ return "devMode";
+ }
+
+ @Override
+ public boolean setFlag(boolean enabled) {
+ shell.developmentMode = enabled;
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return shell.developmentMode;
+ }
+ }
+
+ private static class ArgHandlerShowWindows extends ArgHandlerFlag {
+
+ private JUnitShell shell;
+
+ public ArgHandlerShowWindows(JUnitShell shell) {
+ this.shell = shell;
+
+ addTagValue("-notHeadless", true);
+ }
+
+ @Override
+ public String getPurposeSnippet() {
+ return "Causes the log window and browser windows to be displayed; useful for debugging.";
+ }
+
+ @Override
+ public String getLabel() {
+ return "showUi";
+ }
+
+ @Override
+ public boolean setFlag(boolean enabled) {
+ shell.setHeadless(!enabled);
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return !shell.isHeadless();
+ }
+ }
+
+ private static class ArgHandlerRunInStandardsMode extends ArgHandlerFlag {
+
+ private JUnitShell shell;
+
+ public ArgHandlerRunInStandardsMode(JUnitShell shell) {
+ this.shell = shell;
+
+ addTagValue("-standardsMode", true);
+ addTagValue("-quirksMode", false);
+ }
+
+ @Override
+ public String getPurposeSnippet() {
+ return "Run each test using an HTML document in standards mode (rather than quirks mode).";
+ }
+
+ @Override
+ public String getLabel() {
+ return "runStandardsMode";
+ }
+
+ @Override
+ public boolean setFlag(boolean enabled) {
+ shell.setStandardsMode(enabled);
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return shell.standardsMode;
+ }
+ }
+
static class ArgProcessor extends ArgProcessorBase {
@SuppressWarnings("deprecation")
@@ -215,48 +313,10 @@
}
});
- registerHandler(new ArgHandlerFlag() {
- @Override
- public String getPurpose() {
- return "Synonym for -prod (deprecated)";
- }
-
- @Override
- public String getTag() {
- return "-web";
- }
-
- @Override
- public boolean isUndocumented() {
- return true;
- }
-
- @Override
- public boolean setFlag() {
- shell.developmentMode = false;
- return true;
- }
- });
-
- registerHandler(new ArgHandlerFlag() {
- @Override
- public String getPurpose() {
- return "Causes your test to run in production (compiled) mode (defaults to development mode)";
- }
-
- @Override
- public String getTag() {
- return "-prod";
- }
-
- @Override
- public boolean setFlag() {
- shell.developmentMode = false;
- return true;
- }
- });
+ registerHandler(new ArgHandlerRunCompiledJavascript(shell));
registerHandler(new ArgHandlerInt() {
+
@Override
public String[] getDefaultArgs() {
return new String[]{getTag(), "5"};
@@ -389,25 +449,10 @@
}
});
- registerHandler(new ArgHandlerFlag() {
- @Override
- public String getPurpose() {
- return "Causes the log window and browser windows to be displayed; useful for debugging";
- }
-
- @Override
- public String getTag() {
- return "-notHeadless";
- }
-
- @Override
- public boolean setFlag() {
- shell.setHeadless(false);
- return true;
- }
- });
+ registerHandler(new ArgHandlerShowWindows(shell));
registerHandler(new ArgHandlerString() {
+
@Override
public String getPurpose() {
return "Precompile modules as tests are running (speeds up remote tests but requires more memory)";
@@ -443,43 +488,10 @@
}
});
- registerHandler(new ArgHandlerFlag() {
- @Override
- public String getPurpose() {
- return "Run each test using an HTML document in standards mode (rather than quirks mode)";
- }
-
- @Override
- public String getTag() {
- return "-standardsMode";
- }
-
- @Override
- public boolean setFlag() {
- shell.setStandardsMode(true);
- return true;
- }
- });
-
- registerHandler(new ArgHandlerFlag() {
- @Override
- public String getPurpose() {
- return "Run each test using an HTML document in quirks mode (rather than standards mode)";
- }
-
- @Override
- public String getTag() {
- return "-quirksMode";
- }
-
- @Override
- public boolean setFlag() {
- shell.setStandardsMode(false);
- return true;
- }
- });
+ registerHandler(new ArgHandlerRunInStandardsMode(shell));
registerHandler(new ArgHandlerInt() {
+
@Override
public String getPurpose() {
return "EXPERIMENTAL: Sets the maximum number of attempts for running each test method";
@@ -509,9 +521,15 @@
public void setInt(int value) {
shell.tries = value;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
});
registerHandler(new ArgHandlerString() {
+
@Override
public String getPurpose() {
return "Specify the user agents to reduce the number of permutations for remote browser tests;"
diff --git a/user/src/com/google/gwt/junit/remote/BrowserManagerServerLauncher.java b/user/src/com/google/gwt/junit/remote/BrowserManagerServerLauncher.java
index 0c35290..b4c08a5 100644
--- a/user/src/com/google/gwt/junit/remote/BrowserManagerServerLauncher.java
+++ b/user/src/com/google/gwt/junit/remote/BrowserManagerServerLauncher.java
@@ -73,14 +73,47 @@
}
/**
+ * Queues up requests to a single server so that only a single test runs at a time.
+ */
+ private class ArgHandlerSerializeRequests extends ArgHandlerFlag {
+
+ public ArgHandlerSerializeRequests() {
+ addTagValue("-serialize", true);
+ }
+
+ @Override
+ public String getPurposeSnippet() {
+ return "Queue up requests to a single server so that only a single "
+ + "test runs at a time. Useful for a simple Firefox setup.";
+ }
+
+ @Override
+ public String getLabel() {
+ return "serializeRequests";
+ }
+
+ @Override
+ public boolean setFlag(boolean value) {
+ serializeArg = value;
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return serializeArg;
+ }
+ }
+
+ /**
* Handles the list of registration ids / machine names passed on the command
* line.
*/
private class ArgHandlerRegistration extends ArgHandler {
+
@Override
public String getPurpose() {
return "Specify two arguments: a registration id used for the "
- + "RMI call and the browser launch command";
+ + "RMI call and the browser launch command.";
}
@Override
@@ -142,26 +175,7 @@
BrowserManagerServerLauncher() {
registerHandler(new ArgHandlerPort());
registerHandler(new ArgHandlerRegistration());
- registerHandler(new ArgHandlerFlag() {
-
- @Override
- public String getPurpose() {
- return "Queue up requests to a single server so that only a single "
- + "test runs at a time (Usefule for a simple Firefox setup.)\n";
- }
-
- @Override
- public String getTag() {
- return "-serialize";
- }
-
- @Override
- public boolean setFlag() {
- serializeArg = true;
- return true;
- }
-
- });
+ registerHandler(new ArgHandlerSerializeRequests());
}
public boolean doProcessArgs(String[] args) {
diff --git a/user/src/com/google/gwt/resources/css/InterfaceGenerator.java b/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
index 5f08dab..430e591 100644
--- a/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
+++ b/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
@@ -60,29 +60,38 @@
private TreeLogger logger;
private boolean standaloneFile;
+ private class ArgHandlerAddPackageHeader extends ArgHandlerFlag {
+
+ public ArgHandlerAddPackageHeader() {
+ addTagValue("-standalone", true);
+ }
+
+ @Override
+ public String getPurposeSnippet() {
+ return "Add package and import statements to generated interface so that "
+ + "they are still functional when they stand alone.";
+ }
+
+ @Override
+ public String getLabel() {
+ return "addPackageHeader";
+ }
+
+ @Override
+ public boolean setFlag(boolean value) {
+ standaloneFile = value;
+ logger.log(TreeLogger.DEBUG, value ? "Not creating" : "Creating" + " a standalone file");
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return standaloneFile;
+ }
+ }
+
private InterfaceGenerator() {
- // -standalone
- registerHandler(new ArgHandlerFlag() {
-
- @Override
- public String getPurpose() {
- return "Add package and import statements to generated interface";
- }
-
- @Override
- public String getTag() {
- return "-standalone";
- }
-
- @Override
- public boolean setFlag() {
- standaloneFile = true;
- logger.log(TreeLogger.DEBUG, "Creating standalone file");
- return true;
- }
- });
-
- // -typeName some.package.MyCssResource
+ registerHandler(new ArgHandlerAddPackageHeader());
registerHandler(new ArgHandlerString() {
@Override
diff --git a/user/src/com/google/gwt/resources/css/Minify.java b/user/src/com/google/gwt/resources/css/Minify.java
index b7fc260..812c91e 100644
--- a/user/src/com/google/gwt/resources/css/Minify.java
+++ b/user/src/com/google/gwt/resources/css/Minify.java
@@ -35,6 +35,29 @@
*/
public class Minify extends ToolBase {
+ private class ArgHandlerOutputReadable extends ArgHandlerFlag {
+
+ @Override
+ public String getPurposeSnippet() {
+ return "Output human readable CSS.";
+ }
+
+ @Override
+ public String getLabel() {
+ return "pretty";
+ }
+
+ @Override
+ public boolean setFlag(boolean enabled) {
+ return pretty = enabled;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return pretty;
+ }
+ }
+
/**
* See {@link #printHelp()} for usage.
*/
@@ -90,22 +113,7 @@
}
});
- registerHandler(new ArgHandlerFlag() {
- @Override
- public String getPurpose() {
- return "Enable human-parsable output";
- }
-
- @Override
- public String getTag() {
- return "-pretty";
- }
-
- @Override
- public boolean setFlag() {
- return pretty = true;
- }
- });
+ registerHandler(new ArgHandlerOutputReadable());
if (!processArgs(args)) {
return false;
diff --git a/user/src/com/google/gwt/user/tools/WebAppCreator.java b/user/src/com/google/gwt/user/tools/WebAppCreator.java
index 962b382..9a28133 100644
--- a/user/src/com/google/gwt/user/tools/WebAppCreator.java
+++ b/user/src/com/google/gwt/user/tools/WebAppCreator.java
@@ -68,11 +68,11 @@
registerHandler(new ArgHandlerTemplates());
registerHandler(new ArgHandlerModuleName());
registerHandler(new ArgHandlerOutDirExtension());
- registerHandler(new ArgHandlerNoEclipse());
- registerHandler(new ArgHandlerOnlyEclipse());
+ registerHandler(new ArgHandlerCreateEclipseProject());
+ registerHandler(new ArgHandlerCreateEclipseProjectOnly());
registerHandler(new ArgHandlerJUnitPath());
- registerHandler(new ArgHandlerMaven());
- registerHandler(new ArgHandlerNoAnt());
+ registerHandler(new ArgHandlerCreateMavenProject());
+ registerHandler(new ArgHandlerCreateAntFile());
}
@Override
@@ -82,15 +82,21 @@
}
private final class ArgHandlerIgnoreExtension extends ArgHandlerIgnore {
+
@Override
- public boolean setFlag() {
- if (overwrite) {
+ public boolean setFlag(boolean value) {
+ if (value && overwrite) {
System.err.println("-ignore cannot be used with -overwrite");
return false;
}
- ignore = true;
+ ignore = value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return ignore;
+ }
}
private final class ArgHandlerJUnitPath extends ArgHandlerString {
@@ -132,29 +138,37 @@
}
}
- private final class ArgHandlerMaven extends ArgHandlerFlag {
+ private final class ArgHandlerCreateMavenProject extends ArgHandlerFlag {
+
@Override
- public String getPurpose() {
- return "Deprecated. Create a maven2 project structure and pom file (default disabled). "
+ public String getPurposeSnippet() {
+ return "DEPRECATED: Create a maven2 project structure and pom file (default disabled). "
+ "Equivalent to specifying 'maven' in the list of templates.";
}
@Override
- public String getTag() {
- return "-maven";
+ public String getLabel() {
+ return "maven";
}
@Override
- public boolean setFlag() {
- if (onlyEclipse) {
+ public boolean setFlag(boolean value) {
+ if (value && onlyEclipse) {
System.err.println("-maven and -XonlyEclipse cannot be used at the same time.");
return false;
}
- if (!templates.contains("maven")) {
+ if (value) {
templates.add("maven");
+ } else {
+ templates.remove("maven");
}
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return templates.contains("maven");
+ }
}
private final class ArgHandlerModuleName extends ArgHandlerExtra {
@@ -192,46 +206,64 @@
}
}
- private final class ArgHandlerNoAnt extends ArgHandlerFlag {
+ private final class ArgHandlerCreateAntFile extends ArgHandlerFlag {
+
@Override
- public String getPurpose() {
- return "Deprecated. Do not create an ant configuration file. "
- + "Equivalent to not specifying 'ant' in the list of templates.";
+ public String getPurposeSnippet() {
+ return "DEPRECATED: Create an ant configuration file. "
+ + "Equivalent to specifying 'ant' in the list of templates.";
}
@Override
- public String getTag() {
- return "-noant";
+ public String getLabel() {
+ return "ant";
}
@Override
- public boolean setFlag() {
+ public boolean setFlag(final boolean value) {
argProcessingToDos.add(new Procrastinator() {
@Override
public void stopProcratinating() {
- if (templates.contains("maven")) {
- System.err.println("-maven and -noant are redundant. Continuing.");
- }
- if (templates.contains("ant")) {
- System.err.println("Removing ant template from generated output.");
- templates.remove("ant");
+ if (!value) {
+ if (templates.contains("maven")) {
+ System.err.println("-maven and -noant are redundant. Continuing.");
+ }
+ if (templates.contains("ant")) {
+ System.err.println("Removing ant template from generated output.");
+ templates.remove("ant");
+ }
+ } else {
+ if (!templates.contains("ant")) {
+ System.err.println("Adding ant template to generated output.");
+ templates.add("ant");
+ }
}
}
});
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return templates.contains("ant");
+ }
}
- private final class ArgHandlerNoEclipse extends ArgHandlerFlag {
- @Override
- public String getPurpose() {
- return "Deprecated. Do not generate eclipse files. "
- + "Equivalent to not specifying 'eclipse' in the list of templates";
+ private final class ArgHandlerCreateEclipseProject extends ArgHandlerFlag {
+
+ public ArgHandlerCreateEclipseProject() {
+ addTagValue("-XnoEclipse", false);
}
@Override
- public String getTag() {
- return "-XnoEclipse";
+ public String getPurposeSnippet() {
+ return "DEPRECATED: Generate eclipse files. Equivalent to specifying "
+ + "'eclipse' in the list of templates.";
+ }
+
+ @Override
+ public String getLabel() {
+ return "createEclipseProject";
}
@Override
@@ -240,38 +272,57 @@
}
@Override
- public boolean setFlag() {
- if (onlyEclipse) {
- System.err.println("-XonlyEclipse and -XnoEclipse cannot be used at the same time.");
- return false;
- }
- if (!templates.contains("maven")) {
- System.err.println("-maven and -XnoEclipse are redundant. Continuing.");
- }
- noEclipse = true;
- argProcessingToDos.add(new Procrastinator() {
- @Override
- public void stopProcratinating() {
- if (templates.contains("eclipse")) {
- System.err.println("Removing eclipse template from generated output.");
- templates.remove("eclipse");
- }
+ public boolean setFlag(boolean value) {
+ if (!value) {
+ if (onlyEclipse) {
+ System.err.println("-XonlyEclipse and -XnoEclipse cannot be used at the same time.");
+ return false;
}
- });
+ if (!templates.contains("maven")) {
+ System.err.println("-maven and -XnoEclipse are redundant. Continuing.");
+ }
+ noEclipse = true;
+ argProcessingToDos.add(new Procrastinator() {
+ @Override
+ public void stopProcratinating() {
+ if (noEclipse && templates.contains("eclipse")) {
+ System.err.println("Removing eclipse template from generated output.");
+ templates.remove("eclipse");
+ }
+ }
+ });
+ } else {
+ noEclipse = false;
+ }
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return !noEclipse;
+ }
}
- private final class ArgHandlerOnlyEclipse extends ArgHandlerFlag {
+ private final class ArgHandlerCreateEclipseProjectOnly extends ArgHandlerFlag {
+
+ public ArgHandlerCreateEclipseProjectOnly() {
+ addTagValue("-XonlyEclipse", true);
+ }
+
@Override
- public String getPurpose() {
- return "Deprecated. Generate only eclipse files. "
+ public String getPurposeSnippet() {
+ return "DEPRECATED: Generate only eclipse files. "
+ "Equivalent to only specifying 'eclipse' in the list of templates.";
}
@Override
- public String getTag() {
- return "-XonlyEclipse";
+ public String getLabel() {
+ return "createEclipseProjectOnly";
}
@Override
@@ -280,38 +331,60 @@
}
@Override
- public boolean setFlag() {
- if (noEclipse) {
- System.err.println("-XonlyEclipse and -XnoEclipse cannot be used at the same time.");
- return false;
- }
- if (templates.contains("maven")) {
- System.err.println("-maven and -XonlyEclipse cannot be used at the same time.");
- return false;
- }
- onlyEclipse = true;
- argProcessingToDos.add(new Procrastinator() {
- @Override
- public void stopProcratinating() {
- System.err.println("Removing all templates but 'eclipse' from generated output.");
- templates.clear();
- templates.add("eclipse");
+ public boolean setFlag(boolean value) {
+ if (value) {
+ if (noEclipse) {
+ System.err.println("-XonlyEclipse and -XnoEclipse cannot be used at the same time.");
+ return false;
}
- });
+ if (templates.contains("maven")) {
+ System.err.println("-maven and -XonlyEclipse cannot be used at the same time.");
+ return false;
+ }
+ onlyEclipse = true;
+ argProcessingToDos.add(new Procrastinator() {
+ @Override
+ public void stopProcratinating() {
+ if (onlyEclipse) {
+ System.err.println("Removing all templates but 'eclipse' from generated output.");
+ templates.clear();
+ templates.add("eclipse");
+ }
+ }
+ });
+ } else {
+ onlyEclipse = false;
+ }
return true;
}
+
+ @Override
+ public boolean isExperimental() {
+ return true;
+ }
+
+ @Override
+ public boolean getDefaultValue() {
+ return onlyEclipse;
+ }
}
private final class ArgHandlerOverwriteExtension extends ArgHandlerOverwrite {
+
@Override
- public boolean setFlag() {
- if (ignore) {
+ public boolean setFlag(boolean value) {
+ if (value && ignore) {
System.err.println("-overwrite cannot be used with -ignore");
return false;
}
- overwrite = true;
+ overwrite = value;
return true;
}
+
+ @Override
+ public boolean getDefaultValue() {
+ return overwrite;
+ }
}
private final class ArgHandlerTemplates extends ArgHandlerString {
diff --git a/user/src/com/google/gwt/user/tools/util/ArgHandlerEclipse.java b/user/src/com/google/gwt/user/tools/util/ArgHandlerEclipse.java
index 5ab1a64..6757fc5 100644
--- a/user/src/com/google/gwt/user/tools/util/ArgHandlerEclipse.java
+++ b/user/src/com/google/gwt/user/tools/util/ArgHandlerEclipse.java
@@ -21,6 +21,12 @@
* Creates an arg handler for eclipse launch config options.
*/
public abstract class ArgHandlerEclipse extends ArgHandlerString {
+
+ @Override
+ public String getPurpose() {
+ return "Creates a i18n update launch config for the named eclipse project.";
+ }
+
@Override
public String getTag() {
return "-eclipse";
diff --git a/user/src/com/google/gwt/user/tools/util/ArgHandlerIgnore.java b/user/src/com/google/gwt/user/tools/util/ArgHandlerIgnore.java
index febff12..bb62557 100644
--- a/user/src/com/google/gwt/user/tools/util/ArgHandlerIgnore.java
+++ b/user/src/com/google/gwt/user/tools/util/ArgHandlerIgnore.java
@@ -18,17 +18,21 @@
import com.google.gwt.util.tools.ArgHandlerFlag;
/**
- * Arg handler for "ignore" option.
+ * Ignores any existing files and does not overwrite them.
*/
public abstract class ArgHandlerIgnore extends ArgHandlerFlag {
+ public ArgHandlerIgnore() {
+ addTagValue("-ignore", true);
+ }
+
@Override
- public String getPurpose() {
- return "Ignore any existing files; do not overwrite";
+ public String getPurposeSnippet() {
+ return "Ignore any existing files; do not overwrite.";
}
@Override
- public String getTag() {
- return "-ignore";
+ public String getLabel() {
+ return "ignoreExistingFiles";
}
}
diff --git a/user/src/com/google/gwt/user/tools/util/ArgHandlerOverwrite.java b/user/src/com/google/gwt/user/tools/util/ArgHandlerOverwrite.java
index 0c003b6..02d552b 100644
--- a/user/src/com/google/gwt/user/tools/util/ArgHandlerOverwrite.java
+++ b/user/src/com/google/gwt/user/tools/util/ArgHandlerOverwrite.java
@@ -16,18 +16,23 @@
package com.google.gwt.user.tools.util;
import com.google.gwt.util.tools.ArgHandlerFlag;
+
/**
- * Arg handler for "overwrite" option.
+ * Overwrites any existing files.
*/
public abstract class ArgHandlerOverwrite extends ArgHandlerFlag {
+ public ArgHandlerOverwrite() {
+ addTagValue("-overwrite", true);
+ }
+
@Override
- public String getPurpose() {
- return "Overwrite any existing files";
+ public String getPurposeSnippet() {
+ return "Overwrite any existing files.";
}
@Override
- public String getTag() {
- return "-overwrite";
+ public String getLabel() {
+ return "overwriteFiles";
}
}