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/11/03 22:51:09 UTC
[royale-compiler] branch develop updated: JSGoogConfiguration:
optional prevent-rename granular control over more than just namespaces
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 df8bd9f JSGoogConfiguration: optional prevent-rename granular control over more than just namespaces
df8bd9f is described below
commit df8bd9f686f1bbf89539e545377b2797c646172c
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Tue Nov 3 14:50:59 2020 -0800
JSGoogConfiguration: optional prevent-rename granular control over more than just namespaces
Includes static/instance and method/variable/accessor choices.
Can allow for even greater file size savings in release builds.
---
.../driver/js/goog/JSGoogConfiguration.java | 342 +++++++++++++++++++++
.../apache/royale/compiler/utils/ClosureUtils.java | 167 ++++++++--
2 files changed, 485 insertions(+), 24 deletions(-)
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 ff05246..e1cdcbe 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
@@ -484,6 +484,120 @@ public class JSGoogConfiguration extends JSConfiguration
}
//
+ // 'prevent-rename-public-instance-methods'
+ //
+
+ private boolean preventRenamePublicInstanceMethods = true;
+
+ public boolean getPreventRenamePublicInstanceMethods()
+ {
+ return preventRenamePublicInstanceMethods;
+ }
+
+ @Config
+ @Mapping("prevent-rename-public-instance-methods")
+ public void setPreventRenamePublicInstanceMethods(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenamePublicInstanceMethods = value;
+ }
+
+ //
+ // 'prevent-rename-public-static-methods'
+ //
+
+ private boolean preventRenamePublicStaticMethods = true;
+
+ public boolean getPreventRenamePublicStaticMethods()
+ {
+ return preventRenamePublicStaticMethods;
+ }
+
+ @Config
+ @Mapping("prevent-rename-public-static-methods")
+ public void setPreventRenamePublicStaticMethods(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenamePublicStaticMethods = value;
+ }
+
+ //
+ // 'prevent-rename-public-instance-variables'
+ //
+
+ private boolean preventRenamePublicInstanceVariables = true;
+
+ public boolean getPreventRenamePublicInstanceVariables()
+ {
+ return preventRenamePublicInstanceVariables;
+ }
+
+ @Config
+ @Mapping("prevent-rename-public-instance-variables")
+ public void setPreventRenamePublicInstanceVariables(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenamePublicInstanceVariables = value;
+ }
+
+ //
+ // 'prevent-rename-public-static-variables'
+ //
+
+ private boolean preventRenamePublicStaticVariables = true;
+
+ public boolean getPreventRenamePublicStaticVariables()
+ {
+ return preventRenamePublicStaticVariables;
+ }
+
+ @Config
+ @Mapping("prevent-rename-public-static-variables")
+ public void setPreventRenamePublicStaticVariables(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenamePublicStaticVariables = value;
+ }
+
+ //
+ // 'prevent-rename-public-instance-accessors'
+ //
+
+ private boolean preventRenamePublicInstanceAccessors = true;
+
+ public boolean getPreventRenamePublicInstanceAccessors()
+ {
+ return preventRenamePublicInstanceAccessors;
+ }
+
+ @Config
+ @Mapping("prevent-rename-public-instance-accessors")
+ public void setPreventRenamePublicInstanceAccessors(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenamePublicInstanceAccessors = value;
+ }
+
+ //
+ // 'prevent-rename-public-static-accessors'
+ //
+
+ private boolean preventRenamePublicStaticAccessors = true;
+
+ public boolean getPreventRenamePublicStaticAccessors()
+ {
+ return preventRenamePublicStaticAccessors;
+ }
+
+ @Config
+ @Mapping("prevent-rename-public-static-accessors")
+ public void setPreventRenamePublicStaticAccessors(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenamePublicStaticAccessors = value;
+ }
+
+ //
// 'prevent-rename-protected-symbols'
//
@@ -503,6 +617,120 @@ public class JSGoogConfiguration extends JSConfiguration
}
//
+ // 'prevent-rename-protected-instance-methods'
+ //
+
+ private boolean preventRenameProtectedInstanceMethods = true;
+
+ public boolean getPreventRenameProtectedInstanceMethods()
+ {
+ return preventRenameProtectedInstanceMethods;
+ }
+
+ @Config
+ @Mapping("prevent-rename-protected-instance-methods")
+ public void setPreventRenameProtectedInstanceMethods(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameProtectedInstanceMethods = value;
+ }
+
+ //
+ // 'prevent-rename-protected-static-methods'
+ //
+
+ private boolean preventRenameProtectedStaticMethods = true;
+
+ public boolean getPreventRenameProtectedStaticMethods()
+ {
+ return preventRenameProtectedStaticMethods;
+ }
+
+ @Config
+ @Mapping("prevent-rename-protected-static-methods")
+ public void setPreventRenameProtectedStaticMethods(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameProtectedStaticMethods = value;
+ }
+
+ //
+ // 'prevent-rename-protected-instance-variables'
+ //
+
+ private boolean preventRenameProtectedInstanceVariables = true;
+
+ public boolean getPreventRenameProtectedInstanceVariables()
+ {
+ return preventRenameProtectedInstanceVariables;
+ }
+
+ @Config
+ @Mapping("prevent-rename-protected-instance-variables")
+ public void setPreventRenameProtectedInstanceVariables(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameProtectedInstanceVariables = value;
+ }
+
+ //
+ // 'prevent-rename-protected-static-variables'
+ //
+
+ private boolean preventRenameProtectedStaticVariables = true;
+
+ public boolean getPreventRenameProtectedStaticVariables()
+ {
+ return preventRenameProtectedStaticVariables;
+ }
+
+ @Config
+ @Mapping("prevent-rename-protected-static-variables")
+ public void setPreventRenameProtectedStaticVariables(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameProtectedStaticVariables = value;
+ }
+
+ //
+ // 'prevent-rename-protected-instance-accessors'
+ //
+
+ private boolean preventRenameProtectedInstanceAccessors = true;
+
+ public boolean getPreventRenameProtectedInstanceAccessors()
+ {
+ return preventRenameProtectedInstanceAccessors;
+ }
+
+ @Config
+ @Mapping("prevent-rename-protected-instance-accessors")
+ public void setPreventRenameProtectedInstanceAccessors(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameProtectedInstanceAccessors = value;
+ }
+
+ //
+ // 'prevent-rename-protected-static-accessors'
+ //
+
+ private boolean preventRenameProtectedStaticAccessors = true;
+
+ public boolean getPreventRenameProtectedStaticAccessors()
+ {
+ return preventRenameProtectedStaticAccessors;
+ }
+
+ @Config
+ @Mapping("prevent-rename-protected-static-accessors")
+ public void setPreventRenameProtectedStaticAccessors(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameProtectedStaticAccessors = value;
+ }
+
+ //
// 'prevent-rename-internal-symbols'
//
@@ -521,6 +749,120 @@ public class JSGoogConfiguration extends JSConfiguration
preventRenameInternalSymbols = value;
}
+ //
+ // 'prevent-rename-internal-instance-methods'
+ //
+
+ private boolean preventRenameInternalInstanceMethods = true;
+
+ public boolean getPreventRenameInternalInstanceMethods()
+ {
+ return preventRenameInternalInstanceMethods;
+ }
+
+ @Config
+ @Mapping("prevent-rename-internal-instance-methods")
+ public void setPreventRenameInternalInstanceMethods(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameInternalInstanceMethods = value;
+ }
+
+ //
+ // 'prevent-rename-internal-static-methods'
+ //
+
+ private boolean preventRenameInternalStaticMethods = true;
+
+ public boolean getPreventRenameInternalStaticMethods()
+ {
+ return preventRenameInternalStaticMethods;
+ }
+
+ @Config
+ @Mapping("prevent-rename-internal-static-methods")
+ public void setPreventRenameInternalStaticMethods(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameInternalStaticMethods = value;
+ }
+
+ //
+ // 'prevent-rename-internal-instance-variables'
+ //
+
+ private boolean preventRenameInternalInstanceVariables = true;
+
+ public boolean getPreventRenameInternalInstanceVariables()
+ {
+ return preventRenameInternalInstanceVariables;
+ }
+
+ @Config
+ @Mapping("prevent-rename-internal-instance-variables")
+ public void setPreventRenameInternalInstanceVariables(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameInternalInstanceVariables = value;
+ }
+
+ //
+ // 'prevent-rename-internal-static-variables'
+ //
+
+ private boolean preventRenameInternalStaticVariables = true;
+
+ public boolean getPreventRenameInternalStaticVariables()
+ {
+ return preventRenameInternalStaticVariables;
+ }
+
+ @Config
+ @Mapping("prevent-rename-internal-static-variables")
+ public void setPreventRenameInternalStaticVariables(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameInternalStaticVariables = value;
+ }
+
+ //
+ // 'prevent-rename-internal-instance-accessors'
+ //
+
+ private boolean preventRenameInternalInstanceAccessors = true;
+
+ public boolean getPreventRenameInternalInstanceAccessors()
+ {
+ return preventRenameInternalInstanceAccessors;
+ }
+
+ @Config
+ @Mapping("prevent-rename-internal-instance-accessors")
+ public void setPreventRenameInternalInstanceAccessors(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameInternalInstanceAccessors = value;
+ }
+
+ //
+ // 'prevent-rename-internal-static-accessors'
+ //
+
+ private boolean preventRenameInternalStaticAccessors = true;
+
+ public boolean getPreventRenameInternalStaticAccessors()
+ {
+ return preventRenameInternalStaticAccessors;
+ }
+
+ @Config
+ @Mapping("prevent-rename-internal-static-accessors")
+ public void setPreventRenameInternalStaticAccessors(ConfigurationValue cv, boolean value)
+ throws ConfigurationException
+ {
+ preventRenameInternalStaticAccessors = value;
+ }
+
//
// 'warn-public-vars'
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 6a64ac2..1ae51eb 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
@@ -47,12 +47,29 @@ public class ClosureUtils
{
return;
}
- 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();
+ boolean preventRenamePublicSymbols = project.config != null && project.config.getPreventRenamePublicSymbols();
+ boolean preventRenamePublicInstanceMethods = project.config != null && project.config.getPreventRenamePublicInstanceMethods();
+ boolean preventRenamePublicStaticMethods = project.config != null && project.config.getPreventRenamePublicStaticMethods();
+ boolean preventRenamePublicInstanceVariables = project.config != null && project.config.getPreventRenamePublicInstanceVariables();
+ boolean preventRenamePublicStaticVariables = project.config != null && project.config.getPreventRenamePublicStaticVariables();
+ boolean preventRenamePublicInstanceAccessors = project.config != null && project.config.getPreventRenamePublicInstanceAccessors();
+ boolean preventRenamePublicStaticAccessors = project.config != null && project.config.getPreventRenamePublicStaticAccessors();
+
+ boolean preventRenameProtectedSymbols = project.config != null && project.config.getPreventRenameProtectedSymbols();
+ boolean preventRenameProtectedInstanceMethods = project.config != null && project.config.getPreventRenameProtectedInstanceMethods();
+ boolean preventRenameProtectedStaticMethods = project.config != null && project.config.getPreventRenameProtectedStaticMethods();
+ boolean preventRenameProtectedInstanceVariables = project.config != null && project.config.getPreventRenameProtectedInstanceVariables();
+ boolean preventRenameProtectedStaticVariables = project.config != null && project.config.getPreventRenameProtectedStaticVariables();
+ boolean preventRenameProtectedInstanceAccessors = project.config != null && project.config.getPreventRenameProtectedInstanceAccessors();
+ boolean preventRenameProtectedStaticAccessors = project.config != null && project.config.getPreventRenameProtectedStaticAccessors();
+
+ boolean preventRenameInternalSymbols = project.config != null && project.config.getPreventRenameInternalSymbols();
+ boolean preventRenameInternalInstanceMethods = project.config != null && project.config.getPreventRenameInternalInstanceMethods();
+ boolean preventRenameInternalStaticMethods = project.config != null && project.config.getPreventRenameInternalStaticMethods();
+ boolean preventRenameInternalInstanceVariables = project.config != null && project.config.getPreventRenameInternalInstanceVariables();
+ boolean preventRenameInternalStaticVariables = project.config != null && project.config.getPreventRenameInternalStaticVariables();
+ boolean preventRenameInternalInstanceAccessors = project.config != null && project.config.getPreventRenameInternalInstanceAccessors();
+ boolean preventRenameInternalStaticAccessors = project.config != null && project.config.getPreventRenameInternalStaticAccessors();
try
{
for(IASScope scope : cu.getFileScopeRequest().get().getScopes())
@@ -89,38 +106,140 @@ public class ClosureUtils
ITypeDefinition typeDef = (ITypeDefinition) def;
for (IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions())
{
- if (localDef.isImplicit())
+ if (localDef.isImplicit() || localDef.isPrivate())
{
continue;
}
INamespaceReference nsRef = localDef.getNamespaceReference();
boolean isCustomNS = !nsRef.isLanguageNamespace();
- if ((localDef.isPublic() && preventRenamePublic)
- || (isCustomNS && preventRenamePublic)
- || (localDef.isProtected() && preventRenameProtected)
- || (localDef.isInternal() && preventRenameInternal))
+ boolean isMethod = localDef instanceof IFunctionDefinition
+ && !(localDef instanceof IAccessorDefinition);
+ boolean isVar = localDef instanceof IVariableDefinition
+ && !(localDef instanceof IAccessorDefinition);
+ boolean isAccessor = localDef instanceof IAccessorDefinition;
+ if(localDef.isPublic() || isCustomNS)
+ {
+ if(!preventRenamePublicSymbols)
+ {
+ continue;
+ }
+ if(localDef.isStatic())
+ {
+ if(isMethod && !preventRenamePublicStaticMethods)
+ {
+ continue;
+ }
+ else if(isVar && !preventRenamePublicStaticVariables)
+ {
+ continue;
+ }
+ else if(isAccessor && !preventRenamePublicStaticAccessors)
+ {
+ continue;
+ }
+ }
+ else // instance
+ {
+ if(isMethod && !preventRenamePublicInstanceMethods)
+ {
+ continue;
+ }
+ else if(isVar && !preventRenamePublicInstanceVariables)
+ {
+ continue;
+ }
+ else if(isAccessor && !preventRenamePublicInstanceAccessors)
+ {
+ continue;
+ }
+ }
+ }
+ else if(localDef.isProtected())
+ {
+ if(!preventRenameProtectedSymbols)
+ {
+ continue;
+ }
+ if(localDef.isStatic())
+ {
+ if(isMethod && !preventRenameProtectedStaticMethods)
+ {
+ continue;
+ }
+ else if(isVar && !preventRenameProtectedStaticVariables)
+ {
+ continue;
+ }
+ else if(isAccessor && !preventRenameProtectedStaticAccessors)
+ {
+ continue;
+ }
+ }
+ else // instance
+ {
+ if(isMethod && !preventRenameProtectedInstanceMethods)
+ {
+ continue;
+ }
+ else if(isVar && !preventRenameProtectedInstanceVariables)
+ {
+ continue;
+ }
+ else if(isAccessor && !preventRenameProtectedInstanceAccessors)
+ {
+ continue;
+ }
+ }
+ }
+ else if(localDef.isInternal())
{
- if (localDef instanceof IAccessorDefinition)
+ if(!preventRenameInternalSymbols)
+ {
+ continue;
+ }
+ if(localDef.isStatic())
{
- if ((localDef.isPublic() && exportPublic)
- || (isCustomNS && exportPublic)
- || (localDef.isProtected() && exportProtected)
- || (localDef.isInternal() && exportInternal))
+ if(isMethod && !preventRenameInternalStaticMethods)
+ {
+ continue;
+ }
+ else if(isVar && !preventRenameInternalStaticVariables)
+ {
+ continue;
+ }
+ else if(isAccessor && !preventRenameInternalStaticAccessors)
{
- //if an accessor is exported, we don't
- //need to prevent renaming
- //(not true for other symbol types)
continue;
}
}
- String baseName = localDef.getBaseName();
- if (isCustomNS)
+ else // instance
{
- String uri = nsRef.resolveNamespaceReference(project).getURI();
- baseName = JSRoyaleEmitter.formatNamespacedProperty(uri, baseName, false);
+ if(isMethod && !preventRenameInternalInstanceMethods)
+ {
+ continue;
+ }
+ else if(isVar && !preventRenameInternalInstanceVariables)
+ {
+ continue;
+ }
+ else if(isAccessor && !preventRenameInternalInstanceAccessors)
+ {
+ continue;
+ }
}
- result.add(baseName);
}
+ else
+ {
+ //skip anything else not covered by the above cases
+ continue;
+ }
+ String baseName = localDef.getBaseName();
+ if (isCustomNS)
+ {
+ String uri = nsRef.resolveNamespaceReference(project).getURI();
+ baseName = JSRoyaleEmitter.formatNamespacedProperty(uri, baseName, false);
+ }
+ result.add(baseName);
}
}
}