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 60bec73e5042219a3484cec6f17b2b1688bf9d8a
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Sep 3 15:42:04 2025 -0700

    MXMLRoyaleEmitter: fix fx:Function and fx:Class with id in fx:Declarations 
not getting set properly in constructor
    
    They should be treated as primitive declaration nodes, like Number, 
Boolean, String, etc.
---
 .../codegen/mxml/royale/MXMLRoyaleEmitter.java     | 60 +++++++++++++++++++++-
 1 file changed, 58 insertions(+), 2 deletions(-)

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 71023dece..4a18ba234 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
@@ -2506,8 +2506,10 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
             return;
 
         ASTNodeID nodeID = node.getNodeID();
-       if ((nodeID == ASTNodeID.MXMLXMLID || nodeID == 
ASTNodeID.MXMLXMLListID) &&
-                       node.getParent().getNodeID() == 
ASTNodeID.MXMLDeclarationsID)
+       if ((nodeID == ASTNodeID.MXMLXMLID
+                || nodeID == ASTNodeID.MXMLXMLListID
+                || nodeID == ASTNodeID.MXMLFunctionID)
+                && node.getParent().getNodeID() == 
ASTNodeID.MXMLDeclarationsID)
        {
                primitiveDeclarationNodes.add(node);
                return;
@@ -3312,6 +3314,12 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
        ICompilationUnit classCU = project.resolveQNameToCompilationUnit(qname);
        ICompilationUnit cu = 
project.resolveQNameToCompilationUnit(classDefinition.getQualifiedName());
        project.addDependency(cu, classCU, DependencyType.EXPRESSION, qname);
+
+        if (node.getParent().getNodeID() == ASTNodeID.MXMLDeclarationsID)
+       {
+               primitiveDeclarationNodes.add(node);
+               return;
+       }
         MXMLDescriptorSpecifier ps = getCurrentDescriptor("ps");
         ps.value = qname;
     }
@@ -3878,6 +3886,54 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
                     }
                        break;
                                }
+                case MXMLClassID:
+                               {
+                               IMXMLClassNode classNode = 
(IMXMLClassNode)declNode;
+                   ITypeDefinition cdef = 
classNode.getValue(getMXMLWalker().getProject());
+                   String qname = formatQualifiedName(cdef.getQualifiedName());
+                    varname = classNode.getEffectiveID();
+
+                    writeNewline();
+                    write(ASEmitterTokens.THIS);
+                    write(ASEmitterTokens.MEMBER_ACCESS);
+                    write(varname);
+                    write(ASEmitterTokens.SPACE);
+                    writeToken(ASEmitterTokens.EQUAL);
+                    write(qname);
+                    write(ASEmitterTokens.SEMICOLON);
+                    break;
+                }
+                case MXMLFunctionID:
+                {
+                               IMXMLFunctionNode functionNode = 
(IMXMLFunctionNode)declNode;
+                    IASNode exprNode = functionNode.getExpressionNode();
+                    IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
+                            .getASEmitter();
+                    String functionName = 
((JSRoyaleEmitter)asEmitter).stringifyNode(exprNode);
+                    varname = functionNode.getEffectiveID();
+
+                    writeNewline();
+                    write(ASEmitterTokens.THIS);
+                    write(ASEmitterTokens.MEMBER_ACCESS);
+                    write(varname);
+                    write(ASEmitterTokens.SPACE);
+                    writeToken(ASEmitterTokens.EQUAL);
+                    write(functionName);
+                    write(ASEmitterTokens.SEMICOLON);
+                    break;
+                }
+                default:
+                    throw new IllegalStateException("Unknown primitive 
declaration node of type <"
+                            + declNode.getNodeID()
+                            + "> at position ("
+                            + declNode.getLine()
+                            + ", "
+                            + declNode.getColumn()
+                            + ")"
+                            + " in file <"
+                            + declNode.getSourcePath()
+                            + ">"
+                        );
 
                }
        }

Reply via email to