AccessorEmitter: missing nocollapse annotation when an accessor is only a setter without a getter
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
index f4064aa..f5d43e6 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
@@ -815,12 +815,18 @@
boolean emitExports = true;
boolean exportProtected = false;
boolean exportInternal = false;
+ boolean preventRenamePublicSymbols = true;
+ boolean preventRenameProtectedSymbols = true;
+ boolean preventRenameInternalSymbols = true;
RoyaleJSProject project = (RoyaleJSProject) getWalker().getProject();
if (project != null && project.config != null)
{
emitExports = project.config.getExportPublicSymbols();
exportProtected = project.config.getExportProtectedSymbols();
exportInternal = project.config.getExportInternalSymbols();
+ preventRenamePublicSymbols = project.config.getPreventRenamePublicSymbols();
+ preventRenameProtectedSymbols = project.config.getPreventRenameProtectedSymbols();
+ preventRenameInternalSymbols = project.config.getPreventRenameInternalSymbols();
}
PropertyNodes p = map.get(key);
@@ -836,14 +842,17 @@
if(uri != null || def.isPublic())
{
p.resolvedExport = p.resolvedExport || emitExports;
+ p.preventRename = p.preventRename || preventRenamePublicSymbols;
}
else if(def.isInternal())
{
p.resolvedExport = p.resolvedExport || exportInternal;
+ p.preventRename = p.preventRename || preventRenameInternalSymbols;
}
else if(def.isProtected())
{
p.resolvedExport = p.resolvedExport || exportProtected;
+ p.preventRename = p.preventRename || preventRenameProtectedSymbols;
}
p.setter = node;
if (!p.suppressExport) p.suppressExport = suppress;
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
index e88faee..574c406 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleAccessorMembers.java
@@ -158,7 +158,7 @@
IClassNode.class, WRAP_LEVEL_CLASS);
asBlockWalker.visitClass(node);
assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n" +
- "/**\n * @export\n * @type {number}\n */\nRoyaleTest_A.foo;\n\n\n" +
+ "/**\n * @nocollapse\n * @export\n * @type {number}\n */\nRoyaleTest_A.foo;\n\n\n" +
"RoyaleTest_A.set__foo = function(value) {\n};\n\n\n" +
"Object.defineProperties(RoyaleTest_A, /** @lends {RoyaleTest_A} */ {\n/**\n * @type {number}\n */\nfoo: {\nset: RoyaleTest_A.set__foo}}\n);");
}