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 9b63725070fba92c01c1efa5467e50be2d7ab540 Author: Josh Tynjala <[email protected]> AuthorDate: Wed May 6 09:35:03 2026 -0700 MXMLRoyaleEmitter: the new children-as-data=false factory methods were missing rpc services and XML/XMLList Followup to commit de684f3eb4c65bcaa424e9a5d22d45ced57c7005 --- .../codegen/mxml/royale/MXMLRoyaleEmitter.java | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) 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 581dd3a56..a79782741 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 @@ -973,11 +973,20 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements emitObjectFactoryMethod((IMXMLObjectNode) node); break; case MXMLInstanceID: + case MXMLHTTPServiceID: + case MXMLRemoteObjectID: + case MXMLWebServiceID: emitInstanceFactoryMethod((IMXMLInstanceNode) node); break; case MXMLVectorID: emitVectorFactoryMethod((IMXMLVectorNode) node); break; + case MXMLXMLID: + emitXMLFactoryMethod((IMXMLXMLNode) node); + break; + case MXMLXMLListID: + emitXMLListFactoryMethod((IMXMLXMLListNode) node); + break; default: throw new RuntimeException("Missing factory method for node of type: " + node.getNodeID()); } @@ -5133,6 +5142,135 @@ public class MXMLRoyaleEmitter extends MXMLEmitter implements writeNewline(ASEmitterTokens.SEMICOLON); } + private void emitXMLFactoryMethod(IMXMLXMLNode node) + { + String cname = node.getFileNode().getName(); + String methodName = factoryMethodNames.get(node); + String tempVarName = "xml"; + + writeNewline(); + write(cname); + write(ASEmitterTokens.MEMBER_ACCESS); + write(JSEmitterTokens.PROTOTYPE); + write(ASEmitterTokens.MEMBER_ACCESS); + write(methodName); + write(ASEmitterTokens.SPACE); + writeToken(ASEmitterTokens.EQUAL); + write(ASEmitterTokens.FUNCTION); + write(ASEmitterTokens.PAREN_OPEN); + writeToken(ASEmitterTokens.PAREN_CLOSE); + write(ASEmitterTokens.BLOCK_OPEN); + indentPush(); + writeNewline(); + + writeToken(ASEmitterTokens.VAR); + write(tempVarName); + write(ASEmitterTokens.SPACE); + writeToken(ASEmitterTokens.EQUAL); + writeToken(ASEmitterTokens.NEW); + write("XML"); + write(ASEmitterTokens.PAREN_OPEN); + + String valueString = node.getXMLString(); + if (valueString != null) + { + writeToken(ASEmitterTokens.SINGLE_QUOTE); + write(StringEscapeUtils.escapeEcmaScript(valueString)); + writeToken(ASEmitterTokens.SINGLE_QUOTE); + } + + write(ASEmitterTokens.PAREN_CLOSE); + write(ASEmitterTokens.SEMICOLON); + writeNewline(); + + String effectiveId = node.getEffectiveID(); + if (effectiveId != null) + { + write(ASEmitterTokens.THIS); + write(ASEmitterTokens.MEMBER_ACCESS); + write(node.getEffectiveID()); + write(ASEmitterTokens.SPACE); + writeToken(ASEmitterTokens.EQUAL); + write(tempVarName); + write(ASEmitterTokens.SEMICOLON); + writeNewline(); + } + + writeToken(ASEmitterTokens.RETURN); + write(tempVarName); + write(ASEmitterTokens.SEMICOLON); + + indentPop(); + writeNewline(); + write(ASEmitterTokens.BLOCK_CLOSE); + writeNewline(ASEmitterTokens.SEMICOLON); + + } + + private void emitXMLListFactoryMethod(IMXMLXMLListNode node) + { + String cname = node.getFileNode().getName(); + String methodName = factoryMethodNames.get(node); + String tempVarName = "xmlList"; + + writeNewline(); + write(cname); + write(ASEmitterTokens.MEMBER_ACCESS); + write(JSEmitterTokens.PROTOTYPE); + write(ASEmitterTokens.MEMBER_ACCESS); + write(methodName); + write(ASEmitterTokens.SPACE); + writeToken(ASEmitterTokens.EQUAL); + write(ASEmitterTokens.FUNCTION); + write(ASEmitterTokens.PAREN_OPEN); + writeToken(ASEmitterTokens.PAREN_CLOSE); + write(ASEmitterTokens.BLOCK_OPEN); + indentPush(); + writeNewline(); + + writeToken(ASEmitterTokens.VAR); + write(tempVarName); + write(ASEmitterTokens.SPACE); + writeToken(ASEmitterTokens.EQUAL); + writeToken(ASEmitterTokens.NEW); + write("XMLList"); + write(ASEmitterTokens.PAREN_OPEN); + + String valueString = node.getXMLString(); + if (valueString != null) + { + writeToken(ASEmitterTokens.SINGLE_QUOTE); + write(StringEscapeUtils.escapeEcmaScript(valueString)); + writeToken(ASEmitterTokens.SINGLE_QUOTE); + } + + write(ASEmitterTokens.PAREN_CLOSE); + write(ASEmitterTokens.SEMICOLON); + writeNewline(); + + String effectiveId = node.getEffectiveID(); + if (effectiveId != null) + { + write(ASEmitterTokens.THIS); + write(ASEmitterTokens.MEMBER_ACCESS); + write(node.getEffectiveID()); + write(ASEmitterTokens.SPACE); + writeToken(ASEmitterTokens.EQUAL); + write(tempVarName); + write(ASEmitterTokens.SEMICOLON); + writeNewline(); + } + + writeToken(ASEmitterTokens.RETURN); + write(tempVarName); + write(ASEmitterTokens.SEMICOLON); + + indentPop(); + writeNewline(); + write(ASEmitterTokens.BLOCK_CLOSE); + writeNewline(ASEmitterTokens.SEMICOLON); + } + private void emitClassReferenceFields(IMXMLClassReferenceNode node, String varName) { IMXMLPropertySpecifierNode[] pnodes = node.getPropertySpecifierNodes();
