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/09/16 18:40:54 UTC

[royale-compiler] 02/02: RoyaleClosurePassConfig: restore previous prevent-rename-* behavior because the newer alternative seems to have broken some things (closes #159)

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 458eb74cd1aba9ee6573d635e19b47b7670539b5
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Wed Sep 16 11:36:25 2020 -0700

    RoyaleClosurePassConfig: restore previous prevent-rename-* behavior because the newer alternative seems to have broken some things (closes #159)
---
 .../javascript/jscomp/RoyaleClosurePassConfig.java | 47 +++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

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 @@ public final class RoyaleClosurePassConfig extends PassConfig {
       checks.add(angularPass);
     }
 
+    if (propertyNamesToKeep != null && propertyNamesToKeep.size() > 0) {
+      checks.add(keepPropertyNamesPass);
+    }
+
     if (extraSymbolNamesToExport != null) {
       checks.add(generateRoyaleExports);
     }
@@ -1287,6 +1291,47 @@ public final class RoyaleClosurePassConfig extends PassConfig {
       }
     };
 
+    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 @@ public final class RoyaleClosurePassConfig extends PassConfig {
                       options.getPropertyReservedNamingFirstChars(),
                       options.getPropertyReservedNamingNonFirstChars(),
                       options.nameGenerator,
-                      propertyNamesToKeep);
+                      null);
               rprop.process(externs, root);
               compiler.setPropertyMap(rprop.getPropertyMap());
             }


Re: [royale-compiler] 02/02: RoyaleClosurePassConfig: restore previous prevent-rename-* behavior because the newer alternative seems to have broken some things (closes #159)

Posted by Piotr Zarzycki <pi...@gmail.com>.
Thanks Josh! It brings our app back on feet. Yesterday we have issue where
in release mode one of the object was renamed probably where it shouldn't
be..

śr., 16 wrz 2020 o 20:40 <jo...@apache.org> napisał(a):

> 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 458eb74cd1aba9ee6573d635e19b47b7670539b5
> Author: Josh Tynjala <jo...@apache.org>
> AuthorDate: Wed Sep 16 11:36:25 2020 -0700
>
>     RoyaleClosurePassConfig: restore previous prevent-rename-* behavior
> because the newer alternative seems to have broken some things (closes #159)
> ---
>  .../javascript/jscomp/RoyaleClosurePassConfig.java | 47
> +++++++++++++++++++++-
>  1 file changed, 46 insertions(+), 1 deletion(-)
>
> 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 @@ public final class RoyaleClosurePassConfig extends
> PassConfig {
>        checks.add(angularPass);
>      }
>
> +    if (propertyNamesToKeep != null && propertyNamesToKeep.size() > 0) {
> +      checks.add(keepPropertyNamesPass);
> +    }
> +
>      if (extraSymbolNamesToExport != null) {
>        checks.add(generateRoyaleExports);
>      }
> @@ -1287,6 +1291,47 @@ public final class RoyaleClosurePassConfig extends
> PassConfig {
>        }
>      };
>
> +    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 @@ public final class RoyaleClosurePassConfig extends
> PassConfig {
>                        options.getPropertyReservedNamingFirstChars(),
>                        options.getPropertyReservedNamingNonFirstChars(),
>                        options.nameGenerator,
> -                      propertyNamesToKeep);
> +                      null);
>                rprop.process(externs, root);
>                compiler.setPropertyMap(rprop.getPropertyMap());
>              }
>
>

-- 

Piotr Zarzycki