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 <[email protected]>
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())) {

Reply via email to