mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
warnings: raise warning for useless printers or destructors
* src/scan-code.h (code_props): Add field 'is_used'. (CODE_PROPS_NONE_INIT): Adjust. * src/scan-code.l (code_props_plain_init, code_props_symbol_action_init) (code_props_rule_action_init): Instead of implementing several times the initialization of the code_props structures, use code_props_none_init. * src/symtab.c (symbol_check_defined): If a symbol does not have a destructor (resp. printer) but has a type which has a destructor (resp. printer), then set field 'is_used' to true. (semantic_type_check_defined): If a type has a destructor (resp. printer) but all symbols of this type have already a destructor (resp. printer), then raise a warning. * tests/input.at (Useless printers or destructors): New. Signed-off-by: Akim Demaille <akim@lrde.epita.fr>
This commit is contained in:
committed by
Akim Demaille
parent
9641b918ba
commit
ea9a35c605
@@ -888,24 +888,20 @@ void
|
||||
code_props_plain_init (code_props *self, char const *code,
|
||||
location code_loc)
|
||||
{
|
||||
code_props_none_init (self);
|
||||
self->kind = CODE_PROPS_PLAIN;
|
||||
self->code = code;
|
||||
self->location = code_loc;
|
||||
self->is_value_used = false;
|
||||
self->rule = NULL;
|
||||
self->named_ref = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
code_props_symbol_action_init (code_props *self, char const *code,
|
||||
location code_loc)
|
||||
{
|
||||
code_props_none_init (self);
|
||||
self->kind = CODE_PROPS_SYMBOL_ACTION;
|
||||
self->code = code;
|
||||
self->location = code_loc;
|
||||
self->is_value_used = false;
|
||||
self->rule = NULL;
|
||||
self->named_ref = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -913,10 +909,10 @@ code_props_rule_action_init (code_props *self, char const *code,
|
||||
location code_loc, symbol_list *rule,
|
||||
named_ref *name, bool is_predicate)
|
||||
{
|
||||
code_props_none_init (self);
|
||||
self->kind = CODE_PROPS_RULE_ACTION;
|
||||
self->code = code;
|
||||
self->location = code_loc;
|
||||
self->is_value_used = false;
|
||||
self->rule = rule;
|
||||
self->named_ref = name;
|
||||
self->is_predicate = is_predicate;
|
||||
|
||||
Reference in New Issue
Block a user