in compiler-jx/src/main/java/org/apache/royale/compiler/utils/ClosureUtils.java [41:254]
public static void collectPropertyNamesToKeep(ICompilationUnit cu, RoyaleJSProject project, Set<String> result)
{
if (project.isExternalLinkage(cu))
{
return;
}
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())
{
for(IDefinition def : scope.getAllLocalDefinitions())
{
if(def instanceof IPackageDefinition)
{
//source files seem to return packages while SWC files
//return symbols inside the packages
//we want the symbols, so drill down into the package
IPackageDefinition packageDef = (IPackageDefinition) def;
def = packageDef.getContainedScope().getAllLocalDefinitions().iterator().next();
}
if (DefinitionUtils.hasExportSuppressed(def)) {
continue;
}
if(scope instanceof IFileScope && def.isPrivate())
{
//file-private symbols are emitted like static variables
result.add(def.getBaseName());
}
if (def instanceof IVariableDefinition
&& !(def instanceof IAccessorDefinition))
{
IVariableDefinition varDef = (IVariableDefinition) def;
if (varDef.getVariableClassification().equals(VariableClassification.PACKAGE_MEMBER)) {
result.add(def.getBaseName());
}
}
if (def instanceof ITypeDefinition)
{
if (def.isImplicit() || def.isNative())
{
continue;
}
ITypeDefinition typeDef = (ITypeDefinition) def;
for (IDefinition localDef : typeDef.getContainedScope().getAllLocalDefinitions())
{
if (localDef.isImplicit() || localDef.isPrivate())
{
continue;
}
if (DefinitionUtils.hasExportSuppressed(localDef)) {
continue;
}
INamespaceReference nsRef = localDef.getNamespaceReference();
boolean isCustomNS = !nsRef.isLanguageNamespace();
boolean isMethod = localDef instanceof IFunctionDefinition
&& !(localDef instanceof IAccessorDefinition);
boolean isVar = localDef instanceof IVariableDefinition
&& !(localDef instanceof IAccessorDefinition)
&& !localDef.isBindable();
boolean isAccessor = localDef instanceof IAccessorDefinition
|| (localDef instanceof IVariableDefinition && localDef.isBindable());
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(!preventRenameInternalSymbols)
{
continue;
}
if(localDef.isStatic())
{
if(isMethod && !preventRenameInternalStaticMethods)
{
continue;
}
else if(isVar && !preventRenameInternalStaticVariables)
{
continue;
}
else if(isAccessor && !preventRenameInternalStaticAccessors)
{
continue;
}
}
else // instance
{
if(isMethod && !preventRenameInternalInstanceMethods)
{
continue;
}
else if(isVar && !preventRenameInternalInstanceVariables)
{
continue;
}
else if(isAccessor && !preventRenameInternalInstanceAccessors)
{
continue;
}
}
}
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);
}
}
}
}
}
catch(InterruptedException e) {}
}