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