You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/05/12 16:19:41 UTC

[3/3] git commit: [flex-falcon] [refs/heads/develop] - fix XML output

fix XML output


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

Branch: refs/heads/develop
Commit: af288f13b4c404855f85495433bcea8d9a09432c
Parents: 6bd83ee
Author: Alex Harui <ah...@apache.org>
Authored: Thu May 12 09:19:32 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu May 12 09:19:32 2016 -0700

----------------------------------------------------------------------
 .../codegen/js/jx/BinaryOperatorEmitter.java     | 19 ++++++++++++++++---
 .../js/flexjs/TestFlexJSGlobalClasses.java       |  4 ++--
 2 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/af288f13/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index 6a6e470..231cee3 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -177,8 +177,19 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
                 	}
                 	else if (node.getNodeID() == ASTNodeID.Op_AddAssignID)
                 	{
-	                    getWalker().walk(xmlNode);
-                        write(" = ");
+	                    getWalker().walk(xmlNode.getLeftOperandNode());
+	                    IExpressionNode rightSide = xmlNode.getRightOperandNode();
+	                    if (rightSide instanceof UnaryOperatorAtNode)
+	                    {
+		                    write(".setAttribute('");
+		                    getWalker().walk(((UnaryOperatorAtNode)rightSide).getChild(0));
+	                    }
+	                    else
+	                    {
+		                    write(".setChild('");
+		                    getWalker().walk(rightSide);
+	                    }
+	                    write("', ");
                         getWalker().walk(node.getLeftOperandNode());
 	                    write(".plus(");
 	                    getWalker().walk(node.getRightOperandNode());
@@ -242,7 +253,9 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
                 	if (node.getNodeID() == ASTNodeID.Op_AddAssignID)
                 	{
 	                    getWalker().walk(leftSide);
-	                    write(".concat(");
+	                    write(" = ");
+	                    getWalker().walk(leftSide);
+	                    write(".plus(");
 	                    getWalker().walk(node.getRightOperandNode());
 	                    write(ASEmitterTokens.PAREN_CLOSE);
 	                    return;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/af288f13/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
index 5851986..f96646e 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
@@ -569,7 +569,7 @@ public class TestFlexJSGlobalClasses extends TestGoogGlobalClasses
     {
         IBinaryOperatorNode node = getBinaryNode("var a:XML = new XML(\"<top attr1='cat'><child attr2='dog'><grandchild attr3='fish'>text</grandchild></child></top>\");a.foo += a.child");
         asBlockWalker.visitBinaryOperator(node);
-        //assertOut("a.child('foo') = a.child('foo').plus(a.child('child'))");
+        assertOut("a.setChild('foo', a.child('foo').plus(a.child('child'))");
     }
     
     @Test
@@ -577,7 +577,7 @@ public class TestFlexJSGlobalClasses extends TestGoogGlobalClasses
     {
         IBinaryOperatorNode node = getBinaryNode("var a:XMLList; var b:XMLList; a += b");
         asBlockWalker.visitBinaryOperator(node);
-        //assertOut("a = a.plus(b)");
+        assertOut("a = a.plus(b)");
     }
     
     @Test