You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/04/11 16:00:10 UTC

[43/50] git commit: [flex-falcon] [refs/heads/feature/maven-migration] - added source maps for for loop, and renamed emitters for while and do-while loops

added source maps for for loop, and renamed emitters for while and do-while loops


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

Branch: refs/heads/feature/maven-migration
Commit: c759afdfc4f3ac1128b7a0d7a08dbf40b2b0dfa3
Parents: d89a0b2
Author: Josh Tynjala <jo...@apache.org>
Authored: Fri Apr 8 13:55:45 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Fri Apr 8 13:55:45 2016 -0700

----------------------------------------------------------------------
 .../js/sourcemaps/TestSourceMapStatements.java  | 69 ++++++++++++++
 .../compiler/internal/codegen/js/JSEmitter.java | 26 +++--
 .../internal/codegen/js/jx/DoWhileEmitter.java  | 71 --------------
 .../codegen/js/jx/DoWhileLoopEmitter.java       | 71 ++++++++++++++
 .../internal/codegen/js/jx/ForLoopEmitter.java  | 99 ++++++++++++++++++++
 .../internal/codegen/js/jx/WhileEmitter.java    | 61 ------------
 .../codegen/js/jx/WhileLoopEmitter.java         | 61 ++++++++++++
 7 files changed, 318 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
index 713c3cf..3c25d07 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
@@ -3,6 +3,7 @@ package org.apache.flex.compiler.internal.codegen.js.sourcemaps;
 import org.apache.flex.compiler.driver.IBackend;
 import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
 import org.apache.flex.compiler.internal.test.SourceMapTestBase;
+import org.apache.flex.compiler.tree.as.IForLoopNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 
 import org.junit.Test;
@@ -95,6 +96,74 @@ public class TestSourceMapStatements extends SourceMapTestBase
         assertMapping(node, 0, 35, 0, 89, 0, 91); // 42
     }
 
+    //----------------------------------
+    // for () { }
+    //----------------------------------
+
+    @Test
+    public void testVisitFor_1a()
+    {
+        IForLoopNode node = (IForLoopNode) getNode(
+                "for (var i:int = 0; i < len; i++) { break; }",
+                IForLoopNode.class);
+        asBlockWalker.visitForLoop(node);
+        //for (var /** @type {number} */ i = 0; i < len; i++) {\n  break;\n}
+        assertMapping(node, 0, 0, 0, 0, 0, 5);    // for (
+        assertMapping(node, 0, 18, 0, 36, 0, 38); // ;
+        assertMapping(node, 0, 27, 0, 45, 0, 47); // ;
+        assertMapping(node, 0, 32, 0, 50, 0, 52); // )
+    }
+
+    @Test
+    public void testVisitFor_1b()
+    {
+        IForLoopNode node = (IForLoopNode) getNode(
+                "for (var i:int = 0; i < len; i++) break;", IForLoopNode.class);
+        asBlockWalker.visitForLoop(node);
+        //for (var /** @type {number} */ i = 0; i < len; i++)\n  break;
+        assertMapping(node, 0, 0, 0, 0, 0, 5);    // for (
+        assertMapping(node, 0, 18, 0, 36, 0, 38); // ;
+        assertMapping(node, 0, 27, 0, 45, 0, 47); // ;
+        assertMapping(node, 0, 32, 0, 50, 0, 51); // )
+    }
+
+    @Test
+    public void testVisitFor_2()
+    {
+        IForLoopNode node = (IForLoopNode) getNode("for (;;) { break; }",
+                IForLoopNode.class);
+        asBlockWalker.visitForLoop(node);
+        //for (;;) {\n  break;\n}
+        assertMapping(node, 0, 0, 0, 0, 0, 5); // for (
+        assertMapping(node, 0, 5, 0, 5, 0, 6); // ;
+        assertMapping(node, 0, 6, 0, 6, 0, 7); // ;
+        assertMapping(node, 0, 7, 0, 7, 0, 9); // )
+    }
+
+    @Test
+    public void testVisitForIn_1()
+    {
+        IForLoopNode node = (IForLoopNode) getNode(
+                "for (var i:int in obj) { break; }", IForLoopNode.class);
+        asBlockWalker.visitForLoop(node);
+        //for (var /** @type {number} */ i in obj) {\n  break;\n}
+        assertMapping(node, 0, 0, 0, 0, 0, 5);    // for (
+        assertMapping(node, 0, 14, 0, 32, 0, 36); // in
+        assertMapping(node, 0, 21, 0, 39, 0, 41); // )
+    }
+
+    @Test
+    public void testVisitForIn_1a()
+    {
+        IForLoopNode node = (IForLoopNode) getNode(
+                "for (var i:int in obj)  break; ", IForLoopNode.class);
+        asBlockWalker.visitForLoop(node);
+        //for (var /** @type {number} */ i in obj)\n  break;
+        assertMapping(node, 0, 0, 0, 0, 0, 5);    // for (
+        assertMapping(node, 0, 14, 0, 32, 0, 36); // in
+        assertMapping(node, 0, 21, 0, 39, 0, 40); // )
+    }
+
     protected IBackend createBackend()
     {
         return new FlexJSBackend();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
index 589cbaf..65a8e63 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
@@ -30,8 +30,9 @@ import org.apache.flex.compiler.common.ISourceLocation;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitter;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
-import org.apache.flex.compiler.internal.codegen.js.jx.DoWhileEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.DoWhileLoopEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.DynamicAccessEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.ForLoopEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.FunctionCallArgumentsEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.IfEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.IterationFlowEmitter;
@@ -45,13 +46,14 @@ import org.apache.flex.compiler.internal.codegen.js.jx.ReturnEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.SourceMapDirectiveEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.TernaryOperatorEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.UnaryOperatorEmitter;
-import org.apache.flex.compiler.internal.codegen.js.jx.WhileEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.WhileLoopEmitter;
 import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
 import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IContainerNode;
 import org.apache.flex.compiler.tree.as.IDefinitionNode;
 import org.apache.flex.compiler.tree.as.IDynamicAccessNode;
+import org.apache.flex.compiler.tree.as.IForLoopNode;
 import org.apache.flex.compiler.tree.as.IFunctionNode;
 import org.apache.flex.compiler.tree.as.IFunctionObjectNode;
 import org.apache.flex.compiler.tree.as.IIfNode;
@@ -89,8 +91,9 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     public TernaryOperatorEmitter ternaryOperatorEmitter;
     public MemberKeywordEmitter memberKeywordEmitter;
     public IfEmitter ifEmitter;
-    public WhileEmitter whileEmitter;
-    public DoWhileEmitter doWhileEmitter;
+    public WhileLoopEmitter whileLoopEmitter;
+    public DoWhileLoopEmitter doWhileLoopEmitter;
+    public ForLoopEmitter forLoopEmitter;
     public IterationFlowEmitter interationFlowEmitter;
     public SourceMapDirectiveEmitter sourceMapDirectiveEmitter;
     
@@ -130,8 +133,9 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
         ternaryOperatorEmitter = new TernaryOperatorEmitter(this);
         memberKeywordEmitter = new MemberKeywordEmitter(this);
         ifEmitter = new IfEmitter(this);
-        whileEmitter = new WhileEmitter(this);
-        doWhileEmitter = new DoWhileEmitter(this);
+        whileLoopEmitter = new WhileLoopEmitter(this);
+        doWhileLoopEmitter = new DoWhileLoopEmitter(this);
+        forLoopEmitter = new ForLoopEmitter(this);
         interationFlowEmitter = new IterationFlowEmitter(this);
         sourceMapDirectiveEmitter = new SourceMapDirectiveEmitter(this);
     }
@@ -261,13 +265,19 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     @Override
     public void emitWhileLoop(IWhileLoopNode node)
     {
-        whileEmitter.emit(node);
+        whileLoopEmitter.emit(node);
     }
 
     @Override
     public void emitDoLoop(IWhileLoopNode node)
     {
-        doWhileEmitter.emit(node);
+        doWhileLoopEmitter.emit(node);
+    }
+
+    @Override
+    public void emitForLoop(IForLoopNode node)
+    {
+        forLoopEmitter.emit(node);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileEmitter.java
deleted file mode 100644
index 4dfafac..0000000
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileEmitter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-package org.apache.flex.compiler.internal.codegen.js.jx;
-
-import org.apache.flex.compiler.codegen.ISubEmitter;
-import org.apache.flex.compiler.codegen.js.IJSEmitter;
-import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
-import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
-import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
-import org.apache.flex.compiler.tree.as.IASNode;
-import org.apache.flex.compiler.tree.as.IContainerNode;
-import org.apache.flex.compiler.tree.as.IWhileLoopNode;
-
-public class DoWhileEmitter extends JSSubEmitter implements
-        ISubEmitter<IWhileLoopNode>
-{
-    public DoWhileEmitter(IJSEmitter emitter)
-    {
-        super(emitter);
-    }
-
-    @Override
-    public void emit(IWhileLoopNode node)
-    {
-        IContainerNode cnode = (IContainerNode) node.getChild(0);
-
-        startMapping(node);
-        write(ASEmitterTokens.DO);
-        if (!EmitterUtils.isImplicit(cnode))
-            write(ASEmitterTokens.SPACE);
-        endMapping(node);
-
-        IASNode statementContents = node.getStatementContentsNode();
-        getWalker().walk(statementContents);
-
-        IASNode conditionalExpressionNode = node.getConditionalExpressionNode();
-        startMapping(node, statementContents);
-        if (!EmitterUtils.isImplicit(cnode))
-            write(ASEmitterTokens.SPACE);
-        else
-            writeNewline(); // TODO (mschmalle) there is something wrong here, block should NL
-        write(ASEmitterTokens.WHILE);
-        write(ASEmitterTokens.SPACE);
-        write(ASEmitterTokens.PAREN_OPEN);
-        endMapping(node);
-
-        getWalker().walk(conditionalExpressionNode);
-
-        startMapping(node, conditionalExpressionNode);
-        write(ASEmitterTokens.PAREN_CLOSE);
-        write(ASEmitterTokens.SEMICOLON);
-        endMapping(node);
-    }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileLoopEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileLoopEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileLoopEmitter.java
new file mode 100644
index 0000000..e087bcd
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/DoWhileLoopEmitter.java
@@ -0,0 +1,71 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
+import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IContainerNode;
+import org.apache.flex.compiler.tree.as.IWhileLoopNode;
+
+public class DoWhileLoopEmitter extends JSSubEmitter implements
+        ISubEmitter<IWhileLoopNode>
+{
+    public DoWhileLoopEmitter(IJSEmitter emitter)
+    {
+        super(emitter);
+    }
+
+    @Override
+    public void emit(IWhileLoopNode node)
+    {
+        IContainerNode cnode = (IContainerNode) node.getChild(0);
+
+        startMapping(node);
+        write(ASEmitterTokens.DO);
+        if (!EmitterUtils.isImplicit(cnode))
+            write(ASEmitterTokens.SPACE);
+        endMapping(node);
+
+        IASNode statementContents = node.getStatementContentsNode();
+        getWalker().walk(statementContents);
+
+        IASNode conditionalExpressionNode = node.getConditionalExpressionNode();
+        startMapping(node, statementContents);
+        if (!EmitterUtils.isImplicit(cnode))
+            write(ASEmitterTokens.SPACE);
+        else
+            writeNewline(); // TODO (mschmalle) there is something wrong here, block should NL
+        write(ASEmitterTokens.WHILE);
+        write(ASEmitterTokens.SPACE);
+        write(ASEmitterTokens.PAREN_OPEN);
+        endMapping(node);
+
+        getWalker().walk(conditionalExpressionNode);
+
+        startMapping(node, conditionalExpressionNode);
+        write(ASEmitterTokens.PAREN_CLOSE);
+        write(ASEmitterTokens.SEMICOLON);
+        endMapping(node);
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForLoopEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForLoopEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForLoopEmitter.java
new file mode 100644
index 0000000..567b029
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForLoopEmitter.java
@@ -0,0 +1,99 @@
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
+import org.apache.flex.compiler.tree.ASTNodeID;
+import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IContainerNode;
+import org.apache.flex.compiler.tree.as.IForLoopNode;
+
+public class ForLoopEmitter extends JSSubEmitter implements
+        ISubEmitter<IForLoopNode>
+{
+    public ForLoopEmitter(IJSEmitter emitter)
+    {
+        super(emitter);
+    }
+
+    @Override
+    public void emit(IForLoopNode node)
+    {
+        IContainerNode xnode = (IContainerNode) node.getChild(1);
+
+        startMapping(node);
+        writeToken(ASEmitterTokens.FOR);
+        write(ASEmitterTokens.PAREN_OPEN);
+        endMapping(node);
+
+        IContainerNode cnode = node.getConditionalsContainerNode();
+        final IASNode node0 = cnode.getChild(0);
+        if (node0.getNodeID() == ASTNodeID.Op_InID)
+        {
+            //for(in)
+            getWalker().walk(cnode.getChild(0));
+        }
+        else //for(;;)
+        {
+            emitForStatements(cnode);
+        }
+
+        startMapping(node, cnode);
+        write(ASEmitterTokens.PAREN_CLOSE);
+        if (!EmitterUtils.isImplicit(xnode))
+            write(ASEmitterTokens.SPACE);
+        endMapping(node);
+
+        getWalker().walk(node.getStatementContentsNode());
+    }
+
+    protected void emitForStatements(IContainerNode node)
+    {
+        final IASNode node0 = node.getChild(0);
+        final IASNode node1 = node.getChild(1);
+        final IASNode node2 = node.getChild(2);
+
+        int column = node.getColumn();
+        // initializer
+        if (node0 != null)
+        {
+            getWalker().walk(node0);
+
+            if (node1.getNodeID() != ASTNodeID.NilID)
+            {
+                column += node0.getAbsoluteEnd() - node0.getAbsoluteStart();
+            }
+            startMapping(node, node.getLine(), column);
+            write(ASEmitterTokens.SEMICOLON);
+            column++;
+            if (node1.getNodeID() != ASTNodeID.NilID)
+            {
+                write(ASEmitterTokens.SPACE);
+                column++;
+            }
+            endMapping(node);
+        }
+        // condition or target
+        if (node1 != null)
+        {
+            getWalker().walk(node1);
+            
+            if (node1.getNodeID() != ASTNodeID.NilID)
+            {
+                column += node1.getAbsoluteEnd() - node1.getAbsoluteStart();
+            }
+            startMapping(node, node.getLine(), column);
+            write(ASEmitterTokens.SEMICOLON);
+            if (node2.getNodeID() != ASTNodeID.NilID)
+                write(ASEmitterTokens.SPACE);
+            endMapping(node);
+        }
+        // iterator
+        if (node2 != null)
+        {
+            getWalker().walk(node2);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileEmitter.java
deleted file mode 100644
index 8ff0e84..0000000
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileEmitter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-package org.apache.flex.compiler.internal.codegen.js.jx;
-
-import org.apache.flex.compiler.codegen.ISubEmitter;
-import org.apache.flex.compiler.codegen.js.IJSEmitter;
-import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
-import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
-import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
-import org.apache.flex.compiler.tree.as.IASNode;
-import org.apache.flex.compiler.tree.as.IContainerNode;
-import org.apache.flex.compiler.tree.as.IWhileLoopNode;
-
-public class WhileEmitter extends JSSubEmitter implements
-        ISubEmitter<IWhileLoopNode>
-{
-    public WhileEmitter(IJSEmitter emitter)
-    {
-        super(emitter);
-    }
-
-    @Override
-    public void emit(IWhileLoopNode node)
-    {
-        IContainerNode cnode = (IContainerNode) node.getChild(1);
-
-        startMapping(node);
-        writeToken(ASEmitterTokens.WHILE);
-        write(ASEmitterTokens.PAREN_OPEN);
-        endMapping(node);
-
-        IASNode conditionalExpression = node.getConditionalExpressionNode();
-        getWalker().walk(conditionalExpression);
-
-        IASNode statementContentsNode = node.getStatementContentsNode();
-        startMapping(node, conditionalExpression);
-        write(ASEmitterTokens.PAREN_CLOSE);
-        if (!EmitterUtils.isImplicit(cnode))
-            write(ASEmitterTokens.SPACE);
-        endMapping(node);
-
-        getWalker().walk(statementContentsNode);
-    }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c759afdf/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileLoopEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileLoopEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileLoopEmitter.java
new file mode 100644
index 0000000..54f663d
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/WhileLoopEmitter.java
@@ -0,0 +1,61 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
+import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IContainerNode;
+import org.apache.flex.compiler.tree.as.IWhileLoopNode;
+
+public class WhileLoopEmitter extends JSSubEmitter implements
+        ISubEmitter<IWhileLoopNode>
+{
+    public WhileLoopEmitter(IJSEmitter emitter)
+    {
+        super(emitter);
+    }
+
+    @Override
+    public void emit(IWhileLoopNode node)
+    {
+        IContainerNode cnode = (IContainerNode) node.getChild(1);
+
+        startMapping(node);
+        writeToken(ASEmitterTokens.WHILE);
+        write(ASEmitterTokens.PAREN_OPEN);
+        endMapping(node);
+
+        IASNode conditionalExpression = node.getConditionalExpressionNode();
+        getWalker().walk(conditionalExpression);
+
+        IASNode statementContentsNode = node.getStatementContentsNode();
+        startMapping(node, conditionalExpression);
+        write(ASEmitterTokens.PAREN_CLOSE);
+        if (!EmitterUtils.isImplicit(cnode))
+            write(ASEmitterTokens.SPACE);
+        endMapping(node);
+
+        getWalker().walk(statementContentsNode);
+    }
+}