RoyaleClosurePassConfig: restore previous prevent-rename-* behavior because the newer alternative seems to have broken some things (closes #159)
diff --git a/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java b/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
index c332a81..dee46a3 100644
--- a/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
+++ b/compiler-jx/src/main/java/com/google/javascript/jscomp/RoyaleClosurePassConfig.java
@@ -344,6 +344,10 @@
checks.add(angularPass);
}
+ if (propertyNamesToKeep != null && propertyNamesToKeep.size() > 0) {
+ checks.add(keepPropertyNamesPass);
+ }
+
if (extraSymbolNamesToExport != null) {
checks.add(generateRoyaleExports);
}
@@ -1287,6 +1291,47 @@
}
};
+ private final PassFactory keepPropertyNamesPass =
+ new PassFactory("keep-property-names", true) {
+ @Override
+ protected CompilerPass create(final AbstractCompiler compiler) {
+ return new CompilerPass() {
+ @Override
+ public void process(Node externs, Node root) {
+
+ Node propsObj = new Node(Token.OBJECTLIT);
+ for(String nameToKeep : propertyNamesToKeep)
+ {
+ Node nameStringKey = IR.stringKey(nameToKeep);
+ JSDocInfoBuilder builder = new JSDocInfoBuilder(true);
+ builder.recordExport();
+ JSDocInfo jsDocInfo = builder.build();
+ nameStringKey.setJSDocInfo(jsDocInfo);
+
+ Node propertyDescriptor = new Node(Token.OBJECTLIT);
+ propertyDescriptor.addChildToBack(IR.propdef(IR.stringKey("get"), NodeUtil.emptyFunction()));
+
+ Node prop = IR.propdef(nameStringKey, propertyDescriptor);
+ propsObj.addChildToBack(prop);
+ }
+
+ Node definePropertiesTarget = NodeUtil.newQName(compiler, "Object.defineProperties");
+ Node definePropertiesCall = IR.call(definePropertiesTarget, IR.objectlit(), propsObj);
+ Node expression = IR.exprResult(definePropertiesCall);
+
+ Node scriptNode = compiler.getScriptNode(sourceFileName);
+ scriptNode.addChildToBack(expression);
+ compiler.reportChangeToEnclosingScope(expression);
+ }
+ };
+ }
+
+ @Override
+ protected FeatureSet featureSet() {
+ return ES_NEXT;
+ }
+ };
+
/** Raw exports processing pass. */
private final PassFactory gatherRawExports =
new PassFactory(PassNames.GATHER_RAW_EXPORTS, true) {
@@ -3067,7 +3112,7 @@
options.getPropertyReservedNamingFirstChars(),
options.getPropertyReservedNamingNonFirstChars(),
options.nameGenerator,
- propertyNamesToKeep);
+ null);
rprop.process(externs, root);
compiler.setPropertyMap(rprop.getPropertyMap());
}