mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 06:43:03 +00:00
warnings: useless semantic types
* src/symtab.h (symbol_list): Represent semantic types as structure 'semantic_type'. * src/symlist.c (symbol_list_type_new): Allocate this structure. (symbol_list_code_props_set): Set this semantic type's status to used if it was not declared. * src/symtab.c (semantic_types_sorted): New. (semantic_type_new): Set the new semantic type's location appropriately. (symbol_check_defined): If a symbol has a type, then set this type's status to "declared". (semantic_type_check_defined, semantic_type_check_defined_processor): Same as symbol_check_defined and symbol_check_defined_processor, but for semantic types. (symbol_check_defined): Check semantic types usefulness. * src/symtab.h (semantic_type): New fields 'location' and 'status'. * src/symtab.h, src/symtab.c (semantic_type_new) (semantic_type_from_uniqstr, semantic_type_get): Accept a location as a supplementary argument. * tests/input.at (Unassociated types used for printer of destructor): New. * tests/c++.at (AT_CHECK_VARIANTS): Fix an error caught by this commit.
This commit is contained in:
committed by
Akim Demaille
parent
423ca9b50e
commit
9641b918ba
12
src/symtab.h
12
src/symtab.h
@@ -232,6 +232,13 @@ typedef struct {
|
||||
/** The key, name of the semantic type. */
|
||||
uniqstr tag;
|
||||
|
||||
/** The location of its first occurence. */
|
||||
location location;
|
||||
|
||||
/** Its status : "undeclared", "used" or "declared".
|
||||
It cannot be "needed". */
|
||||
status status;
|
||||
|
||||
/** Any \c %destructor and %printer declared for this
|
||||
semantic type. */
|
||||
code_props props[CODE_PROPS_SIZE];
|
||||
@@ -239,10 +246,11 @@ typedef struct {
|
||||
} semantic_type;
|
||||
|
||||
/** Fetch (or create) the semantic type associated to KEY. */
|
||||
semantic_type *semantic_type_from_uniqstr (const uniqstr key);
|
||||
semantic_type *semantic_type_from_uniqstr (const uniqstr key,
|
||||
const location *loc);
|
||||
|
||||
/** Fetch (or create) the semantic type associated to KEY. */
|
||||
semantic_type *semantic_type_get (const char *key);
|
||||
semantic_type *semantic_type_get (const char *key, const location *loc);
|
||||
|
||||
/** Set the \c destructor or \c printer associated with \c type. */
|
||||
void semantic_type_code_props_set (semantic_type *type,
|
||||
|
||||
Reference in New Issue
Block a user