[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03-fyi-expect.patch
From: |
Akim Demaille |
Subject: |
03-fyi-expect.patch |
Date: |
Mon, 26 Nov 2001 10:18:01 +0100 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* 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.
Index: NEWS
--- NEWS Sat, 24 Nov 2001 17:01:37 +0100 akim
+++ NEWS Sat, 24 Nov 2001 18:27:42 +0100 akim
@@ -3,6 +3,10 @@
Changes in version 1.30e:
+* %expect
+ When the number of shift/reduce conflicts is correct, don't issue
+ any warning.
+
* The verbose report includes the rule line numbers.
* Rule line numbers are fixed in traces.
Index: src/conflicts.c
--- src/conflicts.c Sat, 24 Nov 2001 17:01:37 +0100 akim
+++ src/conflicts.c Sat, 24 Nov 2001 18:24:32 +0100 akim
@@ -439,6 +439,11 @@
{
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 @@
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 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
{
- 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);
- }
+ 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: tests/regression.at
--- tests/regression.at Thu, 22 Nov 2001 21:32:24 +0100 akim
+++ tests/regression.at Sat, 24 Nov 2001 18:26:37 +0100 akim
@@ -275,9 +275,7 @@ exp: exp OP exp | NUM;
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 03-fyi-expect.patch,
Akim Demaille <=