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 <[email protected]>
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;

Reply via email to