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

joshtynjala pushed a commit to branch fix/super-signature-checks
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit 52db10e509a5367e0f53801b7254da0b31a932fa
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Oct 9 13:08:47 2024 -0700

    MethodBodySemanticChecker: fix method name in CallUndefinedMethodProblem 
when method name starts with @ symbol for an attribute
---
 .../internal/semantics/MethodBodySemanticChecker.java         | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
index 9b4b342f6..7f9a0073a 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/semantics/MethodBodySemanticChecker.java
@@ -134,6 +134,7 @@ import 
org.apache.royale.compiler.internal.tree.as.PackageNode;
 import org.apache.royale.compiler.internal.tree.as.ParameterNode;
 import org.apache.royale.compiler.internal.tree.as.ScopedBlockNode;
 import org.apache.royale.compiler.internal.tree.as.TernaryOperatorNode;
+import org.apache.royale.compiler.internal.tree.as.UnaryOperatorAtNode;
 import org.apache.royale.compiler.internal.tree.as.VariableNode;
 import org.apache.royale.compiler.internal.tree.as.VectorLiteralNode;
 import org.apache.royale.compiler.internal.tree.mxml.MXMLDocumentNode;
@@ -2233,7 +2234,17 @@ public class MethodBodySemanticChecker
                        MemberAccessExpressionNode mae = 
(MemberAccessExpressionNode)nameNode;
                        IExpressionNode rightNode = mae.getRightOperandNode();
                        if (rightNode.getNodeID() == ASTNodeID.IdentifierID)
+                    {
                                methodName = 
((IdentifierNode)rightNode).getName();
+                    }
+                    else if (rightNode.getNodeID() == ASTNodeID.Op_AtID)
+                    {
+                        UnaryOperatorAtNode atNode = (UnaryOperatorAtNode) 
rightNode;
+                        if (atNode.getOperandNode().getNodeID() == 
ASTNodeID.IdentifierID)
+                        {
+                            methodName = "@" + 
((IdentifierNode)atNode.getOperandNode()).getName();
+                        }
+                    }
                }
                 assert methodName != null;
                 addProblem(new CallUndefinedMethodProblem( 

Reply via email to