You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2021/12/20 17:43:01 UTC

[royale-compiler] branch develop updated: MemberAccessEmitter: when checking if member access is XMLish for dynamic-access-unknown-members, also check the left side of dynamic access nodes (references #203)

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

joshtynjala 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 60242fe  MemberAccessEmitter: when checking if member access is XMLish for dynamic-access-unknown-members, also check the left side of dynamic access nodes (references #203)
60242fe is described below

commit 60242fe456576a10e765d193518d391cdcf860c5
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Mon Dec 20 09:34:32 2021 -0800

    MemberAccessEmitter: when checking if member access is XMLish for dynamic-access-unknown-members, also check the left side of dynamic access nodes (references #203)
---
 .../internal/codegen/js/jx/MemberAccessEmitter.java   | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
index d6ba5b7..9f1c863 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
@@ -524,9 +524,22 @@ public class MemberAccessEmitter extends JSSubEmitter implements
 				IDefinition resolvedDefinition = identifierNode.resolve(getProject());
 				if (resolvedDefinition == null) {
 					IExpressionNode expressionNode = node.getLeftOperandNode();
-					while(expressionNode instanceof IMemberAccessExpressionNode) {
-						IMemberAccessExpressionNode memberAccess = (IMemberAccessExpressionNode) expressionNode;
-						expressionNode = memberAccess.getLeftOperandNode();
+					while (true)
+					{
+						if (expressionNode instanceof IMemberAccessExpressionNode)
+						{
+							IMemberAccessExpressionNode memberAccess = (IMemberAccessExpressionNode) expressionNode;
+							expressionNode = memberAccess.getLeftOperandNode();
+						}
+						else if (expressionNode instanceof IDynamicAccessNode)
+						{
+							IDynamicAccessNode dynamicAccess = (IDynamicAccessNode) expressionNode;
+							expressionNode = dynamicAccess.getLeftOperandNode();
+						}
+						else
+						{
+							break;
+						}
 					}
 					ITypeDefinition expressionType = expressionNode.resolveType(getProject());
 					if (!SemanticUtils.isXMLish(expressionType, getProject())) {