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 f197057c1bdb4b03bbac4bbca6135b278cb2d6d3
Author: Josh Tynjala <[email protected]>
AuthorDate: Mon May 11 10:36:56 2020 -0700

    ClosureUtils: prevent rename public/protected symbols must include 
accessors in the set if export public/protected is disabled
---
 .../apache/royale/compiler/utils/ClosureUtils.java | 34 +++++++++++-----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java 
b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
index 0dccf19..a1ae12f 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java
@@ -23,6 +23,7 @@ import java.util.LinkedHashSet;
 import java.util.Set;
 
 import org.apache.royale.compiler.asdoc.royale.ASDocComment;
+import org.apache.royale.compiler.definitions.IAccessorDefinition;
 import org.apache.royale.compiler.definitions.IDefinition;
 import org.apache.royale.compiler.definitions.IFunctionDefinition;
 import org.apache.royale.compiler.definitions.INamespaceDefinition;
@@ -44,8 +45,10 @@ public class ClosureUtils
         {
             return;
         }
-               boolean preventRenamePublic = 
project.config.getPreventRenamePublicSymbols();
-        boolean preventRenameProtected = 
project.config.getPreventRenameProtectedSymbols();
+               boolean preventRenamePublic = project.config != null && 
project.config.getPreventRenamePublicSymbols();
+        boolean preventRenameProtected = project.config != null && 
project.config.getPreventRenameProtectedSymbols();
+        boolean exportPublic = project.config != null && 
project.config.getExportPublicSymbols();
+        boolean exportProtected = project.config != null && 
project.config.getExportProtectedSymbols();
         try
         {
             for(IASScope scope : cu.getFileScopeRequest().get().getScopes())
@@ -83,23 +86,20 @@ public class ClosureUtils
                             boolean isProtected = nsRef instanceof 
INamespaceDefinition.IProtectedNamespaceDefinition
                                     || nsRef instanceof 
INamespaceDefinition.IStaticProtectedNamespaceDefinition;
                             
-                            if (!isPublic && !isProtected)
+                            if ((isPublic && preventRenamePublic) || 
(isProtected && preventRenameProtected))
                             {
-                                continue;
-                            }
-                            if (isProtected && !preventRenameProtected)
-                            {
-                                continue;
-                            }
-                            if (isPublic && !preventRenamePublic)
-                            {
-                                continue;
-                            }
-                            if (localDef instanceof IVariableDefinition && 
localDef instanceof IFunctionDefinition)
-                            {
-                                continue;
+                                if (localDef instanceof IAccessorDefinition)
+                                {
+                                    if ((isPublic && exportPublic) || 
(isProtected && exportProtected))
+                                    {
+                                        //if an accessor is exported, we don't
+                                        //need to prevent renaming
+                                        //(not true for other symbol types)
+                                        continue;
+                                    }
+                                }
+                                result.add(localDef.getBaseName());
                             }
-                            result.add(localDef.getBaseName());
                         }
                     }
                 }

Reply via email to