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 <joshtynj...@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 <joshtynj...@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

Reply via email to