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


The following commit(s) were added to refs/heads/develop by this push:
     new b043b9b  prevent-rename-internal-symbols and export-internal-symbols 
compiler options
b043b9b is described below

commit b043b9b4ca1769754360e644425049c86163ccb4
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Jul 1 09:32:36 2020 -0700

    prevent-rename-internal-symbols and export-internal-symbols compiler options
---
 .../codegen/js/royale/JSRoyaleDocEmitter.java      | 27 +++++++++++++++
 .../driver/js/goog/JSGoogCompcConfiguration.java   | 19 ++++++++++
 .../driver/js/goog/JSGoogConfiguration.java        | 40 ++++++++++++++++++++++
 .../apache/royale/compiler/utils/ClosureUtils.java | 16 +++++++--
 4 files changed, 99 insertions(+), 3 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 e3c584d..070edbf 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
@@ -59,6 +59,7 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
     public boolean emitStringConversions = true;
     private boolean emitExports = true;
     private boolean exportProtected = false;
+    private boolean exportInternal = false;
     
     private boolean suppressClosure = false;
 
@@ -141,11 +142,13 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
         {
                emitExports = !suppressExports && 
fjp.config.getExportPublicSymbols();
                exportProtected = !suppressExports && 
fjp.config.getExportProtectedSymbols();
+               exportInternal = !suppressExports && 
fjp.config.getExportInternalSymbols();
         }
         else
         {
             emitExports = !suppressExports;
             exportProtected = false;
+            exportInternal = false;
         }
         if (node.getAncestorOfType(IClassNode.class) != null)
         {
@@ -576,6 +579,14 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
                 emitNoCollapse(node);
             }
         }
+        else if (ns == IASKeywordConstants.INTERNAL)
+        {
+            boolean preventRenameInternal = fjp.config != null && 
fjp.config.getPreventRenameInternalSymbols();
+            if (preventRenameInternal)
+            {
+                emitNoCollapse(node);
+            }
+        }
         else if(ns != IASKeywordConstants.PRIVATE) // public or custom 
namespace
         {
             boolean preventRenamePublic = fjp.config != null && 
fjp.config.getPreventRenamePublicSymbols();
@@ -612,11 +623,13 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
         {
                emitExports = !suppressExports && 
fjp.config.getExportPublicSymbols();
                exportProtected = !suppressExports && 
fjp.config.getExportProtectedSymbols();
+               exportInternal = !suppressExports && 
fjp.config.getExportInternalSymbols();
         }
         else
         {
             emitExports = !suppressExports;
             exportProtected = false;
+            exportInternal = false;
         }
         emitExports = emitExports && 
!node.getVariableClassification().equals(VariableClassification.PACKAGE_MEMBER);
 
@@ -639,6 +652,11 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
         else if (ns == IASKeywordConstants.INTERNAL)
         {
             emitInternal(node);
+            boolean preventRename = fjp.config != null && 
fjp.config.getPreventRenameInternalSymbols();
+            if (preventRename)
+            {
+                emitNoCollapse(node);
+            }
         }
         else
         {
@@ -714,6 +732,15 @@ public class JSRoyaleDocEmitter extends JSGoogDocEmitter
        else
                super.emitProtected(node);
     }
+
+    @Override
+    public void emitInternal(IASNode node)
+    {
+       if (exportInternal)
+               super.emitPublic(node);
+       else
+               super.emitInternal(node);
+    }
     
     @Override
     public void emitPublic(IASNode node)
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
index a63a741..53ee681 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
@@ -441,6 +441,25 @@ public class JSGoogCompcConfiguration extends 
JSConfiguration
        exportProtectedSymbols = value;
     }
 
+    //
+    // 'export-internal-symbols'
+    //
+
+    private boolean exportInternalSymbols = false;
+
+    public boolean getExportInternalSymbols()
+    {
+        return exportInternalSymbols;
+    }
+
+    @Config
+    @Mapping("export-internal-symbols")
+    public void setExportInternalSymbols(ConfigurationValue cv, boolean value)
+            throws ConfigurationException
+    {
+       exportInternalSymbols = value;
+    }
+
     
     //
     // 'warn-public-vars'
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index 1d813e4..ff05246 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -444,6 +444,25 @@ public class JSGoogConfiguration extends JSConfiguration
     {
        exportProtectedSymbols = value;
     }
+    
+    //
+    // 'export-internal-symbols'
+    //
+
+    private boolean exportInternalSymbols = false;
+
+    public boolean getExportInternalSymbols()
+    {
+        return exportInternalSymbols;
+    }
+
+    @Config
+    @Mapping("export-internal-symbols")
+    public void setExportInternalSymbols(ConfigurationValue cv, boolean value)
+            throws ConfigurationException
+    {
+       exportInternalSymbols = value;
+    }
 
     //
     // 'prevent-rename-public-symbols'
@@ -483,6 +502,25 @@ public class JSGoogConfiguration extends JSConfiguration
        preventRenameProtectedSymbols = value;
     }
 
+    //
+    // 'prevent-rename-internal-symbols'
+    //
+
+    private boolean preventRenameInternalSymbols = true;
+
+    public boolean getPreventRenameInternalSymbols()
+    {
+        return preventRenameInternalSymbols;
+    }
+
+    @Config
+    @Mapping("prevent-rename-internal-symbols")
+    public void setPreventRenameInternalSymbols(ConfigurationValue cv, boolean 
value)
+            throws ConfigurationException
+    {
+       preventRenameInternalSymbols = value;
+    }
+
     
     //
     // 'warn-public-vars'
@@ -539,12 +577,14 @@ public class JSGoogConfiguration extends JSConfiguration
         final int HAS_KEEP_CODE_WITH_METADATA = 4;
         final int HAS_EXPORT_PUBLIC_SYMBOLS = 8;
         final int EXPORT_PROTECTED_SYMBOLS = 16;
+        final int EXPORT_INTERNAL_SYMBOLS = 32;
     
         if (getJsDefaultInitializers()) ret |= WITH_DEFAULT_INITIALIZERS;
         if (getCompilerKeepAs3Metadata().size() > 0) ret |= 
HAS_KEEP_AS3_METADATA;
         if (getCompilerKeepCodeWithMetadata().size() > 0) ret |= 
HAS_KEEP_CODE_WITH_METADATA;
         if (getExportPublicSymbols()) ret |= HAS_EXPORT_PUBLIC_SYMBOLS;
         if (getExportProtectedSymbols()) ret |= EXPORT_PROTECTED_SYMBOLS;
+        if (getExportInternalSymbols()) ret |= EXPORT_INTERNAL_SYMBOLS;
         
         return ret;
     }
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 9d6e81f..41e94e9 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
@@ -48,8 +48,10 @@ public class ClosureUtils
         }
                boolean preventRenamePublic = project.config != null && 
project.config.getPreventRenamePublicSymbols();
         boolean preventRenameProtected = project.config != null && 
project.config.getPreventRenameProtectedSymbols();
+        boolean preventRenameInternal = project.config != null && 
project.config.getPreventRenameInternalSymbols();
         boolean exportPublic = project.config != null && 
project.config.getExportPublicSymbols();
         boolean exportProtected = project.config != null && 
project.config.getExportProtectedSymbols();
+        boolean exportInternal = project.config != null && 
project.config.getExportInternalSymbols();
         try
         {
             for(IASScope scope : cu.getFileScopeRequest().get().getScopes())
@@ -94,13 +96,17 @@ public class ClosureUtils
                             boolean isPublic = nsRef instanceof 
INamespaceDefinition.IPublicNamespaceDefinition;
                             boolean isProtected = nsRef instanceof 
INamespaceDefinition.IProtectedNamespaceDefinition
                                     || nsRef instanceof 
INamespaceDefinition.IStaticProtectedNamespaceDefinition;
+                            boolean isInternal = nsRef instanceof 
INamespaceDefinition.IInternalNamespaceDefinition;
                             
-                            if ((isPublic && preventRenamePublic) || 
(isProtected && preventRenameProtected))
+                            if ((isPublic && preventRenamePublic)
+                                    || (isProtected && preventRenameProtected)
+                                    || (isInternal && preventRenameInternal))
                             {
                                 if (localDef instanceof IAccessorDefinition)
                                 {
                                     /* disabled temporarily until 
AccessorEmitter handles @export
-                                        (isProtected && exportProtected) */
+                                        (isProtected && exportProtected)
+                                        (isInternal && exportInternal) */
                                     if ((isPublic && exportPublic))
                                     {
                                         //if an accessor is exported, we don't
@@ -129,6 +135,7 @@ public class ClosureUtils
         }
         boolean exportPublic = project.config != null && 
project.config.getExportPublicSymbols();
         boolean exportProtected = project.config != null && 
project.config.getExportProtectedSymbols();
+        boolean exportInternal = project.config != null && 
project.config.getExportInternalSymbols();
         try
         {
             String parentQName = null;
@@ -188,13 +195,16 @@ public class ClosureUtils
                             boolean isPublic = nsRef instanceof 
INamespaceDefinition.IPublicNamespaceDefinition;
                             boolean isProtected = nsRef instanceof 
INamespaceDefinition.IProtectedNamespaceDefinition
                                     || nsRef instanceof 
INamespaceDefinition.IStaticProtectedNamespaceDefinition;
+                            boolean isInternal = nsRef instanceof 
INamespaceDefinition.IInternalNamespaceDefinition;
                             if (localDef instanceof IFunctionDefinition
                                     && !(localDef instanceof 
IAccessorDefinition)
                                     // the next condition is temporary, and 
more
                                     // symbols will be exported in the future
                                     && isPublic)
                             {
-                                if ((isPublic && exportPublic) || (isProtected 
&& exportProtected))
+                                if ((isPublic && exportPublic)
+                                        || (isProtected && exportProtected)
+                                        || (isInternal && exportInternal))
                                 {
                                     if (isFilePrivate)
                                     {

Reply via email to