Update Closure Compiler to v20160315
Change-Id: I94354fe3311e0bafb469f5a4273b2698cc19eace
diff --git a/dev/build.xml b/dev/build.xml
index 401717f..f1af6a0 100755
--- a/dev/build.xml
+++ b/dev/build.xml
@@ -69,8 +69,8 @@
<include name="guava/guava-18.0/guava-18.0-rebased.jar"/>
<include name="icu4j/50.1.1/icu4j.jar"/>
<include name="jetty/jetty-9.2.14.v20151106/jetty-all-9.2.14.v20151106.jar"/>
- <include name="jscomp/20131118.json.rebased/compiler-rebased.jar"/>
- <include name="jscomp/20131118.json.rebased/sourcemap-rebased.jar"/>
+ <include name="jscomp/20160315/compiler-rebased.jar"/>
+ <include name="jscomp/20160315/sourcemap-rebased.jar"/>
<include name="jsr305/jsr305.jar"/>
<include name="protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
<!-- dependencies needed for JSP support in DevMode: BEGIN -->
@@ -122,8 +122,8 @@
<zipfileset src="${gwt.tools.lib}/icu4j/50.1.1/icu4j.jar"/>
<zipfileset
src="${gwt.tools.lib}/jetty/jetty-9.2.14.v20151106/jetty-all-9.2.14.v20151106.jar"/>
- <zipfileset src="${gwt.tools.lib}/jscomp/20131118.json.rebased/compiler-rebased.jar"/>
- <zipfileset src="${gwt.tools.lib}/jscomp/20131118.json.rebased/sourcemap-rebased.jar"/>
+ <zipfileset src="${gwt.tools.lib}/jscomp/20160315/compiler-rebased.jar"/>
+ <zipfileset src="${gwt.tools.lib}/jscomp/20160315/sourcemap-rebased.jar"/>
<zipfileset src="${gwt.tools.lib}/jsr305/jsr305.jar"/>
<zipfileset
src="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
@@ -206,8 +206,8 @@
location="${gwt.tools.lib}/eclipse/jdtCompilerAdapter_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
<pathelement
location="${gwt.tools.lib}/guava/guava-18.0/guava-18.0-rebased.jar"/>
- <pathelement location="${gwt.tools.lib}/jscomp/20131118.json.rebased/compiler-rebased.jar"/>
- <pathelement location="${gwt.tools.lib}/jscomp/20131118.json.rebased/sourcemap-rebased.jar"/>
+ <pathelement location="${gwt.tools.lib}/jscomp/20160315/compiler-rebased.jar"/>
+ <pathelement location="${gwt.tools.lib}/jscomp/20160315/sourcemap-rebased.jar"/>
<pathelement location="${gwt.tools.lib}/json/android-sdk-19.1/json-android-rebased.jar"/>
<pathelement location="${gwt.tools.lib}/jsr305/jsr305.jar"/>
<pathelement
diff --git a/dev/core/src/com/google/gwt/dev/js/ClosureJsAstTranslator.java b/dev/core/src/com/google/gwt/dev/js/ClosureJsAstTranslator.java
index db03d31..60c8e04 100644
--- a/dev/core/src/com/google/gwt/dev/js/ClosureJsAstTranslator.java
+++ b/dev/core/src/com/google/gwt/dev/js/ClosureJsAstTranslator.java
@@ -71,13 +71,14 @@
import com.google.gwt.dev.js.ast.NodeKind;
import com.google.gwt.thirdparty.guava.common.base.Preconditions;
import com.google.gwt.thirdparty.guava.common.collect.Sets;
+import com.google.gwt.thirdparty.javascript.jscomp.AbstractCompiler;
import com.google.gwt.thirdparty.javascript.jscomp.AstValidator;
import com.google.gwt.thirdparty.javascript.rhino.IR;
import com.google.gwt.thirdparty.javascript.rhino.InputId;
import com.google.gwt.thirdparty.javascript.rhino.Node;
+import com.google.gwt.thirdparty.javascript.rhino.SimpleSourceFile;
+import com.google.gwt.thirdparty.javascript.rhino.StaticSourceFile;
import com.google.gwt.thirdparty.javascript.rhino.Token;
-import com.google.gwt.thirdparty.javascript.rhino.jstype.SimpleSourceFile;
-import com.google.gwt.thirdparty.javascript.rhino.jstype.StaticSourceFile;
import java.util.HashMap;
import java.util.Map;
@@ -98,7 +99,7 @@
}
}
- private final Map<String, StaticSourceFile> sourceCache = new HashMap<String, StaticSourceFile>();
+ private final Map<String, StaticSourceFile> sourceCache = new HashMap<>();
private final boolean validate;
private final Set<String> globalVars = Sets.newHashSet();
@@ -107,10 +108,12 @@
private final Set<String> externalVars = Sets.newHashSet();
private final JsProgram program;
+ private final AbstractCompiler compiler;
- ClosureJsAstTranslator(boolean validate, JsProgram program) {
+ ClosureJsAstTranslator(boolean validate, JsProgram program, AbstractCompiler compiler) {
this.program = program;
this.validate = validate;
+ this.compiler = compiler;
}
public Node translate(JsProgramFragment fragment, InputId inputId, String source) {
@@ -123,7 +126,7 @@
}
// Validate the structural integrity of the AST.
if (validate) {
- new AstValidator().validateScript(script);
+ new AstValidator(compiler).validateScript(script);
}
return script;
}
diff --git a/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java b/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java
index 365096d..01a6f0d 100644
--- a/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java
+++ b/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java
@@ -34,10 +34,10 @@
import com.google.gwt.thirdparty.javascript.jscomp.DiagnosticGroups;
import com.google.gwt.thirdparty.javascript.jscomp.JSError;
import com.google.gwt.thirdparty.javascript.jscomp.JSModule;
-import com.google.gwt.thirdparty.javascript.jscomp.JSSourceFile;
import com.google.gwt.thirdparty.javascript.jscomp.PropertyRenamingPolicy;
import com.google.gwt.thirdparty.javascript.jscomp.Result;
import com.google.gwt.thirdparty.javascript.jscomp.SourceAst;
+import com.google.gwt.thirdparty.javascript.jscomp.SourceFile;
import com.google.gwt.thirdparty.javascript.jscomp.VariableMap;
import com.google.gwt.thirdparty.javascript.jscomp.VariableRenamingPolicy;
import com.google.gwt.thirdparty.javascript.jscomp.WarningLevel;
@@ -47,7 +47,7 @@
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.text.ParseException;
+import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@@ -99,7 +99,7 @@
* @return a mutable list
* @throws IOException
*/
- public static List<JSSourceFile> getDefaultExterns() throws IOException {
+ public static List<SourceFile> getDefaultExterns() throws IOException {
Class<ClosureJsRunner> clazz = ClosureJsRunner.class;
InputStream input = clazz.getResourceAsStream("/com/google/javascript/jscomp/externs.zip");
if (input == null) {
@@ -110,14 +110,14 @@
input = clazz.getResourceAsStream("/externs.zip");
}
ZipInputStream zip = new ZipInputStream(input);
- Map<String, JSSourceFile> externsMap = Maps.newHashMap();
+ Map<String, SourceFile> externsMap = Maps.newHashMap();
for (ZipEntry entry = null; (entry = zip.getNextEntry()) != null;) {
BufferedInputStream entryStream =
new BufferedInputStream(ByteStreams.limit(zip, entry.getSize()));
- externsMap.put(entry.getName(), JSSourceFile.fromInputStream(
+ externsMap.put(entry.getName(), SourceFile.fromInputStream(
// Give the files an odd prefix, so that they do not conflict
// with the user's files.
- "externs.zip//" + entry.getName(), entryStream));
+ "externs.zip//" + entry.getName(), entryStream, Charset.defaultCharset()));
}
Preconditions.checkState(externsMap.keySet().equals(Sets.newHashSet(DEFAULT_EXTERNS_NAMES)),
@@ -125,7 +125,7 @@
// Order matters, so the resources must be added to the result list
// in the expected order.
- List<JSSourceFile> externs = Lists.newArrayList();
+ List<SourceFile> externs = Lists.newArrayList();
for (String key : DEFAULT_EXTERNS_NAMES) {
externs.add(externsMap.get(key));
}
@@ -176,11 +176,8 @@
public void compile(JProgram jprogram, JsProgram program, String[] js,
JsOutputOption jsOutputOption) {
CompilerOptions options;
- try {
- options = getClosureCompilerOptions(jsOutputOption);
- } catch (ParseException e) {
- throw new RuntimeException("Error setting closure compiler options", e);
- }
+ options = getClosureCompilerOptions(jsOutputOption);
+
// Turn off Closure Compiler logging
Logger.getLogger("com.google.gwt.thirdparty.javascript.jscomp").setLevel(Level.OFF);
@@ -192,7 +189,7 @@
List<JSModule> modules = createClosureModules(program);
// Build the externs based on what we discovered building the modules.
- List<JSSourceFile> externs = getClosureCompilerExterns();
+ List<SourceFile> externs = getClosureCompilerExterns();
Result result = compiler.compileModules(externs, modules, options);
if (result.success) {
@@ -209,8 +206,8 @@
}
}
- protected List<JSSourceFile> getDefaultExternsList() {
- List<JSSourceFile> defaultExterns;
+ protected List<SourceFile> getDefaultExternsList() {
+ List<SourceFile> defaultExterns;
try {
defaultExterns = getDefaultExterns();
return defaultExterns;
@@ -275,7 +272,7 @@
String source) {
String inputName = source;
InputId inputId = new InputId(inputName);
- ClosureJsAstTranslator translator = new ClosureJsAstTranslator(validate, program);
+ ClosureJsAstTranslator translator = new ClosureJsAstTranslator(validate, program, compiler);
Node root = translator.translate(fragment, inputId, source);
globalVars.addAll(translator.getGlobalVariableNames());
externalProps.addAll(translator.getExternalPropertyReferences());
@@ -315,14 +312,14 @@
modules[i].addDependency(leftovers);
}
}
- modules[0].add(JSSourceFile.fromCode("hack", "window['gwtOnLoad'] = gwtOnLoad;\n"));
+ modules[0].add(SourceFile.fromCode("hack", "window['gwtOnLoad'] = gwtOnLoad;\n"));
return Arrays.asList(modules);
}
- private List<JSSourceFile> getClosureCompilerExterns() {
- List<JSSourceFile> externs = getDefaultExternsList();
- externs.add(JSSourceFile.fromCode("gwt_externs",
+ private List<SourceFile> getClosureCompilerExterns() {
+ List<SourceFile> externs = getDefaultExternsList();
+ externs.add(SourceFile.fromCode("gwt_externs",
"var gwtOnLoad;\n"
+ "var $entry;\n"
@@ -356,13 +353,12 @@
generatedExterns += "var " + var + ";\n";
}
- externs.add(JSSourceFile.fromCode("gwt_generated_externs", generatedExterns));
+ externs.add(SourceFile.fromCode("gwt_generated_externs", generatedExterns));
return externs;
}
- private CompilerOptions getClosureCompilerOptions(JsOutputOption jsOutputOption)
- throws ParseException {
+ private CompilerOptions getClosureCompilerOptions(JsOutputOption jsOutputOption) {
CompilerOptions options = new CompilerOptions();
WarningLevel.QUIET.setOptionsForWarningLevel(options);
@@ -370,11 +366,11 @@
// Build an identity map of variable names to prevent GWT names from
// being renamed while allowing new global variables to be renamed.
- HashMap<String, String> varNames = new HashMap<String, String>();
+ HashMap<String, String> varNames = new HashMap<>();
for (String var : globalVars) {
varNames.put(var, var);
}
- options.setInputVariableMapSerialized(VariableMap.fromMap(varNames).toBytes());
+ options.setInputVariableMap(VariableMap.fromMap(varNames));
if (jsOutputOption == JsOutputOption.OBFUSCATED) {
options.setRenamingPolicy(VariableRenamingPolicy.ALL, PropertyRenamingPolicy.OFF);
options.setPrettyPrint(false);
@@ -412,7 +408,7 @@
options.setFlowSensitiveInlineVariables(true);
options.setComputeFunctionSideEffects(true);
// Remove unused vars also removes unused functions.
- options.setRemoveUnusedVariable(Reach.ALL);
+ options.setRemoveUnusedVariables(Reach.ALL);
options.setOptimizeParameters(true);
options.setOptimizeReturns(true);
options.setOptimizeCalls(true);
@@ -425,7 +421,6 @@
// Advanced optimization, disabled
options.setRemoveClosureAsserts(false);
- options.setAliasKeywords(false);
options.setRemoveUnusedPrototypePropertiesInExterns(false);
options.setCheckGlobalThisLevel(CheckLevel.OFF);
options.setRewriteFunctionExpressions(false); // Performance hit
diff --git a/eclipse/dev/.classpath b/eclipse/dev/.classpath
index 4419743..1e421b3 100644
--- a/eclipse/dev/.classpath
+++ b/eclipse/dev/.classpath
@@ -23,8 +23,8 @@
<classpathentry kind="var" path="GWT_TOOLS/lib/htmlunit/htmlunit-2.19/htmlunit-core-js-2.15.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/guava/guava-18.0/guava-18.0-rebased.jar"/>
- <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131118.json.rebased/sourcemap-rebased.jar"/>
- <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131118.json.rebased/compiler-rebased.jar"/>
+ <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20160315/sourcemap-rebased.jar"/>
+ <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20160315/compiler-rebased.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/json/android-sdk-19.1/json-android-rebased.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/apache/commons/commons-collections-3.2.2.jar"/>
<classpathentry exported="true" kind="var" path="GWT_TOOLS/lib/tomcat/tomcat-servlet-api-8.0.28.jar"/>
diff --git a/eclipse/dev/codeserver/.classpath b/eclipse/dev/codeserver/.classpath
index 96354aa..34c26c9 100644
--- a/eclipse/dev/codeserver/.classpath
+++ b/eclipse/dev/codeserver/.classpath
@@ -4,8 +4,8 @@
<classpathentry kind="src" path="codeserver/javatests"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/guava/guava-18.0/guava-18.0-rebased.jar"/>
- <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131118.json.rebased/sourcemap-rebased.jar"/>
- <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131118.json.rebased/compiler-rebased.jar"/>
+ <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20160315/sourcemap-rebased.jar"/>
+ <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20160315/compiler-rebased.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/junit/junit-4.8.2.jar" sourcepath="/GWT_TOOLS/lib/junit/junit-4.8.2-src.zip"/>
<classpathentry combineaccessrules="false" kind="src" path="/gwt-dev"/>
<classpathentry combineaccessrules="false" kind="src" path="/gwt-user"/>
diff --git a/eclipse/user/.classpath b/eclipse/user/.classpath
index f4db2ad..4179dd4 100644
--- a/eclipse/user/.classpath
+++ b/eclipse/user/.classpath
@@ -60,7 +60,7 @@
<classpathentry kind="var" path="GWT_TOOLS/lib/testng/testng-5.14.1-sources.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/testng/testng-5.14.1-nojunit.jar" sourcepath="/GWT_TOOLS/lib/testng/testng-5.14.1-sources.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
- <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20131118.json.rebased/sourcemap-rebased.jar"/>
+ <classpathentry kind="var" path="GWT_TOOLS/lib/jscomp/20160315/sourcemap-rebased.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/eclipse/org.eclipse.jdt.core_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/eclipse/jdtCompilerAdapter_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
<classpathentry kind="output" path="bin"/>
diff --git a/servlet/build.xml b/servlet/build.xml
index 7ea16fa..b06bb4a 100644
--- a/servlet/build.xml
+++ b/servlet/build.xml
@@ -26,7 +26,7 @@
<!-- Rebased dependencies go in gwt-servlet too -->
<zipfileset src="${gwt.tools.lib}/colt/colt-1.2.jar" />
<zipfileset src="${gwt.tools.lib}/guava/guava-18.0/guava-18.0-rebased.jar" />
- <zipfileset src="${gwt.tools.lib}/jscomp/20131118.json.rebased/sourcemap-rebased.jar" />
+ <zipfileset src="${gwt.tools.lib}/jscomp/20160315/sourcemap-rebased.jar" />
<zipfileset src="${gwt.tools.lib}/json/android-sdk-19.1/json-android-rebased.jar" />
<zipfileset src="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar" />
<zipfileset src="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar" />