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/04/13 01:06:18 UTC

[2/2] git commit: [flex-falcon] [refs/heads/develop] - FLEX-35072 handle XMLList as identifiers

FLEX-35072 handle XMLList as identifiers


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

Branch: refs/heads/develop
Commit: 395863b005e7cd35e077c303cb9fd73d6d7f1802
Parents: f05ad76
Author: Alex Harui <ah...@apache.org>
Authored: Tue Apr 12 16:06:21 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Apr 12 16:06:21 2016 -0700

----------------------------------------------------------------------
 .../codegen/js/flexjs/TestFlexJSGlobalClasses.java |  8 ++++++++
 .../codegen/js/jx/BinaryOperatorEmitter.java       | 17 +++++++++++++++++
 2 files changed, 25 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/395863b0/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
index 6536414..3fb8e67 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
@@ -565,6 +565,14 @@ public class TestFlexJSGlobalClasses extends TestGoogGlobalClasses
     }
     
     @Test
+    public void testXMLListConcat2()
+    {
+        IBinaryOperatorNode node = getBinaryNode("var a:XMLList; var b:XMLList; a += b");
+        asBlockWalker.visitBinaryOperator(node);
+        assertOut("a.concat(b)");
+    }
+    
+    @Test
     public void testXMLListAddAndAssign()
     {
         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 + a..grandchild");

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/395863b0/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index 6e5cc75..aab9712 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -28,6 +28,7 @@ import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
 import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
+import org.apache.flex.compiler.internal.tree.as.IdentifierNode;
 import org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode;
 import org.apache.flex.compiler.internal.tree.as.UnaryOperatorAtNode;
 import org.apache.flex.compiler.projects.ICompilerProject;
@@ -225,6 +226,22 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
                     return;
                 }
             }
+            else if (leftSide.getNodeID() == ASTNodeID.IdentifierID)
+            {
+    			IDefinition leftDef = leftSide.resolveType(getWalker().getProject());
+    			if ((leftDef != null)
+    				&& IdentifierNode.isXMLish(leftDef, getWalker().getProject()))
+    			{
+                	if (node.getNodeID() == ASTNodeID.Op_AddAssignID)
+                	{
+	                    getWalker().walk(leftSide);
+	                    write(".concat(");
+	                    getWalker().walk(node.getRightOperandNode());
+	                    write(ASEmitterTokens.PAREN_CLOSE);
+	                    return;
+                	}
+                }
+            }
 
             super_emitBinaryOperator(node);
             /*