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 51d22a5ac31ee823f655a84a05181919e9ddffc5
Author: Josh Tynjala <[email protected]>
AuthorDate: Tue Mar 31 13:46:24 2026 -0700

    MXMLRoyalEmitter: Added support for mx.core.IDeferredInstance for default 
properties with -children-as-data=false
---
 RELEASE_NOTES.md                                   |  1 +
 .../codegen/mxml/royale/MXMLRoyaleEmitter.java     | 41 ++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 7bd9ece55..e6b46b5bc 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -73,6 +73,7 @@ Apache Royale Compiler 1.0.0
 - compiler: JS target doesn't call `start()` for MXML classes, similar to AS3 
classes.
 - compiler: Fixed `mx.core.DeferredInstanceFromFunction` not getting emitted 
when targeting JavaScript.
 - compiler: Fixed intermittent missing `goog.require()` calls when using JS 
target.
+- compiler: Added support for `mx.core.IDeferredInstance` for default 
properties with `-children-as-data=false` for JavaScript.
 - debugger: Added missing isolate ID to SWF load and unload events.
 - debugger: Fixed debugger targeting the current JDK version instead of the 
intended minimum JDK version.
 - debugger: Fixed localized messages appearing as unprocessed tokens.
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 480ede2ee..320cbf4a8 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
@@ -5139,6 +5139,47 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
                     write(ASEmitterTokens.SEMICOLON);
                     writeNewline();
                 }
+                else if (valueNode instanceof IMXMLDeferredInstanceNode)
+                {
+                    RoyaleJSProject fjp = (RoyaleJSProject) 
getMXMLWalker().getProject();
+
+                    IMXMLDeferredInstanceNode deferredInstanceNode = 
(IMXMLDeferredInstanceNode) valueNode;
+                    String factoryMethodName = null;
+                    IMXMLInstanceNode instanceNode = 
deferredInstanceNode.getInstanceNode();
+                    if (instanceNode != null)
+                    {
+                        factoryMethodName = 
factoryMethodNames.get(instanceNode);
+                    }
+                    if (factoryMethodName != null)
+                    {
+                        write(varName);
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(pnode.getName());
+                        write(ASEmitterTokens.SPACE);
+                        writeToken(ASEmitterTokens.EQUAL);
+                        writeToken(ASEmitterTokens.NEW);
+                        String qname = 
deferredInstanceNode.getClassReference(fjp).getQualifiedName();
+                        write(formatQualifiedName(qname));
+                        write(ASEmitterTokens.PAREN_OPEN);
+
+                        IJSEmitter jsEmitter = (IJSEmitter) 
walker.getASEmitter();
+                        jsEmitter.emitClosureStart();
+                        write(ASEmitterTokens.THIS);
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(factoryMethodName);
+                        writeToken(ASEmitterTokens.COMMA);
+                        write(ASEmitterTokens.THIS);
+                        writeToken(ASEmitterTokens.COMMA);
+                        write(ASEmitterTokens.SINGLE_QUOTE);
+                        write(factoryMethodName);
+                        write(ASEmitterTokens.SINGLE_QUOTE);
+                        write(ASEmitterTokens.PAREN_CLOSE);
+
+                        write(ASEmitterTokens.PAREN_CLOSE);
+                        write(ASEmitterTokens.SEMICOLON);
+                        writeNewline();
+                    }
+                }
                 else
                 {
                     write(varName);

Reply via email to