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

commit a5405799e70af96273da943966a3c7cc4437f9c4
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Sep 4 09:12:59 2025 -0700

    IMXMLBlockVisitor, IMXMLEmitter: move MXMLFunctionID/fx:Function into its 
own visitFunction and emitFunction methods
    
    Functions were previously handled in visitInstance and emitInstance, 
emitInstance had a completely separate path for functions that it didn't have 
for other instances. Additionally, it doesn't make sense to me that MXMLClassID 
would have its own methods (similar to other primitives), and not 
MXMLFunctionID.
---
 .../royale/compiler/codegen/mxml/IMXMLEmitter.java |  3 ++
 .../internal/codegen/mxml/MXMLBlockWalker.java     |  9 ++++
 .../internal/codegen/mxml/MXMLEmitter.java         |  6 +++
 .../codegen/mxml/royale/MXMLRoyaleEmitter.java     | 49 ++++++++++++----------
 .../internal/visitor/mxml/MXMLNodeSwitch.java      |  5 ++-
 .../compiler/visitor/mxml/IMXMLBlockVisitor.java   |  3 ++
 6 files changed, 53 insertions(+), 22 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/mxml/IMXMLEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/mxml/IMXMLEmitter.java
index 450140d11..368473eb1 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/mxml/IMXMLEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/codegen/mxml/IMXMLEmitter.java
@@ -33,6 +33,7 @@ import org.apache.royale.compiler.tree.mxml.IMXMLEmbedNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLEventSpecifierNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFactoryNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFileNode;
+import org.apache.royale.compiler.tree.mxml.IMXMLFunctionNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLImplementsNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLInstanceNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLIntNode;
@@ -109,6 +110,8 @@ public interface IMXMLEmitter extends IEmitter
 
     void emitMXMLClass(IMXMLClassNode node);
 
+    void emitFunction(IMXMLFunctionNode node);
+
     
//--------------------------------------------------------------------------
 
     void emitLiteral(IMXMLLiteralNode node);
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLBlockWalker.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLBlockWalker.java
index 07ac4f650..455044481 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLBlockWalker.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLBlockWalker.java
@@ -42,6 +42,7 @@ import org.apache.royale.compiler.tree.mxml.IMXMLEmbedNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLEventSpecifierNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFactoryNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFileNode;
+import org.apache.royale.compiler.tree.mxml.IMXMLFunctionNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLImplementsNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLInstanceNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLIntNode;
@@ -352,6 +353,14 @@ public class MXMLBlockWalker implements IMXMLBlockVisitor, 
IMXMLBlockWalker
 
         mxmlEmitter.emitMXMLClass(node);
     }
+
+    @Override
+    public void visitFunction(IMXMLFunctionNode node)
+    {
+        debug("visitFunction()");
+
+        mxmlEmitter.emitFunction(node);
+    }
     
     
//--------------------------------------------------------------------------
 
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLEmitter.java
index 9e550faf4..8d3fdc3af 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/MXMLEmitter.java
@@ -301,6 +301,12 @@ public class MXMLEmitter extends Emitter implements 
IMXMLEmitter
        write(node.getValue(getMXMLWalker().getProject()).getQualifiedName());
     }
 
+    @Override
+    public void emitFunction(IMXMLFunctionNode node)
+    {
+        emitInstance(node);
+    }
+
     
//--------------------------------------------------------------------------
 
     @Override
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
index ff9f18296..73000515b 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
@@ -2507,8 +2507,7 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
 
         ASTNodeID nodeID = node.getNodeID();
        if ((nodeID == ASTNodeID.MXMLXMLID
-                || nodeID == ASTNodeID.MXMLXMLListID
-                || nodeID == ASTNodeID.MXMLFunctionID)
+                || nodeID == ASTNodeID.MXMLXMLListID)
                 && node.getParent().getNodeID() == 
ASTNodeID.MXMLDeclarationsID)
        {
                primitiveDeclarationNodes.add(node);
@@ -2520,25 +2519,6 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
                         .getProject());
 
         MXMLDescriptorSpecifier currentPropertySpecifier = 
getCurrentDescriptor("ps");
-       if (nodeID == ASTNodeID.MXMLFunctionID)
-       {
-            RoyaleJSProject project = (RoyaleJSProject) 
getMXMLWalker().getProject();
-            project.needLanguage = true;
-            MXMLFunctionNode fnode = ((MXMLFunctionNode)node);
-            IExpressionNode fexpNode = 
(IExpressionNode)fnode.getExpressionNode();
-            IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
-                    .getASEmitter();
-            String fNodeString = 
((JSRoyaleEmitter)asEmitter).stringifyNode(fexpNode);
-               currentPropertySpecifier.value = fNodeString; 
-
-            String id = node.getID();
-            String localId = node.getLocalID();
-            if (id != null || localId != null)
-            {
-                primitiveDeclarationNodes.add(node);
-            }
-               return;
-       }
 
         String effectiveId = null;
         String id = node.getID();
@@ -3373,6 +3353,33 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
         }
     }
 
+    @Override
+    public void emitFunction(IMXMLFunctionNode node)
+    {
+        RoyaleJSProject project = (RoyaleJSProject) 
getMXMLWalker().getProject();
+        project.needLanguage = true;
+        IASNode exprNode = node.getExpressionNode();
+        IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
+                .getASEmitter();
+        String functionName = 
((JSRoyaleEmitter)asEmitter).stringifyNode(exprNode);
+
+        if (node.getParent().getNodeID() == ASTNodeID.MXMLDeclarationsID)
+        {
+            primitiveDeclarationNodes.add(node);
+            return;
+        }
+
+        MXMLDescriptorSpecifier currentPropertySpecifier = 
getCurrentDescriptor("ps");
+        currentPropertySpecifier.value = functionName; 
+
+        String id = node.getID();
+        String localId = node.getLocalID();
+        if (id != null || localId != null)
+        {
+            primitiveDeclarationNodes.add(node);
+        }
+    }
+
     
//--------------------------------------------------------------------------
 
     @Override
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
index a203c7970..b5c2188bb 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
@@ -33,6 +33,7 @@ import org.apache.royale.compiler.tree.mxml.IMXMLEmbedNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLEventSpecifierNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFactoryNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFileNode;
+import org.apache.royale.compiler.tree.mxml.IMXMLFunctionNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLImplementsNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLInstanceNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLIntNode;
@@ -125,6 +126,9 @@ public class MXMLNodeSwitch implements IASNodeStrategy
         case MXMLClassID:
             visitor.visitMXMLClass((IMXMLClassNode) node);
             break;
+        case MXMLFunctionID:
+            visitor.visitFunction((IMXMLFunctionNode) node);
+            break;
         case MXMLStyleID:
             visitor.visitStyleBlock((IMXMLStyleNode)node);
             break;
@@ -161,7 +165,6 @@ public class MXMLNodeSwitch implements IASNodeStrategy
         case MXMLHTTPServiceID:
         case MXMLXMLID:
         case MXMLXMLListID:
-        case MXMLFunctionID:
             visitor.visitInstance((IMXMLInstanceNode) node);
             break;
         case MXMLRemoteObjectID:
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/visitor/mxml/IMXMLBlockVisitor.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/visitor/mxml/IMXMLBlockVisitor.java
index 2144865c3..55edcd34e 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/visitor/mxml/IMXMLBlockVisitor.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/visitor/mxml/IMXMLBlockVisitor.java
@@ -33,6 +33,7 @@ import org.apache.royale.compiler.tree.mxml.IMXMLEmbedNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLEventSpecifierNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFactoryNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLFileNode;
+import org.apache.royale.compiler.tree.mxml.IMXMLFunctionNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLImplementsNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLInstanceNode;
 import org.apache.royale.compiler.tree.mxml.IMXMLIntNode;
@@ -107,6 +108,8 @@ public interface IMXMLBlockVisitor extends IBlockVisitor
 
     void visitMXMLClass(IMXMLClassNode node);
 
+    void visitFunction(IMXMLFunctionNode node);
+
     
//--------------------------------------------------------------------------
 
     void visitLiteral(IMXMLLiteralNode node);

Reply via email to