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/16 17:33:24 UTC
[royale-compiler] branch develop updated: MemberAccessEmitter: fix nested XML member access with dynamic access unknown members (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 9bd4648 MemberAccessEmitter: fix nested XML member access with dynamic access unknown members (references #203)
9bd4648 is described below
commit 9bd464866cf5e70d33b3c997d8cd8b7422601cd9
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Dec 16 09:33:08 2021 -0800
MemberAccessEmitter: fix nested XML member access with dynamic access unknown members (references #203)
Keeps crawling the left operand node until it reaches something that isn't member access. If that's XMLish, everything else is too.
---
.../royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java | 4 ++++
1 file changed, 4 insertions(+)
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 606e080..d6ba5b7 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,6 +524,10 @@ 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();
+ }
ITypeDefinition expressionType = expressionNode.resolveType(getProject());
if (!SemanticUtils.isXMLish(expressionType, getProject())) {
emitDynamicAccess = true;