X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/68cae94e0b4e83246787fc5a413f085513ae9160..dd60572a8b54ebc51421448f09f83f39bc0a4229:/src/symtab.c diff --git a/src/symtab.c b/src/symtab.c index ef59c6ee..b71a3fba 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -108,7 +108,7 @@ static void redeclaration (symbol* s, const char *what, location first, location second) { complain_at (second, _("%s redeclaration for %s"), what, s->tag); - complain_at (first, _("first declaration")); + complain_at (first, _("previous declaration")); } @@ -158,7 +158,7 @@ symbol_printer_set (symbol *sym, const char *printer, location loc) if (printer) { if (sym->printer) - redeclaration (sym, "%printer", sym->destructor_location, loc); + redeclaration (sym, "%printer", sym->printer_location, loc); sym->printer = printer; sym->printer_location = loc; } @@ -499,12 +499,11 @@ symbols_new (void) `----------------------------------------------------------------*/ symbol * -symbol_get (const char *key, location loc) +symbol_from_uniqstr (const uniqstr key, location loc) { symbol probe; symbol *entry; - key = uniqstr_new (key); probe.tag = key; entry = hash_lookup (symbol_table, &probe); @@ -518,6 +517,18 @@ symbol_get (const char *key, location loc) } +/*----------------------------------------------------------------. +| Find the symbol named KEY, and return it. If it does not exist | +| yet, create it. | +`----------------------------------------------------------------*/ + +symbol * +symbol_get (const char *key, location loc) +{ + return symbol_from_uniqstr (uniqstr_new (key), loc); +} + + /*------------------------------------------------------------------. | Generate a dummy nonterminal, whose name cannot conflict with the | | user's names. |