Repository: flex-falcon
Updated Branches:
  refs/heads/develop f3f082fa3 -> 4550efc11


EmitterUtils: moved findFunction(), findFunctionNode(), findVariable(), and 
findVariableNode() from ASEmitter so that they can be accessed in more places 
(there seems to be duplicates of findType() and findTypeNode() in both classes, 
which should probably be cleaned up)


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

Branch: refs/heads/develop
Commit: 2450d143a6f58ac3063222c9d11444f4d0c3414b
Parents: 0c69c38
Author: Josh Tynjala <joshtynj...@apache.org>
Authored: Mon Jan 11 11:51:04 2016 -0800
Committer: Josh Tynjala <joshtynj...@apache.org>
Committed: Mon Jan 11 11:51:04 2016 -0800

----------------------------------------------------------------------
 .../compiler/internal/codegen/as/ASEmitter.java | 47 +-------------
 .../internal/codegen/js/utils/EmitterUtils.java | 64 ++++++++++++++++++--
 2 files changed, 61 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2450d143/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 9118e95..b142984 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -37,6 +37,7 @@ import 
org.apache.flex.compiler.definitions.IFunctionDefinition;
 import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.definitions.IVariableDefinition;
+import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
 import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
 import org.apache.flex.compiler.internal.tree.as.ContainerNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
@@ -324,7 +325,7 @@ public class ASEmitter implements IASEmitter, IEmitter
     public void emitPackageContents(IPackageDefinition definition)
     {
         IPackageNode node = definition.getNode();
-        ITypeNode tnode = findTypeNode(node);
+        ITypeNode tnode = EmitterUtils.findTypeNode(node);
         if (tnode != null)
         {
             indentPush();
@@ -1145,30 +1146,6 @@ public class ASEmitter implements IASEmitter, IEmitter
         }
         return null;
     }
-    
-    protected IFunctionNode findFunctionNode(IPackageNode node)
-    {
-        IScopedNode scope = node.getScopedNode();
-        for (int i = 0; i < scope.getChildCount(); i++)
-        {
-            IASNode child = scope.getChild(i);
-            if (child instanceof IFunctionNode)
-                return (IFunctionNode) child;
-        }
-        return null;
-    }
-
-    protected IVariableNode findVariableNode(IPackageNode node)
-    {
-        IScopedNode scope = node.getScopedNode();
-        for (int i = 0; i < scope.getChildCount(); i++)
-        {
-            IASNode child = scope.getChild(i);
-            if (child instanceof IVariableNode)
-                return (IVariableNode) child;
-        }
-        return null;
-    }
 
     protected ITypeDefinition findType(Collection<IDefinition> definitions)
     {
@@ -1180,26 +1157,6 @@ public class ASEmitter implements IASEmitter, IEmitter
         return null;
     }
 
-    protected IFunctionDefinition findFunction(Collection<IDefinition> 
definitions)
-    {
-        for (IDefinition definition : definitions)
-        {
-            if (definition instanceof IFunctionDefinition)
-                return (IFunctionDefinition) definition;
-        }
-        return null;
-    }
-
-    protected IVariableDefinition findVariable(Collection<IDefinition> 
definitions)
-    {
-        for (IDefinition definition : definitions)
-        {
-            if (definition instanceof IVariableDefinition)
-                return (IVariableDefinition) definition;
-        }
-        return null;
-    }
-
     public void walkArguments(IExpressionNode[] nodes)
     {
         int len = nodes.length;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2450d143/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
----------------------------------------------------------------------
diff --git 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
index 75e6e24..9afeb77 100644
--- 
a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
+++ 
b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
@@ -35,6 +35,7 @@ import 
org.apache.flex.compiler.definitions.IFunctionDefinition;
 import 
org.apache.flex.compiler.definitions.IFunctionDefinition.FunctionClassification;
 import org.apache.flex.compiler.definitions.INamespaceDefinition;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
+import org.apache.flex.compiler.definitions.IVariableDefinition;
 import org.apache.flex.compiler.internal.codegen.js.JSSessionModel;
 import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
 import org.apache.flex.compiler.internal.definitions.ClassDefinition;
@@ -56,6 +57,7 @@ import org.apache.flex.compiler.tree.as.IPackageNode;
 import org.apache.flex.compiler.tree.as.IParameterNode;
 import org.apache.flex.compiler.tree.as.IScopedNode;
 import org.apache.flex.compiler.tree.as.ITypeNode;
+import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.apache.flex.compiler.utils.NativeUtils;
 
 /**
@@ -85,10 +87,58 @@ public class EmitterUtils
         return null;
     }
 
+    public static IFunctionDefinition findFunction(Collection<IDefinition> 
definitions)
+    {
+        for (IDefinition definition : definitions)
+        {
+            if (definition instanceof IFunctionDefinition)
+                return (IFunctionDefinition) definition;
+        }
+        return null;
+    }
+
+    public static IFunctionNode findFunctionNode(IPackageNode node)
+    {
+        IScopedNode scope = node.getScopedNode();
+        for (int i = 0; i < scope.getChildCount(); i++)
+        {
+            IASNode child = scope.getChild(i);
+            if (child instanceof IFunctionNode)
+                return (IFunctionNode) child;
+        }
+        return null;
+    }
+
+    public static IVariableNode findVariableNode(IPackageNode node)
+    {
+        IScopedNode scope = node.getScopedNode();
+        for (int i = 0; i < scope.getChildCount(); i++)
+        {
+            IASNode child = scope.getChild(i);
+            if (child instanceof IVariableNode)
+                return (IVariableNode) child;
+        }
+        return null;
+    }
+
+    public static IVariableDefinition findVariable(Collection<IDefinition> 
definitions)
+    {
+        for (IDefinition definition : definitions)
+        {
+            if (definition instanceof IVariableDefinition)
+                return (IVariableDefinition) definition;
+        }
+        return null;
+    }
+
     public static ITypeDefinition getTypeDefinition(IDefinitionNode node)
     {
         ITypeNode tnode = (ITypeNode) node.getAncestorOfType(ITypeNode.class);
-        return (ITypeDefinition) tnode.getDefinition();
+        if (tnode != null)
+        {
+            return (ITypeDefinition) tnode.getDefinition();
+        }
+        return null;
     }
 
     public static boolean isSameClass(IDefinition pdef, IDefinition thisClass,
@@ -144,10 +194,14 @@ public class EmitterUtils
     public static IClassDefinition getSuperClassDefinition(
             IDefinitionNode node, ICompilerProject project)
     {
-        IClassDefinition parent = (IClassDefinition) node.getDefinition()
-                .getParent();
-        IClassDefinition superClass = parent.resolveBaseClass(project);
-        return superClass;
+        IDefinition parent = node.getDefinition().getParent();
+        if (parent instanceof IClassDefinition)
+        {
+            IClassDefinition parentClassDef = (IClassDefinition) parent;
+            IClassDefinition superClass = 
parentClassDef.resolveBaseClass(project);
+            return superClass;
+        }
+        return null;
     }
 
     public static List<String> resolveImports(ITypeDefinition type)

Reply via email to