You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2019/11/10 07:52:12 UTC

[royale-compiler] branch develop updated: fix nested XMLList binding. Fixes apache/royale-asjs#545

This is an automated email from the ASF dual-hosted git repository.

aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new 8e40298  fix nested XMLList binding. Fixes apache/royale-asjs#545
8e40298 is described below

commit 8e402984e15923ea18a9ba70fa4ecbabaead1836
Author: Alex Harui <ah...@apache.org>
AuthorDate: Sat Nov 9 23:51:34 2019 -0800

    fix nested XMLList binding. Fixes apache/royale-asjs#545
---
 .../compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java    | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
index 7e9747f..baa165a 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
@@ -1692,6 +1692,9 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements
     		InstructionListNode ilNode = (InstructionListNode)destNode.getExpressionNode();
     		InstructionList il = ilNode.getInstructions();
     		ArrayList<Instruction> abcs = il.getInstructions();
+    		// the first indexed access accesses an XMLList, the next ones
+    		// access an XML object
+    		boolean indexedAccess = false;
     		int n = abcs.size();
     		for (int i = 0; i < n; i++)
     		{
@@ -1715,7 +1718,10 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements
     					try
     				    {
     				        Integer.parseInt(propName.getBaseName());
+    				        if (indexedAccess)
+    				        	sb.append(".children()");
     			    		sb.append("[" + propName.getBaseName() + "]" );
+    				        indexedAccess = true;
     				    } catch (NumberFormatException ex)
     				    {
     				    	sb.append(".elements(" + propName.getBaseName() + ")" );