Repository: flex-falcon Updated Branches: refs/heads/develop 33821939f -> 12b324767
FLEX-35074 handle more XML cases Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/12b32476 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/12b32476 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/12b32476 Branch: refs/heads/develop Commit: 12b32476756adffee98a89c0efb65c03750e75aa Parents: 3382193 Author: Alex Harui <[email protected]> Authored: Tue Apr 12 10:44:17 2016 -0700 Committer: Alex Harui <[email protected]> Committed: Tue Apr 12 10:44:17 2016 -0700 ---------------------------------------------------------------------- .../internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java | 8 ++++++++ .../compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java | 8 ++++++++ 2 files changed, 16 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/12b32476/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 d219506..0edd621 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 @@ -523,6 +523,14 @@ public class TestFlexJSGlobalClasses extends TestGoogGlobalClasses } @Test + public void testXMLListSetAttribute() + { + IBinaryOperatorNode node = getBinaryNode("var a:XMLList;a[1].@bar = 'foo'"); + asBlockWalker.visitBinaryOperator(node); + assertOut("a[1].setAttribute('bar', 'foo')"); + } + + @Test public void testXMLSetChild() { 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"); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/12b32476/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 cde30e8..d345277 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 @@ -909,6 +909,14 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter if (fname.equals("XML") || fname.equals("XMLList")) return true; } + else if (leftID == ASTNodeID.ArrayIndexExpressionID) + { + leftNode = (IExpressionNode)(leftNode.getChild(0)); + IDefinition leftDef = leftNode.resolveType(getWalker().getProject()); + if (leftDef != null) + return IdentifierNode.isXMLish(leftDef, getWalker().getProject()); + + } return false; }
