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 2015/05/31 18:01:16 UTC
[1/2] git commit: [flex-falcon] [refs/heads/develop] - Removed
commented out methods from JSFlexJSEmitter.java and placed them in Notes text
file (not sure if the might still be used).
Repository: flex-falcon
Updated Branches:
refs/heads/develop dbad22c99 -> ec0a79236
Removed commented out methods from JSFlexJSEmitter.java and placed them in Notes text file
(not sure if the might still be used).
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f51e2348
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f51e2348
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f51e2348
Branch: refs/heads/develop
Commit: f51e23484ec78cca4935d0f5cab53ae309fa7abc
Parents: dbad22c
Author: Michael Schmalle <ms...@apache.org>
Authored: Sun May 31 11:39:50 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Sun May 31 11:39:50 2015 -0400
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSEmitter.java | 349 +-----------------
.../codegen/js/flexjs/Notes_JSFlexJSEmitter.txt | 367 +++++++++++++++++++
2 files changed, 368 insertions(+), 348 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f51e2348/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 7aa4e2a..5562e31 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -342,7 +342,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
@Override
public void emitGetAccessor(IGetterNode node)
{
- classEmitter.getGetSetEmitter().emitGet(node);
+ classEmitter.getGetSetEmitter().emitGet(node);
}
@Override
@@ -545,92 +545,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
- /*
- @Override
- public void emitForEachLoop(IForLoopNode node)
- {
- IContainerNode xnode = (IContainerNode) node.getChild(1);
- IBinaryOperatorNode bnode = (IBinaryOperatorNode) node
- .getConditionalsContainerNode().getChild(0);
- IASNode childNode = bnode.getChild(0);
-
- write(ASEmitterTokens.TRY);
- write(ASEmitterTokens.BLOCK_OPEN);
- writeNewline();
-
- write(JSGoogEmitterTokens.GOOG_ARRAY_FOREACH);
- write(ASEmitterTokens.PAREN_OPEN);
- getWalker().walk(bnode.getChild(1));
- writeToken(ASEmitterTokens.COMMA);
- writeToken(ASEmitterTokens.FUNCTION);
- write(ASEmitterTokens.PAREN_OPEN);
- if (childNode instanceof IVariableExpressionNode)
- write(((IVariableNode) childNode.getChild(0)).getName());
- else
- write(((IIdentifierNode) childNode).getName());
- writeToken(ASEmitterTokens.PAREN_CLOSE);
- if (isImplicit(xnode))
- write(ASEmitterTokens.BLOCK_OPEN);
- getWalker().walk(node.getStatementContentsNode());
- if (isImplicit(xnode))
- {
- writeNewline();
- write(ASEmitterTokens.BLOCK_CLOSE);
- }
- write(ASEmitterTokens.PAREN_CLOSE);
- writeNewline();
- write(ASEmitterTokens.BLOCK_CLOSE);
- writeNewline();
- write(ASEmitterTokens.CATCH);
- write(ASEmitterTokens.PAREN_OPEN);
- write("foreachbreakerror");
- write(ASEmitterTokens.PAREN_CLOSE);
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.BLOCK_OPEN);
- write(ASEmitterTokens.BLOCK_CLOSE);
- writeNewline();
-
- }
-
- @Override
- public void emitIterationFlow(IIterationFlowNode node)
- {
- // look for break in foreach and throw error instead
- if (node.getKind() == IIterationFlowNode.IterationFlowKind.BREAK)
- {
- IASNode pNode = node.getParent();
- while (pNode != null)
- {
- ASTNodeID id = pNode.getNodeID();
- if (id == ASTNodeID.ForEachLoopID)
- {
- write(ASEmitterTokens.THROW);
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.NEW);
- write(ASEmitterTokens.SPACE);
- write(JSGoogEmitterTokens.ERROR);
- write(ASEmitterTokens.PAREN_OPEN);
- write(ASEmitterTokens.PAREN_CLOSE);
- write(ASEmitterTokens.SEMICOLON);
- return;
- }
- else if (id == ASTNodeID.ForLoopID ||
- id == ASTNodeID.DoWhileLoopID ||
- id == ASTNodeID.WhileLoopID)
- break;
- pNode = pNode.getParent();
- }
- }
- write(node.getKind().toString().toLowerCase());
- IIdentifierNode lnode = node.getLabelNode();
- if (lnode != null)
- {
- write(ASEmitterTokens.SPACE);
- getWalker().walk(lnode);
- }
- }
- */
-
@Override
public void emitTypedExpression(ITypedExpressionNode node)
{
@@ -685,7 +599,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
write(ASEmitterTokens.SINGLE_QUOTE);
}
-
@Override
public String formatQualifiedName(String name)
{
@@ -694,264 +607,4 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
name = name.replaceAll("\\.", "_");
return name;
}
-
-}
-
-/*
-@Override
-public void emitInterface(IInterfaceNode node)
-{
- ICompilerProject project = getWalker().getProject();
-
- getDoc().emitInterfaceDoc(node, project);
-
- String qname = node.getQualifiedName();
- if (qname != null && !qname.equals(""))
- {
- write(formatQualifiedName(qname));
- write(ASEmitterTokens.SPACE);
- writeToken(ASEmitterTokens.EQUAL);
- write(ASEmitterTokens.FUNCTION);
- write(ASEmitterTokens.PAREN_OPEN);
- write(ASEmitterTokens.PAREN_CLOSE);
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.BLOCK_OPEN);
- writeNewline();
- write(ASEmitterTokens.BLOCK_CLOSE);
- write(ASEmitterTokens.SEMICOLON);
- }
-
-
- final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
- for (IDefinitionNode mnode : members)
- {
- boolean isAccessor = mnode.getNodeID() == ASTNodeID.GetterID
- || mnode.getNodeID() == ASTNodeID.SetterID;
-
- writeNewline();
- writeNewline();
- writeNewline();
-
- getDoc().emitInterfaceMemberDoc((IFunctionNode) mnode, project);
-
- write(formatQualifiedName(qname));
- write(ASEmitterTokens.MEMBER_ACCESS);
- write(JSEmitterTokens.PROTOTYPE);
- write(ASEmitterTokens.MEMBER_ACCESS);
- if (isAccessor)
- {
- writeGetSetPrefix(mnode.getNodeID() == ASTNodeID.GetterID);
- }
- write(mnode.getQualifiedName());
- write(ASEmitterTokens.SPACE);
- writeToken(ASEmitterTokens.EQUAL);
- write(ASEmitterTokens.FUNCTION);
- emitParameters(((IFunctionNode) mnode).getParameterNodes());
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.BLOCK_OPEN);
- write(ASEmitterTokens.BLOCK_CLOSE);
- write(ASEmitterTokens.SEMICOLON);
- }
-}
-*/
-
-/*
-@Override
-public void emitMethod(IFunctionNode node)
-{
- FunctionNode fn = (FunctionNode) node;
- fn.parseFunctionBody(getProblems());
-
- ICompilerProject project = getWalker().getProject();
-
- getDoc().emitMethodDoc(node, project);
-
- boolean isConstructor = node.isConstructor();
-
- String qname = getTypeDefinition(node).getQualifiedName();
- if (qname != null && !qname.equals(""))
- {
- write(formatQualifiedName(qname));
- if (!isConstructor)
- {
- write(ASEmitterTokens.MEMBER_ACCESS);
- if (!fn.hasModifier(ASModifier.STATIC))
- {
- write(JSEmitterTokens.PROTOTYPE);
- write(ASEmitterTokens.MEMBER_ACCESS);
- }
- }
- }
-
- if (!isConstructor)
- emitMemberName(node);
-
- write(ASEmitterTokens.SPACE);
- writeToken(ASEmitterTokens.EQUAL);
- write(ASEmitterTokens.FUNCTION);
-
- emitParameters(node.getParameterNodes());
-
- boolean hasSuperClass = hasSuperClass(node);
-
- if (isConstructor && node.getScopedNode().getChildCount() == 0)
- {
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.BLOCK_OPEN);
- if (hasSuperClass)
- emitSuperCall(node, CONSTRUCTOR_EMPTY);
- writeNewline();
- write(ASEmitterTokens.BLOCK_CLOSE);
- }
-
- if (!isConstructor || node.getScopedNode().getChildCount() > 0)
- emitMethodScope(node.getScopedNode());
-
- if (isConstructor && hasSuperClass)
- {
- writeNewline(ASEmitterTokens.SEMICOLON);
- write(JSGoogEmitterTokens.GOOG_INHERITS);
- write(ASEmitterTokens.PAREN_OPEN);
- write(formatQualifiedName(qname));
- writeToken(ASEmitterTokens.COMMA);
- String sname = getSuperClassDefinition(node, project)
- .getQualifiedName();
- write(formatQualifiedName(sname));
- write(ASEmitterTokens.PAREN_CLOSE);
- }
-}
-*/
-
-/*
-@Override
-protected void emitDefaultParameterCodeBlock(IFunctionNode node)
-{
- IParameterNode[] pnodes = node.getParameterNodes();
- if (pnodes.length == 0)
- return;
-
- Map<Integer, IParameterNode> defaults = getDefaults(pnodes);
-
- if (defaults != null)
- {
- final StringBuilder code = new StringBuilder();
-
- if (!hasBody(node))
- {
- indentPush();
- write(JSFlexJSEmitterTokens.INDENT);
- }
-
- List<IParameterNode> parameters = new ArrayList<IParameterNode>(
- defaults.values());
-
- for (int i = 0, n = parameters.size(); i < n; 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(ASEmitterTokens.SPACE.getToken());
- code.append(ASEmitterTokens.EQUAL.getToken());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(ASEmitterTokens.TYPEOF.getToken());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(pnode.getName());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(ASEmitterTokens.STRICT_NOT_EQUAL.getToken());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
- code.append(ASEmitterTokens.UNDEFINED.getToken());
- code.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(ASEmitterTokens.TERNARY.getToken());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(pnode.getName());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(ASEmitterTokens.COLON.getToken());
- code.append(ASEmitterTokens.SPACE.getToken());
- code.append(pnode.getDefaultValue());
- code.append(ASEmitterTokens.SEMICOLON.getToken());
-
- write(code.toString());
-
- if (i == n - 1 && !hasBody(node))
- indentPop();
-
- writeNewline();
- }
- }
- }
-}
-*/
-
-/*
-private void writeGetSetPrefix(boolean isGet)
-{
- if (isGet)
- write(ASEmitterTokens.GET);
- else
- write(ASEmitterTokens.SET);
- write("_");
-}
-*/
-
-/*
-@Override
-public void emitUnaryOperator(IUnaryOperatorNode node)
-{
- if (node.getNodeID() == ASTNodeID.Op_PreIncrID
- || node.getNodeID() == ASTNodeID.Op_PreDecrID
- || node.getNodeID() == ASTNodeID.Op_PostIncrID
- || node.getNodeID() == ASTNodeID.Op_PostDecrID)
- {
- IExpressionNode opNode = node.getOperandNode();
- String getString = stringifyNode(opNode);
- int index = getString.lastIndexOf("get_");
- if (index != -1)
- {
- write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
- write(ASEmitterTokens.MEMBER_ACCESS);
- if (node.getNodeID() == ASTNodeID.Op_PreIncrID)
- write(JSFlexJSEmitterTokens.PREINCREMENT);
- else if (node.getNodeID() == ASTNodeID.Op_PostIncrID)
- write(JSFlexJSEmitterTokens.POSTINCREMENT);
- else if (node.getNodeID() == ASTNodeID.Op_PreDecrID)
- write(JSFlexJSEmitterTokens.PREDECREMENT);
- else
- write(JSFlexJSEmitterTokens.POSTDECREMENT);
- write(ASEmitterTokens.PAREN_OPEN);
- String obj = getString.substring(0, index - 1);
- write(obj);
- write(ASEmitterTokens.COMMA);
- String prop = getString.substring(index + 4);
- int endIndex = prop.indexOf(ASEmitterTokens.PAREN_OPEN.getToken());
- prop = prop.substring(0, endIndex);
- write(ASEmitterTokens.DOUBLE_QUOTE);
- write(prop);
- write(ASEmitterTokens.DOUBLE_QUOTE);
- write(ASEmitterTokens.PAREN_CLOSE);
- return;
- }
- else
- {
- IASNode parentNode = node.getParent();
- if (parentNode.getNodeID() == ASTNodeID.MemberAccessExpressionID &&
- ((MemberAccessExpressionNode)parentNode).getLeftOperandNode() == node)
- {
- // GCC wanted parens around foo++.toString(). As in (foo++).toString();
- write(ASEmitterTokens.PAREN_OPEN);
- super.emitUnaryOperator(node);
- write(ASEmitterTokens.PAREN_CLOSE);
- return;
- }
- }
-
- }
- super.emitUnaryOperator(node);
}
-*/
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f51e2348/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/Notes_JSFlexJSEmitter.txt
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/Notes_JSFlexJSEmitter.txt b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/Notes_JSFlexJSEmitter.txt
new file mode 100644
index 0000000..97e2ffa
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/Notes_JSFlexJSEmitter.txt
@@ -0,0 +1,367 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+//-------------------------------------
+// Removed from JSFlexJSEmitter.java 05-31-2015
+//-------------------------------------
+
+/*
+ @Override
+ public void emitForEachLoop(IForLoopNode node)
+ {
+ IContainerNode xnode = (IContainerNode) node.getChild(1);
+ IBinaryOperatorNode bnode = (IBinaryOperatorNode) node
+ .getConditionalsContainerNode().getChild(0);
+ IASNode childNode = bnode.getChild(0);
+
+ write(ASEmitterTokens.TRY);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ writeNewline();
+
+ write(JSGoogEmitterTokens.GOOG_ARRAY_FOREACH);
+ write(ASEmitterTokens.PAREN_OPEN);
+ getWalker().walk(bnode.getChild(1));
+ writeToken(ASEmitterTokens.COMMA);
+ writeToken(ASEmitterTokens.FUNCTION);
+ write(ASEmitterTokens.PAREN_OPEN);
+ if (childNode instanceof IVariableExpressionNode)
+ write(((IVariableNode) childNode.getChild(0)).getName());
+ else
+ write(((IIdentifierNode) childNode).getName());
+ writeToken(ASEmitterTokens.PAREN_CLOSE);
+ if (isImplicit(xnode))
+ write(ASEmitterTokens.BLOCK_OPEN);
+ getWalker().walk(node.getStatementContentsNode());
+ if (isImplicit(xnode))
+ {
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ }
+ write(ASEmitterTokens.PAREN_CLOSE);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ writeNewline();
+ write(ASEmitterTokens.CATCH);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write("foreachbreakerror");
+ write(ASEmitterTokens.PAREN_CLOSE);
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ writeNewline();
+
+ }
+
+ @Override
+ public void emitIterationFlow(IIterationFlowNode node)
+ {
+ // look for break in foreach and throw error instead
+ if (node.getKind() == IIterationFlowNode.IterationFlowKind.BREAK)
+ {
+ IASNode pNode = node.getParent();
+ while (pNode != null)
+ {
+ ASTNodeID id = pNode.getNodeID();
+ if (id == ASTNodeID.ForEachLoopID)
+ {
+ write(ASEmitterTokens.THROW);
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.NEW);
+ write(ASEmitterTokens.SPACE);
+ write(JSGoogEmitterTokens.ERROR);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(ASEmitterTokens.PAREN_CLOSE);
+ write(ASEmitterTokens.SEMICOLON);
+ return;
+ }
+ else if (id == ASTNodeID.ForLoopID ||
+ id == ASTNodeID.DoWhileLoopID ||
+ id == ASTNodeID.WhileLoopID)
+ break;
+ pNode = pNode.getParent();
+ }
+ }
+ write(node.getKind().toString().toLowerCase());
+ IIdentifierNode lnode = node.getLabelNode();
+ if (lnode != null)
+ {
+ write(ASEmitterTokens.SPACE);
+ getWalker().walk(lnode);
+ }
+ }
+*/
+
+/*
+@Override
+public void emitInterface(IInterfaceNode node)
+{
+ ICompilerProject project = getWalker().getProject();
+
+ getDoc().emitInterfaceDoc(node, project);
+
+ String qname = node.getQualifiedName();
+ if (qname != null && !qname.equals(""))
+ {
+ write(formatQualifiedName(qname));
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.FUNCTION);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(ASEmitterTokens.PAREN_CLOSE);
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ write(ASEmitterTokens.SEMICOLON);
+ }
+
+
+ final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
+ for (IDefinitionNode mnode : members)
+ {
+ boolean isAccessor = mnode.getNodeID() == ASTNodeID.GetterID
+ || mnode.getNodeID() == ASTNodeID.SetterID;
+
+ writeNewline();
+ writeNewline();
+ writeNewline();
+
+ getDoc().emitInterfaceMemberDoc((IFunctionNode) mnode, project);
+
+ write(formatQualifiedName(qname));
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ write(JSEmitterTokens.PROTOTYPE);
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ if (isAccessor)
+ {
+ writeGetSetPrefix(mnode.getNodeID() == ASTNodeID.GetterID);
+ }
+ write(mnode.getQualifiedName());
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.FUNCTION);
+ emitParameters(((IFunctionNode) mnode).getParameterNodes());
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ write(ASEmitterTokens.SEMICOLON);
+ }
+}
+*/
+
+/*
+@Override
+public void emitMethod(IFunctionNode node)
+{
+ FunctionNode fn = (FunctionNode) node;
+ fn.parseFunctionBody(getProblems());
+
+ ICompilerProject project = getWalker().getProject();
+
+ getDoc().emitMethodDoc(node, project);
+
+ boolean isConstructor = node.isConstructor();
+
+ String qname = getTypeDefinition(node).getQualifiedName();
+ if (qname != null && !qname.equals(""))
+ {
+ write(formatQualifiedName(qname));
+ if (!isConstructor)
+ {
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ if (!fn.hasModifier(ASModifier.STATIC))
+ {
+ write(JSEmitterTokens.PROTOTYPE);
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ }
+ }
+ }
+
+ if (!isConstructor)
+ emitMemberName(node);
+
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.FUNCTION);
+
+ emitParameters(node.getParameterNodes());
+
+ boolean hasSuperClass = hasSuperClass(node);
+
+ if (isConstructor && node.getScopedNode().getChildCount() == 0)
+ {
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ if (hasSuperClass)
+ emitSuperCall(node, CONSTRUCTOR_EMPTY);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ }
+
+ if (!isConstructor || node.getScopedNode().getChildCount() > 0)
+ emitMethodScope(node.getScopedNode());
+
+ if (isConstructor && hasSuperClass)
+ {
+ writeNewline(ASEmitterTokens.SEMICOLON);
+ write(JSGoogEmitterTokens.GOOG_INHERITS);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(formatQualifiedName(qname));
+ writeToken(ASEmitterTokens.COMMA);
+ String sname = getSuperClassDefinition(node, project)
+ .getQualifiedName();
+ write(formatQualifiedName(sname));
+ write(ASEmitterTokens.PAREN_CLOSE);
+ }
+}
+*/
+
+/*
+@Override
+protected void emitDefaultParameterCodeBlock(IFunctionNode node)
+{
+ IParameterNode[] pnodes = node.getParameterNodes();
+ if (pnodes.length == 0)
+ return;
+
+ Map<Integer, IParameterNode> defaults = getDefaults(pnodes);
+
+ if (defaults != null)
+ {
+ final StringBuilder code = new StringBuilder();
+
+ if (!hasBody(node))
+ {
+ indentPush();
+ write(JSFlexJSEmitterTokens.INDENT);
+ }
+
+ List<IParameterNode> parameters = new ArrayList<IParameterNode>(
+ defaults.values());
+
+ for (int i = 0, n = parameters.size(); i < n; 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(ASEmitterTokens.SPACE.getToken());
+ code.append(ASEmitterTokens.EQUAL.getToken());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(ASEmitterTokens.TYPEOF.getToken());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(pnode.getName());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(ASEmitterTokens.STRICT_NOT_EQUAL.getToken());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ code.append(ASEmitterTokens.UNDEFINED.getToken());
+ code.append(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(ASEmitterTokens.TERNARY.getToken());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(pnode.getName());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(ASEmitterTokens.COLON.getToken());
+ code.append(ASEmitterTokens.SPACE.getToken());
+ code.append(pnode.getDefaultValue());
+ code.append(ASEmitterTokens.SEMICOLON.getToken());
+
+ write(code.toString());
+
+ if (i == n - 1 && !hasBody(node))
+ indentPop();
+
+ writeNewline();
+ }
+ }
+ }
+}
+*/
+
+/*
+private void writeGetSetPrefix(boolean isGet)
+{
+ if (isGet)
+ write(ASEmitterTokens.GET);
+ else
+ write(ASEmitterTokens.SET);
+ write("_");
+}
+*/
+
+/*
+@Override
+public void emitUnaryOperator(IUnaryOperatorNode node)
+{
+ if (node.getNodeID() == ASTNodeID.Op_PreIncrID
+ || node.getNodeID() == ASTNodeID.Op_PreDecrID
+ || node.getNodeID() == ASTNodeID.Op_PostIncrID
+ || node.getNodeID() == ASTNodeID.Op_PostDecrID)
+ {
+ IExpressionNode opNode = node.getOperandNode();
+ String getString = stringifyNode(opNode);
+ int index = getString.lastIndexOf("get_");
+ if (index != -1)
+ {
+ write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ if (node.getNodeID() == ASTNodeID.Op_PreIncrID)
+ write(JSFlexJSEmitterTokens.PREINCREMENT);
+ else if (node.getNodeID() == ASTNodeID.Op_PostIncrID)
+ write(JSFlexJSEmitterTokens.POSTINCREMENT);
+ else if (node.getNodeID() == ASTNodeID.Op_PreDecrID)
+ write(JSFlexJSEmitterTokens.PREDECREMENT);
+ else
+ write(JSFlexJSEmitterTokens.POSTDECREMENT);
+ write(ASEmitterTokens.PAREN_OPEN);
+ String obj = getString.substring(0, index - 1);
+ write(obj);
+ write(ASEmitterTokens.COMMA);
+ String prop = getString.substring(index + 4);
+ int endIndex = prop.indexOf(ASEmitterTokens.PAREN_OPEN.getToken());
+ prop = prop.substring(0, endIndex);
+ write(ASEmitterTokens.DOUBLE_QUOTE);
+ write(prop);
+ write(ASEmitterTokens.DOUBLE_QUOTE);
+ write(ASEmitterTokens.PAREN_CLOSE);
+ return;
+ }
+ else
+ {
+ IASNode parentNode = node.getParent();
+ if (parentNode.getNodeID() == ASTNodeID.MemberAccessExpressionID &&
+ ((MemberAccessExpressionNode)parentNode).getLeftOperandNode() == node)
+ {
+ // GCC wanted parens around foo++.toString(). As in (foo++).toString();
+ write(ASEmitterTokens.PAREN_OPEN);
+ super.emitUnaryOperator(node);
+ write(ASEmitterTokens.PAREN_CLOSE);
+ return;
+ }
+ }
+
+ }
+ super.emitUnaryOperator(node);
+}
+*/
\ No newline at end of file
[2/2] git commit: [flex-falcon] [refs/heads/develop] - - Moved
emitBindableVarDefineProperty() to Bindable emitter. - Refactored foreach
into emitter.
Posted by ms...@apache.org.
- Moved emitBindableVarDefineProperty() to Bindable emitter.
- Refactored foreach into emitter.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/ec0a7923
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/ec0a7923
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/ec0a7923
Branch: refs/heads/develop
Commit: ec0a792366d61ef6be6967745e96c13b662cd421
Parents: f51e234
Author: Michael Schmalle <ms...@apache.org>
Authored: Sun May 31 12:00:44 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Sun May 31 12:00:44 2015 -0400
----------------------------------------------------------------------
.../internal/codegen/js/JSSessionModel.java | 12 +++
.../codegen/js/flexjs/JSFlexJSEmitter.java | 105 +------------------
.../internal/codegen/js/jx/BindableEmitter.java | 58 +++++++++-
.../internal/codegen/js/jx/ForEachEmitter.java | 88 ++++++++++++++++
4 files changed, 162 insertions(+), 101 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ec0a7923/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
index ba8df11..48079fa 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
@@ -50,6 +50,8 @@ public class JSSessionModel
private ArrayList<String> bindableVars = new ArrayList<String>();
+ private int foreachLoopCount = 0;
+
public IClassDefinition getCurrentClass()
{
return currentClass;
@@ -80,4 +82,14 @@ public class JSSessionModel
return bindableVars;
}
+ public final void incForeachLoopCount()
+ {
+ foreachLoopCount++;
+ }
+
+ public String getCurrentForeachName()
+ {
+ return "foreachiter" + Integer.toString(foreachLoopCount);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ec0a7923/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 5562e31..f86ca5a 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -26,7 +26,6 @@ import org.apache.flex.compiler.codegen.IDocEmitter;
import org.apache.flex.compiler.codegen.js.flexjs.IJSFlexJSEmitter;
import org.apache.flex.compiler.common.ASModifier;
import org.apache.flex.compiler.common.IMetaInfo;
-import org.apache.flex.compiler.definitions.IClassDefinition;
import org.apache.flex.compiler.definitions.IDefinition;
import org.apache.flex.compiler.definitions.IFunctionDefinition;
import org.apache.flex.compiler.definitions.IPackageDefinition;
@@ -38,6 +37,7 @@ import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.jx.BinaryOperatorEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.ClassEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.FieldEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.ForEachEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.FunctionCallEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.IdentifierEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.MemberAccessEmitter;
@@ -65,11 +65,10 @@ import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
import org.apache.flex.compiler.tree.as.IParameterNode;
import org.apache.flex.compiler.tree.as.ISetterNode;
import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
-import org.apache.flex.compiler.tree.as.IVariableExpressionNode;
import org.apache.flex.compiler.tree.as.IVariableNode;
/**
- * Concrete implementation of the 'goog' JavaScript production.
+ * Concrete implementation of the 'FlexJS' JavaScript production.
*
* @author Michael Schmalle
* @author Erik de Bruin
@@ -77,8 +76,6 @@ import org.apache.flex.compiler.tree.as.IVariableNode;
public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
{
- private int foreachLoopCounter = 0;
-
private JSFlexJSDocEmitter docEmitter = null;
private PackageHeaderEmitter packageHeaderEmitter;
@@ -88,6 +85,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
private FieldEmitter fieldEmitter;
private FunctionCallEmitter functionCallEmitter;
private SuperCallEmitter superCallEmitter;
+ private ForEachEmitter forEachEmitter;
private MemberAccessEmitter memberAccessEmitter;
private BinaryOperatorEmitter binaryOperatorEmitter;
private IdentifierEmitter identifierEmitter;
@@ -116,6 +114,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
fieldEmitter = new FieldEmitter(this);
functionCallEmitter = new FunctionCallEmitter(this);
superCallEmitter = new SuperCallEmitter(this);
+ forEachEmitter = new ForEachEmitter(this);
memberAccessEmitter = new MemberAccessEmitter(this);
binaryOperatorEmitter = new BinaryOperatorEmitter(this);
identifierEmitter = new IdentifierEmitter(this);
@@ -154,58 +153,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
fieldEmitter.emit(node);
}
- public void emitBindableVarDefineProperty(String name, IClassDefinition cdef)
- {
- // 'PropName': {
- writeNewline("/** @expose */");
- writeNewline(name + ASEmitterTokens.COLON.getToken()
- + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.BLOCK_OPEN.getToken());
- indentPush();
- writeNewline("/** @this {"
- + formatQualifiedName(cdef.getQualifiedName()) + "} */");
- writeNewline(ASEmitterTokens.GET.getToken()
- + ASEmitterTokens.COLON.getToken()
- + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.FUNCTION.getToken()
- + ASEmitterTokens.PAREN_OPEN.getToken()
- + ASEmitterTokens.PAREN_CLOSE.getToken()
- + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.BLOCK_OPEN.getToken());
- writeNewline(ASEmitterTokens.RETURN.getToken()
- + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.THIS.getToken()
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + name + "_"
- + ASEmitterTokens.SEMICOLON.getToken());
- indentPop();
- writeNewline(ASEmitterTokens.BLOCK_CLOSE.getToken()
- + ASEmitterTokens.COMMA.getToken());
- writeNewline();
- writeNewline("/** @this {"
- + formatQualifiedName(cdef.getQualifiedName()) + "} */");
- writeNewline(ASEmitterTokens.SET.getToken()
- + ASEmitterTokens.COLON.getToken()
- + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.FUNCTION.getToken()
- + ASEmitterTokens.PAREN_OPEN.getToken() + "value"
- + ASEmitterTokens.PAREN_CLOSE.getToken()
- + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.BLOCK_OPEN.getToken());
- writeNewline("if (value != " + ASEmitterTokens.THIS.getToken()
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + name + "_) {");
- writeNewline(" var oldValue = " + ASEmitterTokens.THIS.getToken()
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + name + "_"
- + ASEmitterTokens.SEMICOLON.getToken());
- writeNewline(" " + ASEmitterTokens.THIS.getToken()
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + name
- + "_ = value;");
- writeNewline(" this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(");
- writeNewline(" this, \"" + name + "\", oldValue, value));");
- writeNewline("}");
- write(ASEmitterTokens.BLOCK_CLOSE.getToken());
- write(ASEmitterTokens.BLOCK_CLOSE.getToken());
- }
-
@Override
public void emitAccessors(IAccessorNode node)
{
@@ -500,49 +447,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
@Override
public void emitForEachLoop(IForLoopNode node)
{
- IBinaryOperatorNode bnode = (IBinaryOperatorNode) node
- .getConditionalsContainerNode().getChild(0);
- IASNode childNode = bnode.getChild(0);
-
- String iterName = "foreachiter"
- + new Integer(foreachLoopCounter).toString();
- foreachLoopCounter++;
-
- write(ASEmitterTokens.FOR);
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.PAREN_OPEN);
- write(ASEmitterTokens.VAR);
- write(ASEmitterTokens.SPACE);
- write(iterName);
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.IN);
- write(ASEmitterTokens.SPACE);
- getWalker().walk(bnode.getChild(1));
- writeToken(ASEmitterTokens.PAREN_CLOSE);
- writeNewline();
- write(ASEmitterTokens.BLOCK_OPEN);
- writeNewline();
- if (childNode instanceof IVariableExpressionNode)
- {
- write(ASEmitterTokens.VAR);
- write(ASEmitterTokens.SPACE);
- write(((IVariableNode) childNode.getChild(0)).getName());
- }
- else
- write(((IIdentifierNode) childNode).getName());
- write(ASEmitterTokens.SPACE);
- write(ASEmitterTokens.EQUAL);
- write(ASEmitterTokens.SPACE);
- getWalker().walk(bnode.getChild(1));
- write(ASEmitterTokens.SQUARE_OPEN);
- write(iterName);
- write(ASEmitterTokens.SQUARE_CLOSE);
- write(ASEmitterTokens.SEMICOLON);
- writeNewline();
- getWalker().walk(node.getStatementContentsNode());
- write(ASEmitterTokens.BLOCK_CLOSE);
- writeNewline();
-
+ forEachEmitter.emit(node);
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ec0a7923/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
index 310bf6b..0ec3fd2 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BindableEmitter.java
@@ -66,11 +66,67 @@ public class BindableEmitter extends JSSubEmitter implements
else
write(ASEmitterTokens.COMMA);
- fjs.emitBindableVarDefineProperty(varName, definition);
+ emitBindableVarDefineProperty(varName, definition);
}
writeNewline(ASEmitterTokens.BLOCK_CLOSE);
write(ASEmitterTokens.PAREN_CLOSE);
write(ASEmitterTokens.SEMICOLON);
}
}
+
+ private void emitBindableVarDefineProperty(String name,
+ IClassDefinition cdef)
+ {
+ // TODO (mschmalle) will remove this cast as more things get abstracted
+ JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+
+ // 'PropName': {
+ writeNewline("/** @expose */");
+ writeNewline(name + ASEmitterTokens.COLON.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.BLOCK_OPEN.getToken());
+ indentPush();
+ writeNewline("/** @this {"
+ + fjs.formatQualifiedName(cdef.getQualifiedName()) + "} */");
+ writeNewline(ASEmitterTokens.GET.getToken()
+ + ASEmitterTokens.COLON.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.FUNCTION.getToken()
+ + ASEmitterTokens.PAREN_OPEN.getToken()
+ + ASEmitterTokens.PAREN_CLOSE.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.BLOCK_OPEN.getToken());
+ writeNewline(ASEmitterTokens.RETURN.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + name + "_"
+ + ASEmitterTokens.SEMICOLON.getToken());
+ indentPop();
+ writeNewline(ASEmitterTokens.BLOCK_CLOSE.getToken()
+ + ASEmitterTokens.COMMA.getToken());
+ writeNewline();
+ writeNewline("/** @this {"
+ + fjs.formatQualifiedName(cdef.getQualifiedName()) + "} */");
+ writeNewline(ASEmitterTokens.SET.getToken()
+ + ASEmitterTokens.COLON.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.FUNCTION.getToken()
+ + ASEmitterTokens.PAREN_OPEN.getToken() + "value"
+ + ASEmitterTokens.PAREN_CLOSE.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.BLOCK_OPEN.getToken());
+ writeNewline("if (value != " + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + name + "_) {");
+ writeNewline(" var oldValue = " + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + name + "_"
+ + ASEmitterTokens.SEMICOLON.getToken());
+ writeNewline(" " + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + name
+ + "_ = value;");
+ writeNewline(" this.dispatchEvent(org_apache_flex_events_ValueChangeEvent.createUpdateEvent(");
+ writeNewline(" this, \"" + name + "\", oldValue, value));");
+ writeNewline("}");
+ write(ASEmitterTokens.BLOCK_CLOSE.getToken());
+ write(ASEmitterTokens.BLOCK_CLOSE.getToken());
+ }
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ec0a7923/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForEachEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForEachEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForEachEmitter.java
new file mode 100644
index 0000000..1b33061
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ForEachEmitter.java
@@ -0,0 +1,88 @@
+/*
+ *
+ * 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.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
+import org.apache.flex.compiler.tree.as.IForLoopNode;
+import org.apache.flex.compiler.tree.as.IIdentifierNode;
+import org.apache.flex.compiler.tree.as.IVariableExpressionNode;
+import org.apache.flex.compiler.tree.as.IVariableNode;
+
+public class ForEachEmitter extends JSSubEmitter implements
+ ISubEmitter<IForLoopNode>
+{
+
+ public ForEachEmitter(IJSEmitter emitter)
+ {
+ super(emitter);
+ }
+
+ @Override
+ public void emit(IForLoopNode node)
+ {
+ IBinaryOperatorNode bnode = (IBinaryOperatorNode) node
+ .getConditionalsContainerNode().getChild(0);
+ IASNode childNode = bnode.getChild(0);
+
+ final String iterName = getModel().getCurrentForeachName();
+ getModel().incForeachLoopCount();
+
+ write(ASEmitterTokens.FOR);
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(ASEmitterTokens.VAR);
+ write(ASEmitterTokens.SPACE);
+ write(iterName);
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.IN);
+ write(ASEmitterTokens.SPACE);
+ getWalker().walk(bnode.getChild(1));
+ writeToken(ASEmitterTokens.PAREN_CLOSE);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_OPEN);
+ writeNewline();
+ if (childNode instanceof IVariableExpressionNode)
+ {
+ write(ASEmitterTokens.VAR);
+ write(ASEmitterTokens.SPACE);
+ write(((IVariableNode) childNode.getChild(0)).getName());
+ }
+ else
+ write(((IIdentifierNode) childNode).getName());
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.SPACE);
+ getWalker().walk(bnode.getChild(1));
+ write(ASEmitterTokens.SQUARE_OPEN);
+ write(iterName);
+ write(ASEmitterTokens.SQUARE_CLOSE);
+ write(ASEmitterTokens.SEMICOLON);
+ writeNewline();
+ getWalker().walk(node.getStatementContentsNode());
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ writeNewline();
+ }
+
+}