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 <[email protected]> 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" +
