From 126c4622de27197bbe4c6a713f28d114839e636f Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 30 Sep 2019 08:45:50 +0200 Subject: [PATCH] style: isolate complain_symbol_undeclared * src/symtab.c (complain_symbol_undeclared): New. Use it. Use quote on the guilty symbol (like GCC does, and we also do elsewhere). * tests/input.at: Adjust. --- src/symtab.c | 21 +++++++++++++++------ tests/input.at | 8 ++++---- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/symtab.c b/src/symtab.c index 1e28dd4c..c7d308ac 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -27,7 +27,11 @@ #include #include "complain.h" +#include "getargs.h" #include "gram.h" +#include "quote.h" + + /*----------------------------------------------------------------. | Symbols sorted by tag. Allocated by table_sort, after which no | @@ -317,6 +321,16 @@ complain_class_redeclared (symbol *sym, symbol_class class, location second) } } +static void +complain_symbol_undeclared (symbol *sym) +{ + assert (sym->content->status != declared); + complain (&sym->location, + sym->content->status == needed ? complaint : Wother, + _("symbol %s is used, but is not defined as a token" + " and has no rules"), + quote (sym->tag)); +} void symbol_location_as_lhs_set (symbol *sym, location loc) @@ -520,12 +534,7 @@ symbol_check_defined (symbol *sym) sym_content *s = sym->content; if (s->class == unknown_sym) { - assert (s->status != declared); - complain (&sym->location, - s->status == needed ? complaint : Wother, - _("symbol %s is used, but is not defined as a token" - " and has no rules"), - sym->tag); + complain_symbol_undeclared (sym); s->class = nterm_sym; s->number = nvars++; } diff --git a/tests/input.at b/tests/input.at index 20a0c9ba..e5d7666b 100644 --- a/tests/input.at +++ b/tests/input.at @@ -822,16 +822,16 @@ exp: bar; ]]) AT_BISON_CHECK([-fcaret input.y], [1], [], -[[input.y:2.16-18: error: symbol bar is used, but is not defined as a token and has no rules +[[input.y:2.16-18: error: symbol 'bar' is used, but is not defined as a token and has no rules 2 | %destructor {} bar | ^~~ -input.y:1.17-19: warning: symbol baz is used, but is not defined as a token and has no rules [-Wother] +input.y:1.17-19: warning: symbol 'baz' is used, but is not defined as a token and has no rules [-Wother] 1 | %printer {} foo baz | ^~~ -input.y:1.13-15: warning: symbol foo is used, but is not defined as a token and has no rules [-Wother] +input.y:1.13-15: warning: symbol 'foo' is used, but is not defined as a token and has no rules [-Wother] 1 | %printer {} foo baz | ^~~ -input.y:3.13-15: warning: symbol qux is used, but is not defined as a token and has no rules [-Wother] +input.y:3.13-15: warning: symbol 'qux' is used, but is not defined as a token and has no rules [-Wother] 3 | %type qux | ^~~ ]])