]> git.saurik.com Git - bison.git/blobdiff - tests/conflicts.at
(%expect with reduce conflicts): New test.
[bison.git] / tests / conflicts.at
index ee5fd0267774050705320c26f20ae0b0ad9d8d4a..ec9847aaf583636f5fe4d1a3fefb2289a9c05dec 100644 (file)
@@ -38,7 +38,7 @@ e: 'e' | /* Nothing. */;
 ]])
 
 AT_CHECK([bison -o input.c input.y], 0, [],
 ]])
 
 AT_CHECK([bison -o input.c input.y], 0, [],
-[[input.y:4.8: warning: rule never reduced because of conflicts: e: /* empty */
+[[input.y:4.9: warning: rule never reduced because of conflicts: e: /* empty */
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP
@@ -50,14 +50,9 @@ AT_CLEANUP
 
 AT_SETUP([%nonassoc and eof])
 
 
 AT_SETUP([%nonassoc and eof])
 
-AT_DATA([input.y],
+AT_DATA_GRAMMAR([input.y],
 [[
 %{
 [[
 %{
-#include <config.h>
-/* We don't need perfect functions for these tests. */
-#undef malloc
-#undef memcmp
-#undef realloc
 #include <stdio.h>
 
 #if STDC_HEADERS
 #include <stdio.h>
 
 #if STDC_HEADERS
@@ -113,16 +108,16 @@ AT_PARSER_CHECK([./input '0<0'])
 # no one has ever spotted it!  The messages are *wrong*: there should
 # be nothing there, it should be expected eof.
 AT_PARSER_CHECK([./input '0<0<0'], [1], [],
 # no one has ever spotted it!  The messages are *wrong*: there should
 # be nothing there, it should be expected eof.
 AT_PARSER_CHECK([./input '0<0<0'], [1], [],
-         [parse error, unexpected '<', expecting '<' or '>'
+         [syntax error, unexpected '<', expecting '<' or '>'
 ])
 
 AT_PARSER_CHECK([./input '0>0'])
 AT_PARSER_CHECK([./input '0>0>0'], [1], [],
 ])
 
 AT_PARSER_CHECK([./input '0>0'])
 AT_PARSER_CHECK([./input '0>0>0'], [1], [],
-         [parse error, unexpected '>', expecting '<' or '>'
+         [syntax error, unexpected '>', expecting '<' or '>'
 ])
 
 AT_PARSER_CHECK([./input '0<0>0'], [1], [],
 ])
 
 AT_PARSER_CHECK([./input '0<0>0'], [1], [],
-         [parse error, unexpected '>', expecting '<' or '>'
+         [syntax error, unexpected '>', expecting '<' or '>'
 ])
 
 AT_CLEANUP
 ])
 
 AT_CLEANUP
@@ -375,7 +370,7 @@ id : '0';
 
 AT_CHECK([bison -o input.c --report=all input.y], 0, [],
 [[input.y: warning: 1 reduce/reduce conflict
 
 AT_CHECK([bison -o input.c --report=all input.y], 0, [],
 [[input.y: warning: 1 reduce/reduce conflict
-input.y:4.4-8: warning: rule never reduced because of conflicts: id: '0'
+input.y:4.6-8: warning: rule never reduced because of conflicts: id: '0'
 ]])
 
 # Check the contents of the report.
 ]])
 
 # Check the contents of the report.
@@ -532,3 +527,23 @@ AT_CHECK([bison -o input.c input.y], 1, [],
 input.y: expected 2 shift/reduce conflicts
 ])
 AT_CLEANUP
 input.y: expected 2 shift/reduce conflicts
 ])
 AT_CLEANUP
+
+
+## ------------------------------ ##
+## %expect with reduce conflicts  ##
+## ------------------------------ ##
+
+AT_SETUP([%expect with reduce conflicts])
+
+AT_DATA([input.y],
+[[%expect 0
+%%
+program: a 'a' | a a;
+a: 'a';
+]])
+
+AT_CHECK([bison -o input.c input.y], 1, [],
+[input.y: warning: 1 reduce/reduce conflict
+input.y: expected 0 reduce/reduce conflicts
+])
+AT_CLEANUP