diff --git a/blueprintcompiler/language/gtkbuilder_template.py b/blueprintcompiler/language/gtkbuilder_template.py index 92dff71..0de7381 100644 --- a/blueprintcompiler/language/gtkbuilder_template.py +++ b/blueprintcompiler/language/gtkbuilder_template.py @@ -37,6 +37,10 @@ class Template(Object): def not_abstract(self): pass # does not apply to templates + @validate("name") + def unique_in_parent(self): + self.validate_unique_in_parent(f"Only one template may be defined per file, but this file contains {len(self.parent.children[Template])}",) + def emit_xml(self, xml: XmlEmitter): xml.start_tag( "template", diff --git a/blueprintcompiler/language/ui.py b/blueprintcompiler/language/ui.py index a41e585..9123bf8 100644 --- a/blueprintcompiler/language/ui.py +++ b/blueprintcompiler/language/ui.py @@ -71,16 +71,6 @@ class UI(AstNode): raise MultipleErrors(self._gir_errors) - @validate() - def at_most_one_template(self): - if len(self.children[Template]) > 1: - for template in self.children[Template][1:]: - raise CompileError( - f"Only one template may be defined per file, but this file contains {len(self.children[Template])}", - template.group.tokens["name"].start, template.group.tokens["name"].end, - ) - - @validate() def unique_ids(self): passed = {}