]> git.saurik.com Git - bison.git/commitdiff
* src/conflicts.c (conflicts_print): Don't complain at all when
authorAkim Demaille <akim@epita.fr>
Mon, 26 Nov 2001 09:32:32 +0000 (09:32 +0000)
committerAkim Demaille <akim@epita.fr>
Mon, 26 Nov 2001 09:32:32 +0000 (09:32 +0000)
there are no reduce/reduce conflicts, and as many shift/reduce
conflicts as expected.
* tests/regression.at (%expect right): Adjust.

ChangeLog
src/conflicts.c
tests/regression.at

index 49b0f394ec6337cff09ea0deb0bdd6298bcf0509..f425d982cb09b20a5f00f1c7bd20f72e16c3d727 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-11-26  Akim Demaille  <akim@epita.fr>
+
+       * src/conflicts.c (conflicts_print): Don't complain at all when
+       there are no reduce/reduce conflicts, and as many shift/reduce
+       conflicts as expected.
+       * tests/regression.at (%expect right): Adjust.
+
 2001-11-25  Marc Autret  <autret_m@epita.fr>
 
        * doc/bison.texinfo (Mystery Conflicts): Hint '-v' use.
index 6e2671048042d92a69efd660272bc68a30bba762..b6bacb94cde8d4e9444eb43f6e57e49d540e2c92 100644 (file)
@@ -439,6 +439,11 @@ conflicts_print (void)
 {
   int i;
 
+  /* Is the number of SR conflicts OK?  Either EXPECTED_CONFLICTS is
+     not set, and then we want 0 SR, or else it is specified, in which
+     case we want equality.  */
+  int src_ok = 0;
+
   int src_total = 0;
   int rrc_total = 0;
 
@@ -450,31 +455,34 @@ conflicts_print (void)
        rrc_total += count_rr_conflicts (i);
       }
 
+  src_ok = src_total == (expected_conflicts == -1 ? 0 : expected_conflicts);
+
+  /* If there are no RR conflicts, and as many SR conflicts as
+     expected, then there is nothing to report.  */
+  if (!rrc_total && src_ok)
+    return;
+
   /* Report the total number of conflicts on STDERR.  */
-  if (src_total || rrc_total)
+  if (yacc_flag)
     {
-      if (yacc_flag)
-       {
-         /* If invoked with `--yacc', use the output format specified by
-            POSIX.  */
-         fprintf (stderr, _("conflicts: "));
-         if (src_total > 0)
-           fprintf (stderr, _(" %d shift/reduce"), src_total);
-         if (src_total > 0 && rrc_total > 0)
-           fprintf (stderr, ",");
-         if (rrc_total > 0)
-           fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
-         putc ('\n', stderr);
-       }
-      else
-       {
-         fprintf (stderr, _("%s contains "), infile);
-         fputs (conflict_report (src_total, rrc_total), stderr);
-       }
+      /* If invoked with `--yacc', use the output format specified by
+        POSIX.  */
+      fprintf (stderr, _("conflicts: "));
+      if (src_total > 0)
+       fprintf (stderr, _(" %d shift/reduce"), src_total);
+      if (src_total > 0 && rrc_total > 0)
+       fprintf (stderr, ",");
+      if (rrc_total > 0)
+       fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
+      putc ('\n', stderr);
+    }
+  else
+    {
+      fprintf (stderr, _("%s contains "), infile);
+      fputs (conflict_report (src_total, rrc_total), stderr);
     }
 
-  if (expected_conflicts != -1
-      && src_total != expected_conflicts)
+  if (expected_conflicts != -1 && !src_ok)
     {
       complain_message_count++;
       fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n",
index 2de592b27052c55125d529008c12678720b97a16..a18bfc451dfed1986eedce79d332c91916e0606a 100644 (file)
@@ -275,9 +275,7 @@ AT_DATA([input.y],
 exp: exp OP exp | NUM;
 ]])
 
-AT_CHECK([bison input.y -o input.c], 0, [],
-[input.y contains 1 shift/reduce conflict.
-])
+AT_CHECK([bison input.y -o input.c], 0)
 AT_CLEANUP