X-Git-Url: https://git.draconx.ca/gitweb/gob-dx.git/blobdiff_plain/853c670e4b839fd435507201f04d16080590a894..714b58ab4606ed4d40cec3702cb378938f8c883f:/src/checks.c diff --git a/src/checks.c b/src/checks.c index 9283309..062d635 100644 --- a/src/checks.c +++ b/src/checks.c @@ -32,13 +32,13 @@ #include "checks.h" static void -check_duplicate(Class *c, Node *node, char *id, int line_no, +check_duplicate(Class *c, Node *node, const char *id, int line_no, gboolean underscore) { GList *l; for(l = c->nodes; l != NULL; l = g_list_next(l)) { Node *n = l->data; - char *nid; + const char *nid; int nline_no; gboolean here_underscore = FALSE; if(n->type == METHOD_NODE) { @@ -183,12 +183,12 @@ check_bad_symbols(Class *c) } static void -check_duplicate_named(Class *c, Node *node, char *id, int line_no) +check_duplicate_named(Class *c, Node *node, const char *id, int line_no) { GList *l; for(l = c->nodes; l != NULL; l = g_list_next(l)) { Node *n = l->data; - char *nid; + const char *nid; int nline_no; if(n->type == METHOD_NODE) { Method *m = (Method *)n; @@ -582,3 +582,27 @@ count_initializers(Class *c) } return num; } + +gboolean +find_get_type (Class *c) +{ + GList *l; + for(l = c->nodes; l != NULL; l = g_list_next(l)) { + Node *n = l->data; + Method *m = (Method *)n; + if(n->type == METHOD_NODE && + strcmp (m->id, "get_type") == 0) { + if (m->method != REGULAR_METHOD || + m->scope != PUBLIC_SCOPE || + m->args != NULL) { + error_printf (GOB_ERROR, m->line_no, + "get_type method must be a " + "regular public method with " + "no arguments"); + } + return TRUE; + } + } + + return FALSE; +}