]> git.saurik.com Git - bison.git/blobdiff - src/reader.c
fix for printers and destructors.
[bison.git] / src / reader.c
index 85f686ef7c71d4c2179683eea784351c0c2bfa1c..c456cbff17c130ad57e0c8e72210035d9a5d3f1c 100644 (file)
@@ -257,7 +257,7 @@ grammar_current_rule_begin (symbol *lhs, location loc,
 static bool
 symbol_should_be_used (symbol_list const *s, bool *midrule_warning)
 {
-  if (symbol_destructor_get (s->content.sym)->code)
+  if (symbol_code_props_get (s->content.sym, destructor)->code)
     return true;
   if ((s->midrule && s->midrule->action_props.is_value_used)
       || (s->midrule_parent_rule
@@ -333,7 +333,7 @@ grammar_rule_check (const symbol_list *r)
      it for char literals and strings, which are always tokens.  */
   if (r->ruleprec
       && r->ruleprec->tag[0] != '\'' && r->ruleprec->tag[0] != '"'
-      && !r->ruleprec->declared && !r->ruleprec->prec)
+      && r->ruleprec->status != declared && !r->ruleprec->prec)
     warn_at (r->location, _("token for %%prec is not defined: %s"),
              r->ruleprec->tag);
 }
@@ -470,6 +470,8 @@ grammar_current_rule_symbol_append (symbol *sym, location loc,
   p = grammar_symbol_append (sym, loc);
   if (name)
     assign_named_ref(p, name);
+  if (sym->status == undeclared || sym->status == used)
+    sym->status = needed;
 }
 
 /* Attach an ACTION to the current rule.  */
@@ -638,7 +640,7 @@ prepare_percent_define_front_end_variables (void)
        default.  */
     muscle_percent_define_default ("lr.type", "lalr");
     lr_type = muscle_percent_define_get ("lr.type");
-    if (0 != strcmp (lr_type, "canonical-lr"))
+    if (STRNEQ (lr_type, "canonical-lr"))
       muscle_percent_define_default ("lr.default-reductions", "most");
     else
       muscle_percent_define_default ("lr.default-reductions", "accepting");