]> git.saurik.com Git - bison.git/blobdiff - tests/input.at
Finish implementation of per-type %destructor/%printer. Discussed
[bison.git] / tests / input.at
index 5ddd3b993cd2337bb05cf7386bc4046aa86e447f..7b0097583419be8ed469e00657669591804c0741 100644 (file)
@@ -175,8 +175,8 @@ AT_CLEANUP
 AT_SETUP([Default %printer and %destructor redeclared])
 
 AT_DATA([[input.y]],
-[[%destructor { destroy ($$); } %symbol-default
-%printer { destroy ($$); } %symbol-default
+[[%destructor { destroy ($$); } %symbol-default %symbol-default
+%printer { destroy ($$); } %symbol-default %symbol-default
 
 %destructor { destroy ($$); } %symbol-default
 %printer { destroy ($$); } %symbol-default
@@ -190,7 +190,11 @@ start: ;
 ]])
 
 AT_CHECK([bison input.y], [1], [],
-[[input.y:4.13-29: redeclaration for default %destructor
+[[input.y:1.13-29: redeclaration for default %destructor
+input.y:1.13-29: previous declaration
+input.y:2.10-26: redeclaration for default %printer
+input.y:2.10-26: previous declaration
+input.y:4.13-29: redeclaration for default %destructor
 input.y:1.13-29: previous declaration
 input.y:5.10-26: redeclaration for default %printer
 input.y:2.10-26: previous declaration
@@ -203,6 +207,49 @@ input.y:5.10-26: previous declaration
 AT_CLEANUP
 
 
+## ---------------------------------------------- ##
+## Per-type %printer and %destructor redeclared.  ##
+## ---------------------------------------------- ##
+
+AT_SETUP([Per-type %printer and %destructor redeclared])
+
+AT_DATA([[input.y]],
+[[%destructor { destroy ($$); } <field1> <field2>
+%printer { destroy ($$); } <field1> <field2>
+
+%destructor { destroy ($$); } <field1> <field1>
+%printer { destroy ($$); } <field2> <field2>
+
+%%
+
+start: ;
+
+%destructor { destroy ($$); } <field2> <field1>;
+%printer { destroy ($$); } <field2> <field1>;
+]])
+
+AT_CHECK([bison input.y], [1], [],
+[[input.y:4.13-29: %destructor redeclaration for <field1>
+input.y:1.13-29: previous declaration
+input.y:4.13-29: %destructor redeclaration for <field1>
+input.y:4.13-29: previous declaration
+input.y:5.10-26: %printer redeclaration for <field2>
+input.y:2.10-26: previous declaration
+input.y:5.10-26: %printer redeclaration for <field2>
+input.y:5.10-26: previous declaration
+input.y:11.13-29: %destructor redeclaration for <field1>
+input.y:4.13-29: previous declaration
+input.y:11.13-29: %destructor redeclaration for <field2>
+input.y:1.13-29: previous declaration
+input.y:12.10-26: %printer redeclaration for <field1>
+input.y:2.10-26: previous declaration
+input.y:12.10-26: %printer redeclaration for <field2>
+input.y:5.10-26: previous declaration
+]])
+
+AT_CLEANUP
+
+
 ## ---------------------------------------- ##
 ## Unused values with default %destructor.  ##
 ## ---------------------------------------- ##
@@ -227,6 +274,31 @@ input.y:6.6-8: warning: unset value: $$
 AT_CLEANUP
 
 
+## ----------------------------------------- ##
+## Unused values with per-type %destructor.  ##
+## ----------------------------------------- ##
+
+AT_SETUP([Unused values with per-type %destructor])
+
+AT_DATA([[input.y]],
+[[%destructor { destroy ($$); } <field1>
+%type <field1> start end
+
+%%
+
+start: end end { $1; } ;
+end: { }  ;
+]])
+
+AT_CHECK([bison input.y], [0], [],
+[[input.y:6.8-22: warning: unset value: $$
+input.y:6.8-22: warning: unused value: $2
+input.y:7.6-8: warning: unset value: $$
+]])
+
+AT_CLEANUP
+
+
 ## ---------------------- ##
 ## Incompatible Aliases.  ##
 ## ---------------------- ##