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() + + ">" + ); } }
