]> git.saurik.com Git - bison.git/blobdiff - src/reader.c
Enable declaration of default %printer/%destructor. Make the parser
[bison.git] / src / reader.c
index 800ecc227876b0b060551ca804c3152a67e13c55..5084618ffb4a5ba465db4dce995620e32ea84574 100644 (file)
@@ -259,7 +259,7 @@ grammar_current_rule_begin (symbol *lhs, location loc)
 static bool
 symbol_should_be_used (symbol_list const *s)
 {
-  return (s->sym->destructor
+  return (symbol_destructor_get (s->sym)
          || (s->midrule && s->midrule->used));
 }
 
@@ -488,7 +488,11 @@ packgram (void)
         rule.  Thus, the midrule actions have already been scanned in order to
         set `used' flags for this rule's rhs, so grammar_rule_check will work
         properly.  */
-      grammar_rule_check (p);
+      /* Don't check the generated rule 0.  It has no action, so some rhs
+        symbols may appear unused, but the parsing algorithm ensures that
+        %destructor's are invoked appropriately.  */
+      if (p != grammar)
+       grammar_rule_check (p);
 
       for (p = p->next; p && p->sym; p = p->next)
        {