summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2019-01-17 06:44:51 +0100
committerAkim Demaille <akim.demaille@gmail.com>2019-01-17 18:09:38 +0100
commit5879c8dc5a391ce3d9de68f50326121babc8d1be (patch)
tree56141ef6a8ce51e81fa1880ef3355b2867d89e78
parentd5d148630ad3d10d68a9e7634c1c8f7767335938 (diff)
downloadbison-5879c8dc5a391ce3d9de68f50326121babc8d1be.tar.gz
fixits: handle per-rule duplicates
* src/complain.c (duplicate_rule_directive): Here. * tests/actions.at (Invalid uses of %empty): Check it.
-rw-r--r--src/complain.c1
-rw-r--r--tests/actions.at27
2 files changed, 28 insertions, 0 deletions
diff --git a/src/complain.c b/src/complain.c
index d623bb45..82258c62 100644
--- a/src/complain.c
+++ b/src/complain.c
@@ -421,4 +421,5 @@ duplicate_rule_directive (char const *directive,
complain_indent (&second, complaint, &i, _("only one %s allowed per rule"), directive);
i += SUB_INDENT;
complain_indent (&first, complaint, &i, _("previous declaration"));
+ fixits_register (&second, "");
}
diff --git a/tests/actions.at b/tests/actions.at
index e5654a47..aa1eb3aa 100644
--- a/tests/actions.at
+++ b/tests/actions.at
@@ -174,8 +174,35 @@ AT_BISON_CHECK([-fcaret one.y], [1], [],
one.y:11.3-8: previous declaration
%empty {} %empty
^~~~~~
+one.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
]])
+AT_BISON_CHECK([-fcaret -u one.y], [1], [],
+[[one.y:11.13-18: error: only one %empty allowed per rule
+ %empty {} %empty
+ ^~~~~~
+one.y:11.3-8: previous declaration
+ %empty {} %empty
+ ^~~~~~
+bison: file 'one.y' was updated (backup: 'one.y~')
+]])
+
+AT_CHECK([cat one.y], [],
+[[%code top {
+/* Load config.h, and adjust to the compiler.
+ We used to do it here, but each time we add a new line,
+ we have to adjust all the line numbers in error messages.
+ It's simpler to use a constant include to a varying file. */
+#include <testsuite.h>
+}
+
+%%
+exp:
+ %empty {} @&t@
+;
+]])
+
+
AT_DATA_GRAMMAR([[two.y]],
[[%%
exp: