simplify the handling of <> and <*>'s code_props.

Currently they are treated in separated variables, contrary to other
<TYPE> code_props.  This duplicates code (and messages for translators)
uselessly, as demonstrated by the fact that thanks to this patch, now
useless <*> and <> code_props are reported like the others.

* src/parse-gram.y (generic_symlist_item): Treat "<*>" and "<>" as regular
type tags.
* src/symlist.h, src/symlist.c (symbol_list_default_tagged_new)
(symbol_list_default_tagless_new,SYMLIST_DEFAULT_TAGGED)
(SYMLIST_DEFAULT_TAGLESS): Remove.
* src/symtab.h, src/symtab.c (default_tagged_code_props)
(default_tagless_code_props, default_tagged_code_props_set)
(default_tagless_code_props_set): Remove.
(symbol_code_props_get): Default to <*> or <>'s code_props.

* tests/actions.at: Complete expected errors: there are new warnings.
* tests/input.at: Likewise.
(Useless printers or destructors): Extend.
This commit is contained in:
Akim Demaille
2012-07-22 17:51:25 +02:00
parent 70946cff5e
commit 9534d2be80
7 changed files with 93 additions and 149 deletions

View File

@@ -78,42 +78,6 @@ symbol_list_type_new (uniqstr type_name, location loc)
}
/*----------------------------------------.
| Create a list containing a <*> at LOC. |
`----------------------------------------*/
symbol_list *
symbol_list_default_tagged_new (location loc)
{
symbol_list *res = xmalloc (sizeof *res);
res->content_type = SYMLIST_DEFAULT_TAGGED;
res->location = res->sym_loc = loc;
res->named_ref = NULL;
res->next = NULL;
return res;
}
/*---------------------------------------.
| Create a list containing a <> at LOC. |
`---------------------------------------*/
symbol_list *
symbol_list_default_tagless_new (location loc)
{
symbol_list *res = xmalloc (sizeof *res);
res->content_type = SYMLIST_DEFAULT_TAGLESS;
res->location = res->sym_loc = loc;
res->named_ref = NULL;
res->next = NULL;
return res;
}
/*-----------------------------------------------------------------------.
| Print this list, for which every content_type must be SYMLIST_SYMBOL. |
`-----------------------------------------------------------------------*/
@@ -247,11 +211,5 @@ symbol_list_code_props_set (symbol_list *node, code_props_type kind,
if (node->content.sem_type->status == undeclared)
node->content.sem_type->status = used;
break;
case SYMLIST_DEFAULT_TAGGED:
default_tagged_code_props_set (kind, &cprops);
break;
case SYMLIST_DEFAULT_TAGLESS:
default_tagless_code_props_set (kind, &cprops);
break;
}
}