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 6939105b0f8825be369edd4797ccc46c586c1a00 Author: Josh Tynjala <[email protected]> AuthorDate: Tue Sep 2 10:04:46 2025 -0700 MXMLClassDefinitionNode: allow Model tag as child of root when using MXML 2006 dialect Moved Model child parsing from MXMLDocumentNode into MXMLClassDefinitionNode instead. This allows mx:Model to be declared in custom mx:Component tags too. This was not allowed before, but should have been. Improves consistency with Flex SDK compiler. MXML 2009 does not allow Models to be declared as child of the root, giving an error about not implementing IUIComponent. This is true even if the root tag is fx:Object, which wouldn't have any requirement for IUIComponent. So, with MXML 2009, Models should go always into fx:Declarations, which we were not requiring before, but should have been. Further improves consistency with Flex SDK compiler. --- .../royale/compiler/internal/tree/mxml/MXMLClassDefinitionNode.java | 5 +++++ .../apache/royale/compiler/internal/tree/mxml/MXMLDocumentNode.java | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLClassDefinitionNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLClassDefinitionNode.java index 990deb2e6..f8cb448cf 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLClassDefinitionNode.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLClassDefinitionNode.java @@ -292,6 +292,11 @@ public class MXMLClassDefinitionNode extends MXMLClassReferenceNodeBase { childNode = new MXMLComponentNode(this); } + else if (fileScope.isModelTag(childTag) + && builder.getMXMLDialect().isEqualToOrBefore(MXMLDialect.MXML_2006)) + { + childNode = new MXMLModelNode(this); + } else { super.processChildTag(builder, tag, childTag, info); diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDocumentNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDocumentNode.java index 02f41c732..630fa29ae 100644 --- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDocumentNode.java +++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDocumentNode.java @@ -79,10 +79,6 @@ public class MXMLDocumentNode extends MXMLClassDefinitionNode implements IMXMLDo { childNode = new MXMLLibraryNode(this); } - else if (fileScope.isModelTag(childTag)) - { - childNode = new MXMLModelNode(this); - } else if (fileScope.isPrivateTag(childTag)) { // A <Private> tag must be the last child tag.
