You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2020/03/31 17:48:01 UTC
[royale-compiler] 04/05: prevent rename: nocollapse annotation is
only included when renaming is prevented
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit fbe6f6de9a54f30a003dfe7ff3c583664041fcc2
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Tue Mar 31 10:40:14 2020 -0700
prevent rename: nocollapse annotation is only included when renaming is prevented
---
.../internal/codegen/js/royale/JSRoyaleDocEmitter.java | 13 +++++++++++--
.../internal/codegen/js/royale/TestRoyaleClass.java | 2 +-
.../internal/codegen/js/royale/TestRoyaleFieldMembers.java | 14 +++++++-------
.../internal/codegen/mxml/royale/TestRoyaleMXMLScript.java | 4 ----
4 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
index 62c8e04..e2f7805 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleDocEmitter.java
@@ -546,6 +546,7 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
{
begin();
+ RoyaleJSProject fjp = (RoyaleJSProject)project;
String ns = node.getNamespace();
if (ns == IASKeywordConstants.PRIVATE)
{
@@ -554,10 +555,17 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
else if (ns == IASKeywordConstants.PROTECTED)
{
emitProtected(node);
+ boolean preventRename = fjp.config != null && fjp.config.getPreventRenameProtectedSymbols();
+ if(preventRename && node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode))
+ {
+ //dynamically getting/setting a protected static variable
+ //won't work properly if it is collapsed, even when it
+ //has been exported
+ emitJSDocLine(JSGoogDocEmitterTokens.NOCOLLAPSE);
+ }
}
else
{
- RoyaleJSProject fjp = (RoyaleJSProject)project;
boolean warnPublicVars = fjp.config != null && fjp.config.getWarnPublicVars() && !fjp.config.getPreventRenamePublicSymbols();
IMetaTagsNode meta = node.getMetaTags();
boolean bindable = false;
@@ -598,7 +606,8 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
if (ns.equals(IASKeywordConstants.PUBLIC))
{
emitPublic(node);
- if(node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode))
+ boolean preventRename = fjp.config != null && fjp.config.getPreventRenamePublicSymbols();
+ if(preventRename && node.hasModifier(ASModifier.STATIC) && !(node instanceof IAccessorNode))
{
//dynamically getting/setting a public static variable
//won't work properly if it is collapsed, even when it
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
index 0febdc1..7246eb8 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleClass.java
@@ -653,7 +653,7 @@ public class TestRoyaleClass extends TestGoogClass
+ "private static const C:Number = 42;"
+ "custom_namespace static const C:String = 'me' + 'you';}");
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.A = 42;\n\n\n/**\n * @protected\n * @const\n * @type {number}\n */\norg.apache.royale.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.royale.A.C = 42;\ [...]
+ assertOut("/**\n * @constructor\n */\norg.apache.royale.A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.royale.A', org.apache.royale.A);\n\n\n/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.A = 42;\n\n\n/**\n * @protected\n * @nocollapse\n * @const\n * @type {number}\n */\norg.apache.royale.A.B = 42;\n\n\n/**\n * @private\n * @const\n * @type {number}\n */\norg.apache.r [...]
}
@Override
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
index 9502c33..f92714a 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleFieldMembers.java
@@ -175,7 +175,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
{
IVariableNode node = getField("public static var foo:int;");
asBlockWalker.visitVariable(node);
- assertOut("/**\n * @export\n * @nocollapse\n * @type {number}\n */\nRoyaleTest_A.foo = 0");
+ assertOut("/**\n * @export\n * @type {number}\n */\nRoyaleTest_A.foo = 0");
}
@Test
@@ -210,7 +210,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
IClassNode node = (IClassNode) getNode("import custom.custom_namespace;use namespace custom_namespace;public static var foo:Object = initFoo(); custom_namespace static function initFoo():Object { return null; }",
IClassNode.class, WRAP_LEVEL_CLASS);
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @nocollapse\n * @type {Object}\n */\nRoyaleTest_A.foo;\n\n\n/**\n * @export\n * @return {Object}\n */\nRoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo = function() {\n return null;\n};\n\nRoyaleTest_A.foo = RoyaleTest_A.http_$$ns_apache_org$2017$custom$ [...]
+ assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo;\n\n\n/**\n * @export\n * @return {Object}\n */\nRoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initFoo = function() {\n return null;\n};\n\nRoyaleTest_A.foo = RoyaleTest_A.http_$$ns_apache_org$2017$custom$namespace__initF [...]
}
@Test
@@ -219,7 +219,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
IClassNode node = (IClassNode) getNode("static public var foo:Object = { 'foo': 'bar' }",
IClassNode.class, WRAP_LEVEL_CLASS);
asBlockWalker.visitClass(node);
- assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @nocollapse\n * @type {Object}\n */\nRoyaleTest_A.foo = {'foo':'bar'};");
+ assertOut("/**\n * @constructor\n */\nRoyaleTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('RoyaleTest_A', RoyaleTest_A);\n\n\n/**\n * @export\n * @type {Object}\n */\nRoyaleTest_A.foo = {'foo':'bar'};");
}
@Test
@@ -259,7 +259,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
{
IVariableNode node = getField("public static const foo;");
asBlockWalker.visitVariable(node);
- assertOut("/**\n * @export\n * @nocollapse\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo");
+ assertOut("/**\n * @export\n * @const\n * @type {*}\n */\nRoyaleTest_A.foo");
}
@Test
@@ -276,7 +276,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
{
IVariableNode node = getField("public static const foo:int;");
asBlockWalker.visitVariable(node);
- assertOut("/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 0");
+ assertOut("/**\n * @export\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 0");
}
@Test
@@ -293,7 +293,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
{
IVariableNode node = getField("public static const foo:int = 420;");
asBlockWalker.visitVariable(node);
- assertOut("/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 420");
+ assertOut("/**\n * @export\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = 420");
}
@Test
@@ -301,7 +301,7 @@ public class TestRoyaleFieldMembers extends TestGoogFieldMembers
{
IVariableNode node = getField("public static const foo:Number = parseFloat('1E2');");
asBlockWalker.visitVariable(node);
- assertOut("/**\n * @export\n * @nocollapse\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = parseFloat('1E2')");
+ assertOut("/**\n * @export\n * @const\n * @type {number}\n */\nRoyaleTest_A.foo = parseFloat('1E2')");
}
@Test
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
index d191566..eb5713b 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/mxml/royale/TestRoyaleMXMLScript.java
@@ -402,7 +402,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
"Object.defineProperties(AppName, /** @lends {AppName} */ {\n" +
"/**\n" +
" * @export\n" +
- " * @nocollapse\n" +
" * @type {string}\n" +
" */\n" +
"foo: {\n" +
@@ -505,7 +504,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
"\n" +
"/**\n" +
" * @export\n" +
- " * @nocollapse\n" +
" * @type {string}\n" +
" */\n" +
"AppName.foo = 'foo';\n" +
@@ -605,7 +603,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
"\n" +
"/**\n" +
" * @export\n" +
- " * @nocollapse\n" +
" * @type {Array}\n" +
" */\n" +
"AppName.foo = ['foo'];\n" +
@@ -713,7 +710,6 @@ public class TestRoyaleMXMLScript extends RoyaleTestBase
"Object.defineProperties(AppName, /** @lends {AppName} */ {\n" +
"/**\n" +
" * @export\n" +
- " * @nocollapse\n" +
" * @const\n" +
" * @type {string}\n" +
" */\n" +