]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
gtkmodule: Throw an error if the ui resource has no template
authorTimm Bäder <mail@baedert.org>
Sun, 8 Sep 2013 20:04:13 +0000 (22:04 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Mon, 7 Oct 2013 20:01:07 +0000 (22:01 +0200)
codegen/valagtkmodule.vala

index aaff2b5ea433f0f5e1da2311ab251b4c43a0ac9f..66139f14d5751c606fae853f952b60f63673dc1d 100644 (file)
@@ -58,7 +58,7 @@ public class Vala.GtkModule : GSignalModule {
                if (gresource_to_file_map != null) {
                        return;
                }
-               gresource_to_file_map = new HashMap<string, string>(str_hash, str_equal);               
+               gresource_to_file_map = new HashMap<string, string>(str_hash, str_equal);
                foreach (var gresource in context.gresources) {
                        if (!FileUtils.test (gresource, FileTest.EXISTS)) {
                                Report.error (null, "GResources file `%s' does not exist".printf (gresource));
@@ -106,9 +106,13 @@ public class Vala.GtkModule : GSignalModule {
                MarkupReader reader = new MarkupReader (ui_file);
                Class current_class = null;
 
+               bool template_tag_found = false;
                MarkupTokenType current_token = reader.read_token (null, null);
                while (current_token != MarkupTokenType.EOF) {
                        if (current_token == MarkupTokenType.START_ELEMENT && (reader.name == "template" || reader.name == "object")) {
+                               if (reader.name == "template") {
+                                       template_tag_found = true;
+                               }
                                var class_name = reader.get_attribute ("class");
                                if (class_name != null) {
                                        current_class = cclass_to_vala_map.get (class_name);
@@ -130,6 +134,10 @@ public class Vala.GtkModule : GSignalModule {
                        }
                        current_token = reader.read_token (null, null);
                }
+
+               if (!template_tag_found) {
+                       Report.error (node.source_reference, "ui resource `%s' does not describe a valid composite template".printf (ui_resource));
+               }
        }
 
        private bool is_gtk_template (Class cl) {
@@ -263,7 +271,7 @@ public class Vala.GtkModule : GSignalModule {
                }
 
                push_context (class_init_context);
-                       
+
                if (sig != null) {
                        sig.check (context);
                        var method_type = new MethodType (m);