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);
/*