Revert "Revert "RoyaleClosurePassConfig: better behavior for prevent-rename-*-symbols compiler options by skipping renaming of those symbols during RenamePropertiesWithModuleSupport""
This reverts commit db6bae974c227f7afb16be272250179f4a3ddb3f.
diff --git a/compiler-jx/src/main/java/com/google/javascript/jscomp/RenamePropertiesWithModuleSupport.java b/compiler-jx/src/main/java/com/google/javascript/jscomp/RenamePropertiesWithModuleSupport.java
index 89ba74a..44f1b26 100644
--- a/compiler-jx/src/main/java/com/google/javascript/jscomp/RenamePropertiesWithModuleSupport.java
+++ b/compiler-jx/src/main/java/com/google/javascript/jscomp/RenamePropertiesWithModuleSupport.java
@@ -138,7 +138,7 @@
*/
RenamePropertiesWithModuleSupport(AbstractCompiler compiler, boolean generatePseudoNames,
NameGenerator nameGenerator) {
- this(compiler, generatePseudoNames, null, null, null, nameGenerator);
+ this(compiler, generatePseudoNames, null, null, null, nameGenerator, null);
}
/**
@@ -156,9 +156,11 @@
RenamePropertiesWithModuleSupport(AbstractCompiler compiler,
boolean generatePseudoNames, VariableMap prevUsedPropertyMap,
NameGenerator nameGenerator) {
- this(compiler, generatePseudoNames, prevUsedPropertyMap, null, null, nameGenerator);
+ this(compiler, generatePseudoNames, prevUsedPropertyMap, null, null, nameGenerator, null);
}
+ private Set<String> propertyNamesToKeep;
+
/**
* Creates an instance.
*
@@ -179,13 +181,15 @@
VariableMap prevUsedPropertyMap,
@Nullable char[] reservedFirstCharacters,
@Nullable char[] reservedNonFirstCharacters,
- NameGenerator nameGenerator) {
+ NameGenerator nameGenerator,
+ Set<String> propertyNamesToKeep) {
this.compiler = compiler;
this.generatePseudoNames = generatePseudoNames;
this.prevUsedPropertyMap = prevUsedPropertyMap;
this.reservedFirstCharacters = reservedFirstCharacters;
this.reservedNonFirstCharacters = reservedNonFirstCharacters;
this.nameGenerator = nameGenerator;
+ this.propertyNamesToKeep = propertyNamesToKeep;
externedNames.addAll(compiler.getExternProperties());
}
@@ -226,6 +230,9 @@
*/
reservedNames.addAll(externedNames);
reservedNames.addAll(quotedNames);
+ if (propertyNamesToKeep != null) {
+ reservedNames.addAll(propertyNamesToKeep);
+ }
generateNames(propsByFreq, reservedNames);
@@ -364,6 +371,8 @@
propNode.getString())) {
externedNames.add(propNode.getString());
break;
+ } else if(propertyNamesToKeep.contains(propNode.getString())) {
+ break;
}
maybeMarkCandidate(propNode);
}
@@ -378,7 +387,9 @@
// that could conflict with this quoted key.
quotedNames.add(key.getString());
} else if (compiler.getCodingConvention().blockRenamingForProperty(key.getString())) {
- externedNames.add(key.getString());
+ externedNames.add(key.getString());
+ } else if(propertyNamesToKeep.contains(key.getString())) {
+ continue;
} else {
maybeMarkCandidate(key);
}
@@ -396,6 +407,8 @@
quotedNames.add(key.getString());
} else if (compiler.getCodingConvention().blockRenamingForProperty(key.getString())) {
externedNames.add(key.getString());
+ } else if(propertyNamesToKeep.contains(key.getString())) {
+ continue;
} else {
maybeMarkCandidate(key);
}
@@ -437,6 +450,8 @@
Node fnName = member.getFirstChild();
if (compiler.getCodingConvention().blockRenamingForProperty(memberDefName)) {
externedNames.add(fnName.getString());
+ } else if(propertyNamesToKeep.contains(memberDefName)) {
+ break;
} else if (memberDefName.equals("constructor")
|| memberDefName.equals("superClass_")) {
// TODO (simarora) is there a better way to identify these externs?
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 a8665a1..92f3cc8 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,10 +344,6 @@
checks.add(angularPass);
}
- if (propertyNamesToKeep != null && propertyNamesToKeep.size() > 0) {
- checks.add(keepPropertyNamesPass);
- }
-
if (!options.generateExportsAfterTypeChecking && options.generateExports) {
checks.add(generateExports);
}
@@ -1307,47 +1303,6 @@
}
};
- 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) {
@@ -3127,7 +3082,8 @@
prevPropertyMap,
options.getPropertyReservedNamingFirstChars(),
options.getPropertyReservedNamingNonFirstChars(),
- options.nameGenerator);
+ options.nameGenerator,
+ propertyNamesToKeep);
rprop.process(externs, root);
compiler.setPropertyMap(rprop.getPropertyMap());
}
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
index 89d364f..944003d 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
@@ -411,8 +411,6 @@
for (SourceFile closureSourceFile : closureSourceFiles) {
compilerWrapper.addJSSourceFile(closureSourceFile);
}
-
- writeExportedNames(compilerWrapper);
}
/////////////////////////////////////////////////////////////////////////////////
@@ -1115,41 +1113,6 @@
return true;
}
- private void writeExportedNames(JSClosureCompilerWrapper compilerWrapper)
- {
- if (!googConfiguration.getExportPublicSymbols())
- {
- // if not generating exports for every public symbol
- // generate an externs file that blocks renaming
- // of properties used by MXML and dataBinding.
- Set<String> exportedNames = project.getExportedNames();
- if (exportedNames.size() > 0)
- {
- StringBuilder sb = new StringBuilder();
- sb.append("/**\n");
- sb.append(" * generated by Apache Royale compiler\n");
- sb.append(" * @externs\n");
- sb.append(" */\n");
- for (String name : exportedNames)
- {
- sb.append("\n\n");
- sb.append("/**\n");
- sb.append(" * @export\n");
- sb.append(" */\n");
- sb.append("Object.prototype." + name + ";\n");
- }
- File exportsFile = new File(outputFolder, "dontrename.js");
- try {
- writeFile(exportsFile, sb.toString(), false);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- compilerWrapper.addJSExternsFile(exportsFile.getAbsolutePath());
- }
- }
- }
-
private String getFactoryClass(IMetaTag node)
{
if (node == null) return null;