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())) {