Return-Path: X-Original-To: apmail-flex-commits-archive@www.apache.org Delivered-To: apmail-flex-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6FBFA198F8 for ; Tue, 12 Apr 2016 18:29:27 +0000 (UTC) Received: (qmail 37350 invoked by uid 500); 12 Apr 2016 18:29:27 -0000 Delivered-To: apmail-flex-commits-archive@flex.apache.org Received: (qmail 37322 invoked by uid 500); 12 Apr 2016 18:29:27 -0000 Mailing-List: contact commits-help@flex.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flex.apache.org Delivered-To: mailing list commits@flex.apache.org Received: (qmail 37314 invoked by uid 99); 12 Apr 2016 18:29:27 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Apr 2016 18:29:27 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 32761DFDCF; Tue, 12 Apr 2016 18:29:27 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: aharui@apache.org To: commits@flex.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: git commit: [flex-falcon] [refs/heads/develop] - quick fix for simple e4x filters Date: Tue, 12 Apr 2016 18:29:27 +0000 (UTC) Repository: flex-falcon Updated Branches: refs/heads/develop 12b324767 -> a56951bbe quick fix for simple e4x filters Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/a56951bb Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/a56951bb Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/a56951bb Branch: refs/heads/develop Commit: a56951bbe452a761fe96391f121fe70d6aecf6c3 Parents: 12b3247 Author: Alex Harui Authored: Tue Apr 12 11:29:30 2016 -0700 Committer: Alex Harui Committed: Tue Apr 12 11:29:30 2016 -0700 ---------------------------------------------------------------------- .../codegen/js/flexjs/TestFlexJSGlobalClasses.java | 10 ++++++++++ .../internal/codegen/js/jx/IdentifierEmitter.java | 12 ++++++++++++ 2 files changed, 22 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a56951bb/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 0edd621..295d636 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 @@ -515,6 +515,16 @@ public class TestFlexJSGlobalClasses extends TestGoogGlobalClasses } @Test + public void testXMLFilterForChild() + { + IVariableNode node = getVariable("var a:XML = new XML(\"text\");var b:XMLList = a..grandchild.(year == '2016');"); + IASNode parentNode = node.getParent(); + node = (IVariableNode) parentNode.getChild(1); + asBlockWalker.visitVariable(node); + assertOut("var /** @type {XMLList} */ b = a.descendants('grandchild').filter(function(node){return (node.child('year') == '2016')})"); + } + + @Test public void testXMLSetAttribute() { IBinaryOperatorNode node = getBinaryNode("var a:XML = new XML(\"text\");a.@bar = 'foo'"); http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a56951bb/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java index 0d91fcf..0e849ef 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/IdentifierEmitter.java @@ -36,6 +36,7 @@ import org.apache.flex.compiler.internal.definitions.TypeDefinitionBase; import org.apache.flex.compiler.internal.tree.as.NonResolvingIdentifierNode; import org.apache.flex.compiler.tree.ASTNodeID; import org.apache.flex.compiler.tree.as.IASNode; +import org.apache.flex.compiler.tree.as.IBinaryOperatorNode; import org.apache.flex.compiler.tree.as.IFunctionObjectNode; import org.apache.flex.compiler.tree.as.IIdentifierNode; import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode; @@ -64,6 +65,8 @@ public class IdentifierEmitter extends JSSubEmitter implements IASNode parentNode = node.getParent(); ASTNodeID parentNodeId = parentNode.getNodeID(); + IASNode grandparentNode = parentNode.getParent(); + ASTNodeID grandparentNodeId = (parentNode != null) ? grandparentNode.getNodeID() : null; boolean identifierIsAccessorFunction = nodeDef instanceof AccessorDefinition; boolean identifierIsPlainFunction = nodeDef instanceof FunctionDefinition @@ -245,6 +248,15 @@ public class IdentifierEmitter extends JSSubEmitter implements write(qname); endMapping(node); } + else if (grandparentNodeId == ASTNodeID.E4XFilterID && + (!(parentNodeId == ASTNodeID.MemberAccessExpressionID || parentNodeId == ASTNodeID.Op_DescendantsID))) + { + startMapping(node); + write("child('"); + write(node.getName()); + write("')"); + endMapping(node); + } else { startMapping(node);