You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2017/08/23 01:11:26 UTC

git commit: [flex-falcon] [refs/heads/develop] - generate class alias info

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 1b3b89aa8 -> fc13fbc54


generate class alias info


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/fc13fbc5
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/fc13fbc5
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/fc13fbc5

Branch: refs/heads/develop
Commit: fc13fbc54208b1bccaa62ebc0829f08f149b6fb0
Parents: 1b3b89a
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 22 18:11:15 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 22 18:11:22 2017 -0700

----------------------------------------------------------------------
 .../internal/targets/FlexAppSWFTarget.java      | 143 ++++++++++---------
 .../internal/targets/FlexLibrarySWFTarget.java  |   2 +-
 .../compiler/internal/targets/FlexTarget.java   |  19 ++-
 3 files changed, 91 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fc13fbc5/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexAppSWFTarget.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexAppSWFTarget.java b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexAppSWFTarget.java
index d0f7f8f..b97daea 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexAppSWFTarget.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexAppSWFTarget.java
@@ -1370,7 +1370,74 @@ public class FlexAppSWFTarget extends AppSWFTarget
                 return false;
             ClassDefinition objectClassDef = (ClassDefinition)objectDef;
             
-            
+            Map<String, String> effectNameToTriggerMap = new TreeMap<String, String>();
+            Map<String, Boolean> inheritingStyleMap = new TreeMap<String, Boolean>();            
+            Map<ClassDefinition, String> remoteClassAliasMap =
+                new TreeMap<ClassDefinition, String>(new Comparator<ClassDefinition>()
+                {
+                    @Override
+                    public int compare(ClassDefinition o1, ClassDefinition o2)
+                    {
+                        return o1.getQualifiedName().compareTo(o2.getQualifiedName());
+                    } 
+                })
+                {
+                    private static final long serialVersionUID = 1L;
+
+                    /**
+                     *  Override so warning messages can be logged. 
+                     */
+                    @Override
+                    public String put(ClassDefinition key, String value)
+                    {
+                        // check for duplicate values and log a warning if any remote 
+                        // classes try to use the same alias.
+                        if (containsValue(value))
+                        {
+                           for (Map.Entry<ClassDefinition,String> entry  : entrySet())
+                           {
+                               if (value != null && value.equals(entry.getValue()))
+                               {
+                                   problems.add(new ClassesMappedToSameRemoteAliasProblem(key.getQualifiedName(),
+                                           entry.getKey().getQualifiedName(), value));
+                                   break;
+                               }
+                           }
+                        }
+                        return super.put(key, value);
+                    }
+                };
+                
+            for (ICompilationUnit cu : emittedCompilationUnits)
+            {
+                Collection<IDefinition> visibleDefs = cu.getFileScopeRequest().get().getExternallyVisibleDefinitions();
+                for (IDefinition visibleDef : visibleDefs)
+                {
+                    if (visibleDef instanceof ClassDefinition)
+                    {
+                        ClassDefinition visibleClass = (ClassDefinition) visibleDef;
+                        IEffectDefinition[] effectDefinitions = visibleClass.getEffectDefinitions(flexProject.getWorkspace());
+                        for (IEffectDefinition effectDefinition : effectDefinitions)
+                        {
+                            // TODO create compiler problem if effect already has a trigger.
+                            effectNameToTriggerMap.put(effectDefinition.getBaseName(), effectDefinition.getEvent());
+                        }
+                        
+                        IStyleDefinition[] styleDefinitions = visibleClass.getStyleDefinitions(flexProject.getWorkspace());
+                        for (IStyleDefinition styleDefinition : styleDefinitions)
+                        {
+                            boolean isInheriting = styleDefinition.isInheriting();
+                            // TODO create compiler problem if style definitions conflict
+                            inheritingStyleMap.put(styleDefinition.getBaseName(), isInheriting);
+                        }
+                        
+                        String remoteClassAlias = visibleClass.getRemoteClassAlias();
+                        if (remoteClassAlias != null)
+                            remoteClassAliasMap.put(visibleClass, remoteClassAlias);
+                    }
+                }
+            }
+
             // Generate code for the constructor:
             // public function ClassName()
             // {
@@ -1458,7 +1525,8 @@ public class FlexAppSWFTarget extends AppSWFTarget
                         rslInfo,
                         problems,
                         isAppFlexInfo,
-                        isFlexSDKInfo);
+                        isFlexSDKInfo,
+                        remoteClassAliasMap);
                 
             }
             else
@@ -1491,74 +1559,6 @@ public class FlexAppSWFTarget extends AppSWFTarget
                 initMethod.addInstruction(ABCConstants.OP_constructprop, new Object[] { styleManagerImplReference.getMName(), 1 });
                 initMethod.addInstruction(ABCConstants.OP_setlocal2);
                 
-                Map<String, String> effectNameToTriggerMap = new TreeMap<String, String>();
-                Map<String, Boolean> inheritingStyleMap = new TreeMap<String, Boolean>();
-                Map<ClassDefinition, String> remoteClassAliasMap =
-                    new TreeMap<ClassDefinition, String>(new Comparator<ClassDefinition>()
-                    {
-                        @Override
-                        public int compare(ClassDefinition o1, ClassDefinition o2)
-                        {
-                            return o1.getQualifiedName().compareTo(o2.getQualifiedName());
-                        } 
-                    })
-                    {
-                        private static final long serialVersionUID = 1L;
-    
-                        /**
-                         *  Override so warning messages can be logged. 
-                         */
-                        @Override
-                        public String put(ClassDefinition key, String value)
-                        {
-                            // check for duplicate values and log a warning if any remote 
-                            // classes try to use the same alias.
-                            if (containsValue(value))
-                            {
-                               for (Map.Entry<ClassDefinition,String> entry  : entrySet())
-                               {
-                                   if (value != null && value.equals(entry.getValue()))
-                                   {
-                                       problems.add(new ClassesMappedToSameRemoteAliasProblem(key.getQualifiedName(),
-                                               entry.getKey().getQualifiedName(), value));
-                                       break;
-                                   }
-                               }
-                            }
-                            return super.put(key, value);
-                        }
-                    };
-                    
-                for (ICompilationUnit cu : emittedCompilationUnits)
-                {
-                    Collection<IDefinition> visibleDefs = cu.getFileScopeRequest().get().getExternallyVisibleDefinitions();
-                    for (IDefinition visibleDef : visibleDefs)
-                    {
-                        if (visibleDef instanceof ClassDefinition)
-                        {
-                            ClassDefinition visibleClass = (ClassDefinition) visibleDef;
-                            IEffectDefinition[] effectDefinitions = visibleClass.getEffectDefinitions(flexProject.getWorkspace());
-                            for (IEffectDefinition effectDefinition : effectDefinitions)
-                            {
-                                // TODO create compiler problem if effect already has a trigger.
-                                effectNameToTriggerMap.put(effectDefinition.getBaseName(), effectDefinition.getEvent());
-                            }
-                            
-                            IStyleDefinition[] styleDefinitions = visibleClass.getStyleDefinitions(flexProject.getWorkspace());
-                            for (IStyleDefinition styleDefinition : styleDefinitions)
-                            {
-                                boolean isInheriting = styleDefinition.isInheriting();
-                                // TODO create compiler problem if style definitions conflict
-                                inheritingStyleMap.put(styleDefinition.getBaseName(), isInheriting);
-                            }
-                            
-                            String remoteClassAlias = visibleClass.getRemoteClassAlias();
-                            if (remoteClassAlias != null)
-                                remoteClassAliasMap.put(visibleClass, remoteClassAlias);
-                        }
-                    }
-                }
-                
                 // register effects
                 if (!effectNameToTriggerMap.isEmpty())
                 {
@@ -1833,7 +1833,8 @@ public class FlexAppSWFTarget extends AppSWFTarget
                     rslInfo,
                     problemCollection,
                     false,
-                    isFlexSDKInfo);
+                    isFlexSDKInfo,
+                    null);
             
             classGen.finishScript();
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fc13fbc5/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexLibrarySWFTarget.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexLibrarySWFTarget.java b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexLibrarySWFTarget.java
index 823e54d..d24435b 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexLibrarySWFTarget.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexLibrarySWFTarget.java
@@ -462,7 +462,7 @@ public final class FlexLibrarySWFTarget extends LibrarySWFTarget
                     null, // rsls
                     null, // rslinof
                     problemCollection,
-                    false, false);
+                    false, false, null);
             
         }
         

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fc13fbc5/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexTarget.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexTarget.java b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexTarget.java
index 0e3351b..9263e79 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexTarget.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/targets/FlexTarget.java
@@ -46,6 +46,7 @@ import org.apache.flex.compiler.definitions.references.ReferenceFactory;
 import org.apache.flex.compiler.internal.abc.ClassGeneratorHelper;
 import org.apache.flex.compiler.internal.as.codegen.LexicalScope;
 import org.apache.flex.compiler.internal.config.FrameInfo;
+import org.apache.flex.compiler.internal.definitions.ClassDefinition;
 import org.apache.flex.compiler.internal.definitions.NamespaceDefinition;
 import org.apache.flex.compiler.internal.projects.FlexProject;
 import org.apache.flex.compiler.internal.targets.Target.DirectDependencies;
@@ -256,6 +257,7 @@ public abstract class FlexTarget
      * @param rsls legacy RSLs. May be null for library swfs.
      * @param problemCollection problems found when generating the info method
      * are added to the collection.
+     * @param remoteClassAliasMap 
      * @throws InterruptedException 
      */
     
@@ -276,7 +278,8 @@ public abstract class FlexTarget
             FlexRSLInfo rslInfo,
             Collection<ICompilerProblem> problemCollection,
             boolean isAppFlexInfo,
-            boolean isFlexSDKInfo) 
+            boolean isFlexSDKInfo, 
+            Map<ClassDefinition, String> remoteClassAliasMap) 
             throws InterruptedException
     {
         IResolvedQualifiersReference applicationDomainRef = ReferenceFactory.packageQualifiedReference(flexProject.getWorkspace(),
@@ -422,6 +425,20 @@ public abstract class FlexTarget
             infoEntries++;            
         }
 
+        if (remoteClassAliasMap != null && !remoteClassAliasMap.isEmpty())
+        {
+            info.addInstruction(ABCConstants.OP_pushstring, "remoteClassAliases");
+            for (Map.Entry<ClassDefinition, String> classAliasEntry : remoteClassAliasMap.entrySet())
+            {
+                info.addInstruction(ABCConstants.OP_pushstring, classAliasEntry.getKey().getQualifiedName());
+                info.addInstruction(ABCConstants.OP_convert_s);
+                String value = classAliasEntry.getValue();
+                info.addInstruction(ABCConstants.OP_pushstring, value);
+            }
+            info.addInstruction(ABCConstants.OP_newobject, remoteClassAliasMap.size());
+            infoEntries++;
+        }
+        
         // fonts:
         if (!frame1Info.embeddedFonts.isEmpty())
         {