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 9cca41eeba7c43bf9b4956dae8abde20c3c55fe9 Author: Josh Tynjala <[email protected]> AuthorDate: Wed May 6 09:53:14 2026 -0700 MXMLRoyaleEmitter: fix detection of E4X wildcard syntax (dot star) when generating JavaScript --- RELEASE_NOTES.md | 1 + .../compiler/internal/codegen/js/jx/MemberAccessEmitter.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 37a5b1857..efcaa3616 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -78,6 +78,7 @@ Apache Royale Compiler 1.0.0 - compiler: Improved parsing of `[Exclude]` metadata to make the member name an identifier for tooling. - compiler: Fixed namespace URI when namespace is defined in package. - compiler: Fixed warning for comparison of boolean or numeric type with `null` when using `-js-default-initializers=false` compiler option. +- compiler: Fixed JavaScript code generation for E4X wildcard (.*) syntax. - 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/js/jx/MemberAccessEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java index 3a5f933f1..20e285532 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java @@ -98,6 +98,14 @@ public class MemberAccessEmitter extends JSSubEmitter implements else if (leftNode != null) isXML = fjs.isXMLish(leftNode); + if (!isXML + && rightNode instanceof ILanguageIdentifierNode + && ILanguageIdentifierNode.LanguageIdentifierKind.ANY_TYPE.equals(((ILanguageIdentifierNode)rightNode).getKind())) + { + // wildcard syntax may be used in E4X only + isXML = true; + } + if (!isXML) { if (leftNode instanceof MemberAccessExpressionNode) isProxy = fjs.isProxy(leftNode);
