[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 7/8] style: isolate complain_symbol_undeclared
From: |
Akim Demaille |
Subject: |
[PATCH 7/8] style: isolate complain_symbol_undeclared |
Date: |
Wed, 2 Oct 2019 08:22:18 +0200 |
* 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 f14706e9..cae3e8a2 100644
--- a/src/symtab.c
+++ b/src/symtab.c
@@ -27,7 +27,11 @@
#include <hash.h>
#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 7f9dbc1c..6cd53ff3 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 <foo> qux
| ^~~
]])
--
2.23.0
- [PATCH 0/8] RFC: diagnostics: add suggestions, Akim Demaille, 2019/10/02
- [PATCH 1/8] TODO: update, Akim Demaille, 2019/10/02
- [PATCH 2/8] tests: use tput to get the number of columns, Akim Demaille, 2019/10/02
- [PATCH 3/8] diagnostics: isolate caret_set_file, Akim Demaille, 2019/10/02
- [PATCH 4/8] diagnostics: isolate caret_set_column, Akim Demaille, 2019/10/02
- [PATCH 5/8] diagnostics: display suggested update after the caret-info, Akim Demaille, 2019/10/02
- [PATCH 7/8] style: isolate complain_symbol_undeclared,
Akim Demaille <=
- [PATCH 6/8] style: simplify the handling of symbol and semantic_type tables, Akim Demaille, 2019/10/02
- [PATCH 8/8] diagnostics: suggest fixes for undeclared symbols, Akim Demaille, 2019/10/02