]> git.saurik.com Git - bison.git/blobdiff - src/symtab.c
In warnings, say "previous declaration" rather than "first
[bison.git] / src / symtab.c
index ef59c6eef70e1d7a95e40979970fca38ba47f2a5..b71a3fbad01f961948fe028bd1970117eb33b932 100644 (file)
@@ -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.                                                     |