Super Dev Mode: display warning when -XcompilePerFile is on
Change-Id: I95cb24e04868777a9d676b6cc35f8fabc6866388
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java
index bdde81c..a3ac485 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CodeServer.java
@@ -131,7 +131,7 @@
File workDir = ensureWorkDir(options);
System.out.println("workDir: " + workDir);
- Modules modules = new Modules();
+ Modules modules = new Modules(options);
for (String moduleName : options.getModuleNames()) {
AppSpace appSpace = AppSpace.create(new File(workDir, moduleName));
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Modules.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Modules.java
index b38e1f5..5e8ab8c 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Modules.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Modules.java
@@ -19,8 +19,8 @@
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.dev.json.JsonArray;
import com.google.gwt.dev.json.JsonObject;
+import com.google.gwt.thirdparty.guava.common.collect.Maps;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
@@ -31,11 +31,15 @@
* modules on the front page.
*/
class Modules implements Iterable<String> {
- private final Map<String, ModuleState> moduleStateMap =
- new HashMap<String, ModuleState>();
+ private final Options options;
+ private final Map<String, ModuleState> moduleStateMap = Maps.newHashMap();
private AtomicReference<Progress> progress = new AtomicReference<Progress>(Progress.IDLE);
+ public Modules(Options options) {
+ this.options = options;
+ }
+
/**
* Adds a {@link ModuleState} to the map.
* @param state the module state to map
@@ -67,7 +71,8 @@
}
/**
- * Returns a configuration object containing the names of all the modules.
+ * Returns a configuration object containing the names of all the modules
+ * and warnings to display to the user.
*/
JsonObject getConfig() {
JsonObject config = JsonObject.create();
@@ -76,6 +81,7 @@
moduleNames.add(module);
}
config.put("moduleNames", moduleNames);
+ config.put("warnings", options.getWarningsAsJson());
return config;
}
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 6c58d5f..cdccc02 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
@@ -18,6 +18,8 @@
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.dev.ArgProcessorBase;
+import com.google.gwt.dev.json.JsonArray;
+import com.google.gwt.dev.json.JsonObject;
import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
import com.google.gwt.dev.util.arg.ArgHandlerLogLevel;
import com.google.gwt.dev.util.arg.ArgHandlerSourceLevel;
@@ -218,6 +220,14 @@
return jsInteropMode;
}
+ JsonArray getWarningsAsJson() {
+ JsonArray warnings = new JsonArray();
+ if (compilePerFile) {
+ warnings.add("-XcompilePerFile is not done yet. Generators might not be run when needed.");
+ }
+ return warnings;
+ }
+
private class ArgProcessor extends ArgProcessorBase {
public ArgProcessor() {
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js b/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js
index 2964be7..c8f7124 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/dev_mode_on.js
@@ -268,6 +268,20 @@
return div;
}
+ function makeFooter() {
+ var warnings = window.__gwt_codeserver_config.warnings;
+ var div = $doc.createElement("div");
+ if (warnings.length > 0) {
+ div.style.marginTop = "10px";
+ }
+ div.appendChild(makeCodeServerLink());
+ for (var i = 0; i < warnings.length; i++) {
+ var warning = makeTextElt('div', '10pt', warnings[i]);
+ div.appendChild(warning);
+ }
+ return div;
+ }
+
var active_modules = window.__gwt_activeModules;
var moduleTable = $doc.createElement('table');
@@ -288,7 +302,7 @@
dialog.appendChild(makeTextElt('span', '16pt',
'Can\'t find any GWT Modules on this page.'));
}
- dialog.appendChild(makeCodeServerLink());
+ dialog.appendChild(makeFooter());
// Grey out everything under the dialog.
var overlay = makeOverlay();