]> git.draconx.ca Git - gob-dx.git/blobdiff - src/checks.c
Release 2.0.16
[gob-dx.git] / src / checks.c
index 63f44cc6f28babdcb66640b17eb8c344c8a92470..c651e9a5fd153a01c160d25e2516b808a4c8d5e7 100644 (file)
@@ -335,11 +335,11 @@ check_signal_args (Class *c)
 
                        for (l = m->gtktypes; l != NULL; l = l->next) {
                                if (strcmp (l->data, "BOXED") == 0) {
-                                       error_printf (GOB_ERROR, m->line_no,
-                                                     "BOXED not allowed as "
+                                       error_printf (GOB_ERROR, m->line_no,
+                                                     "BOXED not allowed as "
                                                      "a signal argument, use "
-                                                     "POINTER");
-                                       continue;
+                                                     "POINTER, or BOXED_*");
+                                       continue;
                                } else if (strcmp (l->data, "FLAGS") == 0) {
                                        error_printf (GOB_ERROR, m->line_no,
                                                      "FLAGS not allowed as "
@@ -478,6 +478,30 @@ check_func_arg_checks(Class *c)
        }
 }
 
+void
+check_func_attrs(Class *c)
+{
+  GList *li;
+  for (li = c->nodes; li != NULL; li = li->next) {
+    Node *n = li->data;
+    if (n->type == METHOD_NODE) {
+      Method *m = (Method *)n;
+      if ((m->method == INIT_METHOD ||
+          m->method == CLASS_INIT_METHOD)
+         && (m->funcattrs != NULL && strlen(m->funcattrs) != 0)) {
+       /* This is actually dead code at the moment, since the parser
+          doesn't accept attributes to the init or class_init
+          syntactic forms anyway.  But it could easily be made to do
+          so, and also for virtual override and signal methods, and
+          then we could give kinder error messages here.  */
+       error_print (GOB_ERROR, m->line_no,
+                    "function attributes (G_GNUC_PRINTF, etc.) aren't "
+                     "supported for the init or class_init methods");
+      }
+    }
+  }
+}
+
 void
 check_for_class_destructors (Class *c)
 {