summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorValentin Tolmer <nitnelave1@gmail.com>2013-01-29 14:55:53 +0100
committerAkim Demaille <akim@lrde.epita.fr>2013-01-29 15:11:35 +0100
commit284bc49c832ffe6280907cb6c7788fa06bc58c7c (patch)
tree7b0c76359c32d8a3e90055f8d887d699e87c8f45 /tests
parentfbecd2ab59d461fbd943670338a5def4157e3364 (diff)
downloadbison-284bc49c832ffe6280907cb6c7788fa06bc58c7c.tar.gz
grammar: warn about unused precedence for symbols
Symbols with precedence but no associativity, and whose precedence is never used, can be declared with %token instead. The used precedence relationships are recorded and a warning about useless ones is issued. * src/conflicts.c (resolve_sr_conflict): Record precedence relation. * src/symtab.c, src/symtab.h (prec_nodes, init_prec_nodes) (symgraphlink_new, register_precedence_second_symbol) (print_precedence_warnings): New. Record relationships in a graph and warn about useless ones. * src/main.c (main): Print precedence warnings. * tests/conflicts.at: New.
Diffstat (limited to 'tests')
-rw-r--r--tests/conflicts.at53
1 files changed, 52 insertions, 1 deletions
diff --git a/tests/conflicts.at b/tests/conflicts.at
index 8633d8d4..d2fb298d 100644
--- a/tests/conflicts.at
+++ b/tests/conflicts.at
@@ -78,7 +78,15 @@ int main (void)
}
]])
-AT_FULL_COMPILE([input])
+AT_BISON_CHECK([-o input.c input.y], [], [],
+[[input.y:24.13: warning: useless precedence for R [-Wother]
+input.y:24.15: warning: useless precedence for S [-Wother]
+input.y:24.17: warning: useless precedence for T [-Wother]
+input.y:24.19: warning: useless precedence for U [-Wother]
+input.y:25.13: warning: useless precedence for V [-Wother]
+input.y:25.15: warning: useless precedence for W [-Wother]
+]])
+AT_COMPILE([input])
AT_PARSER_CHECK([./input])
@@ -87,6 +95,49 @@ AT_BISON_OPTION_POPDEFS
AT_CLEANUP
+## ---------------------------- ##
+## Useless precedence warning. ##
+## ---------------------------- ##
+
+AT_SETUP([Useless precedence warning])
+
+AT_DATA([[input.y]],
+[[%token A B
+%precedence Z
+%left X
+%precedence Y
+%left W
+%right V
+%nonassoc U
+%%
+a: b
+ | a U b
+ | f
+;
+b: c
+ | b V c
+;
+c: d
+ | c W d
+;
+d: A
+ | d X d
+ | d Y A
+;
+f: B
+ | f Z B
+;
+]])
+
+AT_BISON_CHECK([-fcaret -o input.c input.y], 0, [],
+[[input.y:2.13: warning: useless precedence for Z [-Wother]
+ %precedence Z
+ ^
+]])
+
+AT_CLEANUP
+
+
## ---------------- ##
## S/R in initial. ##
## ---------------- ##