You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2013/01/21 19:38:16 UTC

svn commit: r1436541 - in /flex/falcon/trunk: compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/ compiler.jx/src/org/apache/flex/compiler/as/codegen/ compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ compiler.jx/src/org/apa...

Author: mschmalle
Date: Mon Jan 21 18:38:16 2013
New Revision: 1436541

URL: http://svn.apache.org/viewvc?rev=1436541&view=rev
Log:
Flex:FalconJx 
- Changed signature of package visitor to IPackageDefiniton for mxml polymorphism

Modified:
    flex/falcon/trunk/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestWalkerBase.java
    flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java
    flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java
    flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java
    flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/js/codegen/goog/JSGoogEmitter.java
    flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java
    flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockWalker.java

Modified: flex/falcon/trunk/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestWalkerBase.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestWalkerBase.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestWalkerBase.java (original)
+++ flex/falcon/trunk/compiler.jx.tests/src/org/apache/flex/compiler/internal/as/codegen/TestWalkerBase.java Mon Jan 21 18:38:16 2013
@@ -14,7 +14,7 @@ public class TestWalkerBase extends Test
 {
     protected IASBlockVisitor visitor;
 
-    private IBackend backend;
+    protected IBackend backend;
 
     private ASFilterWriter writer;
 

Modified: flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java (original)
+++ flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java Mon Jan 21 18:38:16 2013
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.as.code
 
 import java.io.Writer;
 
+import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.internal.tree.as.FunctionObjectNode;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
 import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
@@ -47,7 +48,6 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
-import org.apache.flex.compiler.tree.as.IPackageNode;
 import org.apache.flex.compiler.tree.as.IParameterNode;
 import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.ISetterNode;
@@ -103,18 +103,14 @@ public interface IASEmitter
      */
     void writeNewline();
 
-    
-    
-    void emitPackageHeader(IPackageNode node);
+    void emitPackageHeader(IPackageDefinition definition);
 
-    void emitPackageHeaderContents(IPackageNode node);
+    void emitPackageHeaderContents(IPackageDefinition definition);
 
-    void emitPackageContents(IPackageNode node);
+    void emitPackageContents(IPackageDefinition definition);
 
-    void emitPackageFooter(IPackageNode node);
+    void emitPackageFooter(IPackageDefinition definition);
 
-    
-    
     /**
      * Emit a Class.
      * 

Modified: flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java (original)
+++ flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java Mon Jan 21 18:38:16 2013
@@ -25,6 +25,7 @@ import org.apache.flex.compiler.as.codeg
 import org.apache.flex.compiler.definitions.IClassDefinition;
 import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.IInterfaceDefinition;
+import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.internal.semantics.SemanticUtils;
 import org.apache.flex.compiler.internal.tree.as.BaseLiteralContainerNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionObjectNode;
@@ -93,7 +94,13 @@ import org.apache.flex.compiler.visitor.
 public class ASBlockWalker implements IASBlockVisitor, IASBlockWalker
 {
     private IASEmitter emitter;
-
+    
+    @Override
+    public IASEmitter getEmitter()
+    {
+        return emitter;
+    }
+    
     private final List<ICompilerProblem> errors;
 
     List<ICompilerProblem> getErrors()
@@ -184,10 +191,11 @@ public class ASBlockWalker implements IA
     public void visitPackage(IPackageNode node)
     {
         debug("visitPackage()");
-        emitter.emitPackageHeader(node);
-        emitter.emitPackageHeaderContents(node);
-        emitter.emitPackageContents(node);
-        emitter.emitPackageFooter(node);
+        IPackageDefinition definition = (IPackageDefinition) node.getDefinition();
+        emitter.emitPackageHeader(definition);
+        emitter.emitPackageHeaderContents(definition);
+        emitter.emitPackageContents(definition);
+        emitter.emitPackageFooter(definition);
     }
 
     //--------------------------------------------------------------------------
@@ -567,4 +575,5 @@ public class ASBlockWalker implements IA
                 && (definition.getParent() instanceof IClassDefinition || definition
                         .getParent() instanceof IInterfaceDefinition);
     }
+
 }

Modified: flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java (original)
+++ flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java Mon Jan 21 18:38:16 2013
@@ -32,6 +32,7 @@ import org.apache.flex.compiler.constant
 import org.apache.flex.compiler.constants.IASLanguageConstants;
 import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.IFunctionDefinition;
+import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.definitions.IVariableDefinition;
 import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
@@ -101,11 +102,14 @@ public class ASEmitter implements IASEmi
     public static final String CURLYBRACE_CLOSE = "}";
     public static final String CURLYBRACE_OPEN = "{";
     public static final String DASH = "-";
-    public static final String EQUALS = ASTNodeID.AssignmentExpressionID.getParaphrase();
-    public static final String FUNCTION = IASKeywordConstants.FUNCTION.toLowerCase();
+    public static final String EQUALS = ASTNodeID.AssignmentExpressionID
+            .getParaphrase();
+    public static final String FUNCTION = IASKeywordConstants.FUNCTION
+            .toLowerCase();
     public static final String INDENT = "\t";
     public static final String LENGTH = "length";
-    public static final String LESS_THEN = ASTNodeID.Op_LessThanID.getParaphrase();
+    public static final String LESS_THEN = ASTNodeID.Op_LessThanID
+            .getParaphrase();
     public static final String NL = "\n";
     public static final String PARENTHESES_CLOSE = ")";
     public static final String PARENTHESES_OPEN = "(";
@@ -170,9 +174,9 @@ public class ASEmitter implements IASEmi
     @Override
     public void write(String value)
     {
-    	try
-    	{
-	        out.write(value);
+        try
+        {
+            out.write(value);
         }
         catch (IOException e)
         {
@@ -199,7 +203,7 @@ public class ASEmitter implements IASEmi
     {
         currentIndent--;
     }
-    
+
     @Override
     public void writeNewline()
     {
@@ -222,14 +226,15 @@ public class ASEmitter implements IASEmi
     //--------------------------------------------------------------------------
 
     @Override
-    public void emitPackageHeader(IPackageNode node)
+    public void emitPackageHeader(IPackageDefinition definition)
     {
         writeToken(IASKeywordConstants.PACKAGE);
 
+        IPackageNode node = definition.getNode();
         String name = node.getQualifiedName();
         if (name != null && !name.equals(""))
         {
-        	write(SPACE);
+            write(SPACE);
             getWalker().walk(node.getNameExpressionNode());
         }
 
@@ -238,13 +243,14 @@ public class ASEmitter implements IASEmi
     }
 
     @Override
-    public void emitPackageHeaderContents(IPackageNode node)
+    public void emitPackageHeaderContents(IPackageDefinition definition)
     {
     }
 
     @Override
-    public void emitPackageContents(IPackageNode node)
+    public void emitPackageContents(IPackageDefinition definition)
     {
+        IPackageNode node = definition.getNode();
         ITypeNode tnode = findTypeNode(node);
         if (tnode != null)
         {
@@ -255,7 +261,7 @@ public class ASEmitter implements IASEmi
     }
 
     @Override
-    public void emitPackageFooter(IPackageNode node)
+    public void emitPackageFooter(IPackageDefinition definition)
     {
         indentPop();
         writeNewline();
@@ -333,18 +339,18 @@ public class ASEmitter implements IASEmi
                 {
                     write(SEMICOLON);
                     if (i < len - 1)
-                    	writeNewline();
+                        writeNewline();
                 }
                 else if (mnode.getNodeID() == ASTNodeID.FunctionID)
                 {
                     if (i < len - 1)
-                    	writeNewline();
+                        writeNewline();
                 }
                 else if (mnode.getNodeID() == ASTNodeID.GetterID
                         || mnode.getNodeID() == ASTNodeID.SetterID)
                 {
                     if (i < len - 1)
-                    	writeNewline();
+                        writeNewline();
                 }
                 i++;
             }
@@ -400,7 +406,7 @@ public class ASEmitter implements IASEmi
                 getWalker().walk(mnode);
                 write(SEMICOLON);
                 if (i < len - 1)
-                	writeNewline();
+                    writeNewline();
                 i++;
             }
 
@@ -641,9 +647,8 @@ public class ASEmitter implements IASEmi
         }
         else if (node instanceof IVariableNode)
         {
-            write(((IVariableNode) node).isConst() ? 
-            	  IASKeywordConstants.CONST : 
-                  IASKeywordConstants.VAR);
+            write(((IVariableNode) node).isConst() ? IASKeywordConstants.CONST
+                    : IASKeywordConstants.VAR);
             write(SPACE);
         }
     }
@@ -684,7 +689,7 @@ public class ASEmitter implements IASEmi
         IExpressionNode anode = node.getAssignedValueNode();
         if (anode != null)
         {
-        	write(SPACE);
+            write(SPACE);
             write(EQUALS);
             write(SPACE);
             getWalker().walk(anode);
@@ -706,7 +711,7 @@ public class ASEmitter implements IASEmi
     {
         if (node != null)
         {
-        	write(SPACE);
+            write(SPACE);
             write(EQUALS);
             write(SPACE);
             getWalker().walk(node);
@@ -721,7 +726,7 @@ public class ASEmitter implements IASEmi
 
     protected void emitMethodScope(IScopedNode node)
     {
-    	write(SPACE);
+        write(SPACE);
         getWalker().walk(node);
     }
 
@@ -770,7 +775,7 @@ public class ASEmitter implements IASEmi
         getWalker().walk(conditional.getChild(0)); // conditional expression
         write(PARENTHESES_CLOSE);
         if (!isImplicit(xnode))
-        	write(SPACE);
+            write(SPACE);
 
         getWalker().walk(conditional.getChild(1)); // BlockNode
         IConditionalNode[] nodes = node.getElseIfNodes();
@@ -786,7 +791,7 @@ public class ASEmitter implements IASEmi
                 if (isImplicit)
                     writeNewline();
                 else
-                	write(SPACE);
+                    write(SPACE);
 
                 write(IASKeywordConstants.ELSE);
                 write(SPACE);
@@ -796,7 +801,7 @@ public class ASEmitter implements IASEmi
                 getWalker().walk(enode.getChild(0));
                 write(PARENTHESES_CLOSE);
                 if (!isImplicit)
-                	write(SPACE);
+                    write(SPACE);
 
                 getWalker().walk(enode.getChild(1)); // ConditionalNode
             }
@@ -811,10 +816,10 @@ public class ASEmitter implements IASEmi
             if (isImplicit)
                 writeNewline();
             else
-            	write(SPACE);
+                write(SPACE);
             write(IASKeywordConstants.ELSE);
             if (!isImplicit)
-            	write(SPACE);
+                write(SPACE);
 
             getWalker().walk(elseNode); // TerminalNode
         }
@@ -835,7 +840,7 @@ public class ASEmitter implements IASEmi
 
         write(PARENTHESES_CLOSE);
         if (!isImplicit(xnode))
-        	write(SPACE);
+            write(SPACE);
 
         getWalker().walk(node.getStatementContentsNode());
     }
@@ -862,7 +867,7 @@ public class ASEmitter implements IASEmi
 
         write(PARENTHESES_CLOSE);
         if (!isImplicit(xnode))
-        	write(SPACE);
+            write(SPACE);
 
         getWalker().walk(node.getStatementContentsNode());
     }
@@ -892,7 +897,7 @@ public class ASEmitter implements IASEmi
             getWalker().walk(casen.getConditionalExpressionNode());
             write(COLON);
             if (!isImplicit(cnode))
-            	write(SPACE);
+                write(SPACE);
             getWalker().walk(casen.getStatementContentsNode());
             if (i == cnodes.length - 1 && dnode == null)
             {
@@ -908,7 +913,7 @@ public class ASEmitter implements IASEmi
             write(IASKeywordConstants.DEFAULT);
             write(COLON);
             if (!isImplicit(cnode))
-            	write(SPACE);
+                write(SPACE);
             getWalker().walk(dnode);
             indentPop();
             writeNewline();
@@ -926,7 +931,7 @@ public class ASEmitter implements IASEmi
         getWalker().walk(node.getConditionalExpressionNode());
         write(PARENTHESES_CLOSE);
         if (!isImplicit(cnode))
-        	write(SPACE);
+            write(SPACE);
         getWalker().walk(node.getStatementContentsNode());
     }
 
@@ -936,10 +941,10 @@ public class ASEmitter implements IASEmi
         IContainerNode cnode = (IContainerNode) node.getChild(0);
         write(IASKeywordConstants.DO);
         if (!isImplicit(cnode))
-        	write(SPACE);
+            write(SPACE);
         getWalker().walk(node.getStatementContentsNode());
         if (!isImplicit(cnode))
-        	write(SPACE);
+            write(SPACE);
         else
             writeNewline(); // TODO (mschmalle) there is something wrong here, block should NL
         write(IASKeywordConstants.WHILE);
@@ -960,7 +965,7 @@ public class ASEmitter implements IASEmi
         getWalker().walk(node.getTargetNode());
         write(PARENTHESES_CLOSE);
         if (!isImplicit(cnode))
-        	write(SPACE);
+            write(SPACE);
         getWalker().walk(node.getStatementContentsNode());
     }
 
@@ -985,7 +990,7 @@ public class ASEmitter implements IASEmi
         ITerminalNode fnode = node.getFinallyNode();
         if (fnode != null)
         {
-        	write(SPACE);
+            write(SPACE);
             write(IASKeywordConstants.FINALLY);
             write(SPACE);
             getWalker().walk(fnode);
@@ -995,7 +1000,7 @@ public class ASEmitter implements IASEmi
     @Override
     public void emitCatch(ICatchNode node)
     {
-    	write(SPACE);
+        write(SPACE);
         write(IASKeywordConstants.CATCH);
         write(SPACE);
         write(PARENTHESES_OPEN);
@@ -1012,7 +1017,7 @@ public class ASEmitter implements IASEmi
         IExpressionNode rnode = node.getReturnValueNode();
         if (rnode != null && rnode.getNodeID() != ASTNodeID.NilID)
         {
-        	write(SPACE);
+            write(SPACE);
             getWalker().walk(rnode);
         }
     }
@@ -1046,7 +1051,7 @@ public class ASEmitter implements IASEmi
     {
         getWalker().walk(node.getLeftOperandNode());
         if (node.getNodeID() != ASTNodeID.Op_CommaID)
-        	write(SPACE);
+            write(SPACE);
         write(node.getOperator().getOperatorText());
         write(SPACE);
         getWalker().walk(node.getRightOperandNode());
@@ -1137,7 +1142,7 @@ public class ASEmitter implements IASEmi
             getWalker().walk(node0);
             write(SEMICOLON);
             if (node1.getNodeID() != ASTNodeID.NilID)
-            	write(SPACE);
+                write(SPACE);
         }
         // condition or target
         if (node1 != null)
@@ -1145,7 +1150,7 @@ public class ASEmitter implements IASEmi
             getWalker().walk(node1);
             write(SEMICOLON);
             if (node2.getNodeID() != ASTNodeID.NilID)
-            	write(SPACE);
+                write(SPACE);
         }
         // iterator
         if (node2 != null)
@@ -1200,9 +1205,9 @@ public class ASEmitter implements IASEmi
     @Override
     public void emitLiteralContainer(IContainerNode node)
     {
-    	ContainerType type = node.getContainerType();
-    	String postFix = "";
-    	
+        ContainerType type = node.getContainerType();
+        String postFix = "";
+
         if (type == ContainerType.BRACES)
         {
             write(CURLYBRACE_OPEN);
@@ -1233,7 +1238,7 @@ public class ASEmitter implements IASEmi
         }
 
         if (postFix != "")
-        	write(postFix);
+            write(postFix);
     }
 
     @Override
@@ -1261,7 +1266,7 @@ public class ASEmitter implements IASEmi
         IIdentifierNode lnode = node.getLabelNode();
         if (lnode != null)
         {
-        	write(SPACE);
+            write(SPACE);
             getWalker().walk(lnode);
         }
     }

Modified: flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/js/codegen/goog/JSGoogEmitter.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/js/codegen/goog/JSGoogEmitter.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/js/codegen/goog/JSGoogEmitter.java (original)
+++ flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/internal/js/codegen/goog/JSGoogEmitter.java Mon Jan 21 18:38:16 2013
@@ -70,10 +70,10 @@ import org.apache.flex.compiler.tree.as.
  */
 public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
 {
-	private static final String CONSTRUCTOR_EMPTY = "emptyConstructor";
-	private static final String CONSTRUCTOR_FULL = "fullConstructor";
-	private static final String SUPER_FUNCTION_CALL = "replaceSuperFunction";
-	
+    private static final String CONSTRUCTOR_EMPTY = "emptyConstructor";
+    private static final String CONSTRUCTOR_FULL = "fullConstructor";
+    private static final String SUPER_FUNCTION_CALL = "replaceSuperFunction";
+
     public static final String GOOG_BASE = "goog.base";
     public static final String GOOG_INHERITS = "goog.inherits";
     public static final String GOOG_PROVIDE = "goog.provide";
@@ -86,7 +86,7 @@ public class JSGoogEmitter extends JSEmi
     //                    know if we visited the complementary instance already...
     //                    Q for (mschmalle): do we need to reset this at some point? 
     private List<String> propertyNames = new ArrayList<String>();
-    
+
     IJSGoogDocEmitter getDoc()
     {
         return (IJSGoogDocEmitter) getDocEmitter();
@@ -97,8 +97,9 @@ public class JSGoogEmitter extends JSEmi
     //--------------------------------------------------------------------------
 
     @Override
-    public void emitPackageHeader(IPackageNode node)
+    public void emitPackageHeader(IPackageDefinition definition)
     {
+        IPackageNode node = definition.getNode();
         ITypeNode type = findTypeNode(node);
         if (type == null)
             return;
@@ -116,8 +117,9 @@ public class JSGoogEmitter extends JSEmi
     }
 
     @Override
-    public void emitPackageHeaderContents(IPackageNode node)
+    public void emitPackageHeaderContents(IPackageDefinition definition)
     {
+        IPackageNode node = definition.getNode();
         ITypeNode type = findTypeNode(node);
         if (type == null)
             return;
@@ -129,7 +131,7 @@ public class JSGoogEmitter extends JSEmi
         {
             if (imp.indexOf(AS3) != -1)
                 continue;
-            
+
             /* goog.require('x');\n */
             write(GOOG_REQUIRE);
             write(PARENTHESES_OPEN);
@@ -140,30 +142,31 @@ public class JSGoogEmitter extends JSEmi
             write(SEMICOLON);
             writeNewline();
         }
-        
+
         // (erikdebruin) only write 'closing' line break when there are 
         //               actually imports...
-        if (list.size() > 1 || 
-        	(list.size() == 1 && list.get(0).indexOf(AS3) == -1))
+        if (list.size() > 1
+                || (list.size() == 1 && list.get(0).indexOf(AS3) == -1))
         {
             writeNewline();
         }
     }
 
     @Override
-    public void emitPackageContents(IPackageNode node)
+    public void emitPackageContents(IPackageDefinition definition)
     {
+        IPackageNode node = definition.getNode();
         ITypeNode type = findTypeNode(node);
         if (type == null)
             return;
 
         IClassNode cnode = (IClassNode) type;
-        
+
         emitClass(cnode);
     }
 
     @Override
-    public void emitPackageFooter(IPackageNode node)
+    public void emitPackageFooter(IPackageDefinition definition)
     {
     }
 
@@ -204,23 +207,23 @@ public class JSGoogEmitter extends JSEmi
                     write(SEMICOLON);
                 }
             }
-            else if (dnode.getNodeID() == ASTNodeID.GetterID || 
-            		 dnode.getNodeID() == ASTNodeID.SetterID)
+            else if (dnode.getNodeID() == ASTNodeID.GetterID
+                    || dnode.getNodeID() == ASTNodeID.SetterID)
             {
                 writeNewline();
                 writeNewline();
-            	emitAccessors((IAccessorNode) dnode);
+                emitAccessors((IAccessorNode) dnode);
                 write(SEMICOLON);
             }
         }
     }
-    
+
     @Override
     public void emitInterface(IInterfaceNode node)
     {
-    	getDoc().emitInterfaceDoc(node);
+        getDoc().emitInterfaceDoc(node);
 
-    	write(node.getNamespace());
+        write(node.getNamespace());
         write(SPACE);
 
         writeToken(IASKeywordConstants.INTERFACE);
@@ -233,40 +236,40 @@ public class JSGoogEmitter extends JSEmi
         write(CURLYBRACE_CLOSE);
 
         final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
-    	for (IDefinitionNode mnode : members)
-    	{
-    		boolean isAccessor = mnode.getNodeID() == ASTNodeID.GetterID ||
-    			mnode.getNodeID() == ASTNodeID.SetterID;
-        	
-			String qname = node.getQualifiedName();
-
-			if (!isAccessor || !propertyNames.contains(qname))
-	    	{
-	    		writeNewline();
-	
-	    		emitMemberName(node);
-				write(PERIOD);
-				write(PROTOTYPE);
-				write(PERIOD);
-				write(mnode.getQualifiedName());
-				
-				if (isAccessor && !propertyNames.contains(qname))
-				{
-					propertyNames.add(qname);
-		    	}
-		    	else
-				{
-		    		write(SPACE);
-		    		write(EQUALS);
-		    		write(SPACE);
-		    		write(FUNCTION);
-	
-		    		emitParamters(((IFunctionNode) mnode).getParameterNodes());
-				}
-    		
-				write(SEMICOLON);
-	    	}
-    	}
+        for (IDefinitionNode mnode : members)
+        {
+            boolean isAccessor = mnode.getNodeID() == ASTNodeID.GetterID
+                    || mnode.getNodeID() == ASTNodeID.SetterID;
+
+            String qname = node.getQualifiedName();
+
+            if (!isAccessor || !propertyNames.contains(qname))
+            {
+                writeNewline();
+
+                emitMemberName(node);
+                write(PERIOD);
+                write(PROTOTYPE);
+                write(PERIOD);
+                write(mnode.getQualifiedName());
+
+                if (isAccessor && !propertyNames.contains(qname))
+                {
+                    propertyNames.add(qname);
+                }
+                else
+                {
+                    write(SPACE);
+                    write(EQUALS);
+                    write(SPACE);
+                    write(FUNCTION);
+
+                    emitParamters(((IFunctionNode) mnode).getParameterNodes());
+                }
+
+                write(SEMICOLON);
+            }
+        }
     }
 
     @Override
@@ -277,19 +280,19 @@ public class JSGoogEmitter extends JSEmi
         getDoc().emitFieldDoc(node);
 
         /* x.prototype.y = z */
-        
+
         String root = "";
         if (!node.isConst())
         {
-        	root = PROTOTYPE;
-        	root += PERIOD;
+            root = PROTOTYPE;
+            root += PERIOD;
         }
         write(definition.getQualifiedName() + PERIOD + root + node.getName());
-        
+
         IExpressionNode vnode = node.getAssignedValueNode();
         if (vnode != null)
         {
-        	write(SPACE);
+            write(SPACE);
             write(EQUALS);
             write(SPACE);
             getWalker().walk(vnode);
@@ -321,18 +324,18 @@ public class JSGoogEmitter extends JSEmi
         }
 
         IExpressionNode avnode = node.getAssignedValueNode();
-    	
+
         if (avnode != null)
         {
-        	String opcode = avnode.getNodeID().getParaphrase();
-	        if (opcode != "AnonymousFunction")
-	        	getDoc().emitVarDoc(node);
+            String opcode = avnode.getNodeID().getParaphrase();
+            if (opcode != "AnonymousFunction")
+                getDoc().emitVarDoc(node);
         }
         else
         {
-        	getDoc().emitVarDoc(node);
+            getDoc().emitVarDoc(node);
         }
-        
+
         emitDeclarationName(node);
         emitAssignedValue(avnode);
 
@@ -352,39 +355,39 @@ public class JSGoogEmitter extends JSEmi
             }
         }
     }
-    
+
     @Override
     public void emitGetAccessor(IGetterNode node)
     {
         emitObjectDefineProperty(node);
     }
-    
+
     @Override
     public void emitSetAccessor(ISetterNode node)
     {
         emitObjectDefineProperty(node);
     }
-    
+
     private void emitAccessors(IAccessorNode node)
     {
-    	String qname = node.getQualifiedName();
-    	if (!propertyNames.contains(qname))
-    	{
-    		emitField(node);
+        String qname = node.getQualifiedName();
+        if (!propertyNames.contains(qname))
+        {
+            emitField(node);
             write(SEMICOLON);
             writeNewline();
             writeNewline();
-            
-    		propertyNames.add(qname);
-    	}
-    	
-    	if (node.getNodeID() == ASTNodeID.GetterID)
+
+            propertyNames.add(qname);
+        }
+
+        if (node.getNodeID() == ASTNodeID.GetterID)
         {
-        	emitGetAccessor((IGetterNode) node);
+            emitGetAccessor((IGetterNode) node);
         }
         else if (node.getNodeID() == ASTNodeID.SetterID)
         {
-        	emitSetAccessor((ISetterNode) node);
+            emitSetAccessor((ISetterNode) node);
         }
     }
 
@@ -395,50 +398,50 @@ public class JSGoogEmitter extends JSEmi
         fn.parseFunctionBody(new ArrayList<ICompilerProblem>());
 
         ICompilerProject project = getWalker().getProject();
-        
+
         getDoc().emitMethodDoc(node, project);
-        
+
         boolean isConstructor = node.isConstructor();
-        
+
         String qname = getTypeDefinition(node).getQualifiedName();
         if (qname != null && !qname.equals(""))
         {
             write(qname);
             if (!isConstructor)
             {
-            	write(PERIOD);
-            	if (!fn.hasModifier(ASModifier.STATIC))
-	            {
-	                write(PROTOTYPE);
-	            	write(PERIOD);
-	            }
+                write(PERIOD);
+                if (!fn.hasModifier(ASModifier.STATIC))
+                {
+                    write(PROTOTYPE);
+                    write(PERIOD);
+                }
             }
         }
 
         if (!isConstructor)
-    		emitMemberName(node);
-        
+            emitMemberName(node);
+
         write(SPACE);
         write(EQUALS);
         write(SPACE);
         write(FUNCTION);
-        
+
         emitParamters(node.getParameterNodes());
 
         boolean hasSuperClass = hasSuperClass(node);
 
         if (isConstructor && node.getScopedNode().getChildCount() == 0)
         {
-        	write(SPACE);
-        	write(CURLYBRACE_OPEN);
+            write(SPACE);
+            write(CURLYBRACE_OPEN);
             if (hasSuperClass)
-        		emitSuperCall(node, CONSTRUCTOR_EMPTY);
+                emitSuperCall(node, CONSTRUCTOR_EMPTY);
             writeNewline();
-        	write(CURLYBRACE_CLOSE);
+            write(CURLYBRACE_CLOSE);
         }
 
         if (!isConstructor || node.getScopedNode().getChildCount() > 0)
-        	emitMethodScope(node.getScopedNode());
+            emitMethodScope(node.getScopedNode());
 
         if (isConstructor && hasSuperClass)
         {
@@ -449,7 +452,8 @@ public class JSGoogEmitter extends JSEmi
             write(qname);
             write(COMMA);
             write(SPACE);
-            String sname = getSuperClassDefinition(node, project).getQualifiedName();
+            String sname = getSuperClassDefinition(node, project)
+                    .getQualifiedName();
             write(sname);
             write(PARENTHESES_CLOSE);
         }
@@ -458,23 +462,23 @@ public class JSGoogEmitter extends JSEmi
     @Override
     public void emitFunctionCall(IFunctionCallNode node)
     {
-    	ASTNodeID id = node.getChild(0).getNodeID();
-    	
-    	if (id == ASTNodeID.MemberAccessExpressionID)
-    		id = node.getChild(0).getChild(0).getNodeID();
-    	
-    	if (id != ASTNodeID.SuperID)
-    		super.emitFunctionCall(node);
-    	else
-    		emitSuperCall(node, SUPER_FUNCTION_CALL);
+        ASTNodeID id = node.getChild(0).getNodeID();
+
+        if (id == ASTNodeID.MemberAccessExpressionID)
+            id = node.getChild(0).getChild(0).getNodeID();
+
+        if (id != ASTNodeID.SuperID)
+            super.emitFunctionCall(node);
+        else
+            emitSuperCall(node, SUPER_FUNCTION_CALL);
     }
 
     @Override
     public void emitFunctionBlockHeader(IFunctionNode node)
     {
-    	if (node.isConstructor() && hasSuperClass(node))
-    		emitSuperCall(node, CONSTRUCTOR_FULL);
-        
+        if (node.isConstructor() && hasSuperClass(node))
+            emitSuperCall(node, CONSTRUCTOR_FULL);
+
         emitRestParameterCodeBlock(node);
 
         emitDefaultParameterCodeBlock(node);
@@ -482,62 +486,63 @@ public class JSGoogEmitter extends JSEmi
 
     private void emitSuperCall(IASNode node, String type)
     {
-    	IFunctionNode fnode = 
-    			(node instanceof IFunctionNode) ? (IFunctionNode) node : null;
-    	IFunctionCallNode fcnode = 
-    			(node instanceof IFunctionCallNode) ? (FunctionCallNode) node : null;
-
-    	if (type == CONSTRUCTOR_EMPTY)
-    	{
-        	indentPush();
-    		writeNewline();
-    		indentPop();
-    	}
-    	else if (type == SUPER_FUNCTION_CALL)
-    	{
-    		if (fnode == null)
-    			fnode = (IFunctionNode) fcnode.getAncestorOfType(IFunctionNode.class);
-    	}
-
-    	write(GOOG_BASE);
-    	write(PARENTHESES_OPEN);
-    	write(IASKeywordConstants.THIS);
-
-    	if (fnode != null && !fnode.isConstructor())
-    	{
-    		write(COMMA);
-    		write(SPACE);
-    		write(SINGLE_QUOTE);
-    		write(fnode.getName());
-    		write(SINGLE_QUOTE);
-    	}
-
-    	if (fcnode != null)
-    	{
-    		IExpressionNode[] enodes = fcnode.getArgumentNodes();
-    		int len = enodes.length;
-    		for (int i = 0; i < len; i++)
-    		{
-    			write(COMMA);
-    			write(SPACE);
-
-    			getWalker().walk(enodes[i]);
-    		}
-    	}
-
-    	write(PARENTHESES_CLOSE);
-
-    	if (type == CONSTRUCTOR_FULL)
-    	{
-        	write(SEMICOLON);
-        	writeNewline();
-    	}
-    	else if (type == CONSTRUCTOR_EMPTY)
-    	{
-        	write(SEMICOLON);
-    	}
+        IFunctionNode fnode = (node instanceof IFunctionNode) ? (IFunctionNode) node
+                : null;
+        IFunctionCallNode fcnode = (node instanceof IFunctionCallNode) ? (FunctionCallNode) node
+                : null;
+
+        if (type == CONSTRUCTOR_EMPTY)
+        {
+            indentPush();
+            writeNewline();
+            indentPop();
+        }
+        else if (type == SUPER_FUNCTION_CALL)
+        {
+            if (fnode == null)
+                fnode = (IFunctionNode) fcnode
+                        .getAncestorOfType(IFunctionNode.class);
+        }
+
+        write(GOOG_BASE);
+        write(PARENTHESES_OPEN);
+        write(IASKeywordConstants.THIS);
+
+        if (fnode != null && !fnode.isConstructor())
+        {
+            write(COMMA);
+            write(SPACE);
+            write(SINGLE_QUOTE);
+            write(fnode.getName());
+            write(SINGLE_QUOTE);
+        }
+
+        if (fcnode != null)
+        {
+            IExpressionNode[] enodes = fcnode.getArgumentNodes();
+            int len = enodes.length;
+            for (int i = 0; i < len; i++)
+            {
+                write(COMMA);
+                write(SPACE);
+
+                getWalker().walk(enodes[i]);
+            }
+        }
+
+        write(PARENTHESES_CLOSE);
+
+        if (type == CONSTRUCTOR_FULL)
+        {
+            write(SEMICOLON);
+            writeNewline();
+        }
+        else if (type == CONSTRUCTOR_EMPTY)
+        {
+            write(SEMICOLON);
+        }
     }
-    
+
     private void emitDefaultParameterCodeBlock(IFunctionNode node)
     {
         IParameterNode[] pnodes = node.getParameterNodes();
@@ -561,12 +566,12 @@ public class JSGoogEmitter extends JSEmi
 
             for (int i = 0, n = parameters.size(); i < n; i++)
             {
-            	IParameterNode pnode = parameters.get(i);
-            	
+                IParameterNode pnode = parameters.get(i);
+
                 if (pnode != null)
                 {
                     code.setLength(0);
-                    
+
                     /* x = typeof y !== 'undefined' ? y : z;\n */
                     code.append(pnode.getName());
                     code.append(SPACE);
@@ -574,7 +579,7 @@ public class JSGoogEmitter extends JSEmi
                     code.append(SPACE);
                     code.append(IASKeywordConstants.TYPEOF);
                     code.append(SPACE);
-                    code.append(pnode.getName()); 
+                    code.append(pnode.getName());
                     code.append(SPACE);
                     code.append(ASTNodeID.Op_StrictNotEqualID.getParaphrase());
                     code.append(SPACE);
@@ -584,18 +589,18 @@ public class JSGoogEmitter extends JSEmi
                     code.append(SPACE);
                     code.append(ASTNodeID.TernaryExpressionID.getParaphrase());
                     code.append(SPACE);
-                    code.append(pnode.getName()); 
-                    code.append(SPACE); 
-                    code.append(COLON); 
-                    code.append(SPACE); 
+                    code.append(pnode.getName());
+                    code.append(SPACE);
+                    code.append(COLON);
+                    code.append(SPACE);
                     code.append(pnode.getDefaultValue());
-                    code.append(SEMICOLON); 
+                    code.append(SEMICOLON);
 
                     write(code.toString());
-                    
+
                     if (i == n - 1 && !hasBody(node))
                         indentPop();
-                    
+
                     writeNewline();
                 }
             }
@@ -618,21 +623,21 @@ public class JSGoogEmitter extends JSEmi
             code.append(SPACE);
             code.append(IASLanguageConstants.Array);
             code.append(PERIOD);
-        	code.append(PROTOTYPE);
-        	code.append(PERIOD);
-        	code.append(SLICE);
-        	code.append(PERIOD);
-        	code.append(CALL);
-        	code.append(PARENTHESES_OPEN);
-        	code.append(IASLanguageConstants.arguments);
-        	code.append(COMMA);
-        	code.append(SPACE);
-        	code.append(String.valueOf(pnodes.length - 1));
-        	code.append(PARENTHESES_CLOSE);
-        	code.append(SEMICOLON);
+            code.append(PROTOTYPE);
+            code.append(PERIOD);
+            code.append(SLICE);
+            code.append(PERIOD);
+            code.append(CALL);
+            code.append(PARENTHESES_OPEN);
+            code.append(IASLanguageConstants.arguments);
+            code.append(COMMA);
+            code.append(SPACE);
+            code.append(String.valueOf(pnodes.length - 1));
+            code.append(PARENTHESES_CLOSE);
+            code.append(SEMICOLON);
 
             write(code.toString());
-            
+
             writeNewline();
         }
     }
@@ -665,7 +670,7 @@ public class JSGoogEmitter extends JSEmi
 
         write(PARENTHESES_CLOSE);
         if (!isImplicit(xnode))
-        	write(SPACE);
+            write(SPACE);
 
         getWalker().walk(node.getStatementContentsNode());
     }
@@ -719,23 +724,28 @@ public class JSGoogEmitter extends JSEmi
 
     private static IClassDefinition getClassDefinition(IDefinitionNode node)
     {
-        IClassNode tnode = (IClassNode) node.getAncestorOfType(IClassNode.class);
+        IClassNode tnode = (IClassNode) node
+                .getAncestorOfType(IClassNode.class);
         return tnode.getDefinition();
     }
 
-    private static IClassDefinition getSuperClassDefinition(IDefinitionNode node, ICompilerProject project)
+    private static IClassDefinition getSuperClassDefinition(
+            IDefinitionNode node, ICompilerProject project)
     {
-        IClassDefinition parent = (IClassDefinition) node.getDefinition().getParent();
+        IClassDefinition parent = (IClassDefinition) node.getDefinition()
+                .getParent();
         IClassDefinition superClass = parent.resolveBaseClass(project);
         return superClass;
     }
 
     private boolean hasSuperClass(IDefinitionNode node)
     {
-    	ICompilerProject project = getWalker().getProject();
-    	IClassDefinition superClassDefinition = getSuperClassDefinition(node, project);
-    	String qname = superClassDefinition.getQualifiedName();
-    	return superClassDefinition != null && !qname.equals(IASLanguageConstants.Object);
+        ICompilerProject project = getWalker().getProject();
+        IClassDefinition superClassDefinition = getSuperClassDefinition(node,
+                project);
+        String qname = superClassDefinition.getQualifiedName();
+        return superClassDefinition != null
+                && !qname.equals(IASLanguageConstants.Object);
     }
 
     private static boolean hasBody(IFunctionNode node)
@@ -754,10 +764,10 @@ public class JSGoogEmitter extends JSEmi
             configurable: true}
          );
         */
-    
+
         FunctionNode fn = (FunctionNode) node;
         fn.parseFunctionBody(problems);
-        
+
         // head
         write(IASLanguageConstants.Object);
         write(PERIOD);
@@ -772,8 +782,8 @@ public class JSGoogEmitter extends JSEmi
         write(type.getQualifiedName());
         if (!node.hasModifier(ASModifier.STATIC))
         {
-	        write(PERIOD);
-	        write(PROTOTYPE);
+            write(PERIOD);
+            write(PROTOTYPE);
         }
         write(COMMA);
         write(SPACE);
@@ -790,16 +800,14 @@ public class JSGoogEmitter extends JSEmi
         // info object
         // declaration
         write(CURLYBRACE_OPEN);
-        write(node.getNodeID() == 
-        		ASTNodeID.GetterID ? 
-        		IASKeywordConstants.GET : 
-        		IASKeywordConstants.SET);
+        write(node.getNodeID() == ASTNodeID.GetterID ? IASKeywordConstants.GET
+                : IASKeywordConstants.SET);
         write(COLON);
         write(FUNCTION);
         emitParamters(node.getParameterNodes());
 
         emitMethodScope(node.getScopedNode());
-        
+
         write(COMMA);
         write(SPACE);
         write(CONFIGURABLE);
@@ -828,12 +836,12 @@ public class JSGoogEmitter extends JSEmi
     @Override
     public void emitBinaryOperator(IBinaryOperatorNode node)
     {
-    	ASTNodeID id = node.getNodeID();
-    	
-    	if (id == ASTNodeID.Op_AsID || id == ASTNodeID.Op_IsID)
+        ASTNodeID id = node.getNodeID();
+
+        if (id == ASTNodeID.Op_AsID || id == ASTNodeID.Op_IsID)
         {
-        	// TODO (erikdebruin) replace: this is a placeholder for the 
-    		//                    eventual implementation
+            // TODO (erikdebruin) replace: this is a placeholder for the 
+            //                    eventual implementation
             write((id == ASTNodeID.Op_AsID) ? "as" : "is");
             write(PARENTHESES_OPEN);
             getWalker().walk(node.getLeftOperandNode());
@@ -844,31 +852,33 @@ public class JSGoogEmitter extends JSEmi
         }
         else
         {
-        	getWalker().walk(node.getLeftOperandNode());
+            getWalker().walk(node.getLeftOperandNode());
 
             if (id != ASTNodeID.Op_CommaID)
                 write(SPACE);
-            
+
             // (erikdebruin) rewrite 'a &&= b' to 'a = a && b'
-            if (id == ASTNodeID.Op_LogicalAndAssignID || id == ASTNodeID.Op_LogicalOrAssignID)
+            if (id == ASTNodeID.Op_LogicalAndAssignID
+                    || id == ASTNodeID.Op_LogicalOrAssignID)
             {
-            	IIdentifierNode lnode = (IIdentifierNode) node.getLeftOperandNode();
-            	
+                IIdentifierNode lnode = (IIdentifierNode) node
+                        .getLeftOperandNode();
+
                 write(EQUALS);
                 write(SPACE);
                 write(lnode.getName());
                 write(SPACE);
-                write((id == ASTNodeID.Op_LogicalAndAssignID) ? 
-                		     ASTNodeID.Op_LogicalAndID.getParaphrase() : 
-                		     ASTNodeID.Op_LogicalOrID.getParaphrase());
+                write((id == ASTNodeID.Op_LogicalAndAssignID) ? ASTNodeID.Op_LogicalAndID
+                        .getParaphrase() : ASTNodeID.Op_LogicalOrID
+                        .getParaphrase());
             }
             else
             {
-            	write(node.getOperator().getOperatorText());
+                write(node.getOperator().getOperatorText());
             }
-            
+
             write(SPACE);
-            
+
             getWalker().walk(node.getRightOperandNode());
         }
     }

Modified: flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java (original)
+++ flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java Mon Jan 21 18:38:16 2013
@@ -91,10 +91,10 @@ public interface IASBlockVisitor
 
     void visitCompilationUnit(ICompilationUnit unit);
 
-    void visitPackage(IPackageNode node);
-
     void visitFile(IFileNode node);
 
+    void visitPackage(IPackageNode node);
+
     void visitClass(IClassNode node);
 
     void visitInterface(IInterfaceNode node);

Modified: flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockWalker.java
URL: http://svn.apache.org/viewvc/flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockWalker.java?rev=1436541&r1=1436540&r2=1436541&view=diff
==============================================================================
--- flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockWalker.java (original)
+++ flex/falcon/trunk/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockWalker.java Mon Jan 21 18:38:16 2013
@@ -19,6 +19,7 @@
 
 package org.apache.flex.compiler.visitor;
 
+import org.apache.flex.compiler.as.codegen.IASEmitter;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.tree.as.IASNode;
 
@@ -41,5 +42,9 @@ public interface IASBlockWalker extends 
      * @param node The {@link IASNode} to traverse using the current strategy
      */
     void walk(IASNode node);
-
+    
+    /**
+     * The current code emitter.
+     */
+    IASEmitter getEmitter();
 }