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();

Reply via email to