bison-patches
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]