mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
glr2.cc: run the glr-regression tests
When installed on master as of 2020-12-05 (on top of "glr2.cc: fix
when the stack is not expandable", almost all the GLR regression tests
fail (with a SEGV):
709: Badly Collapsed GLR States: glr2.cc FAILED (glr-regression.at:130)
712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc FAILED (glr-regression.at:275)
715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:404)
718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:502)
721: User destructor for unresolved GLR semantic value: glr2.cc FAILED (glr-regression.at:566)
724: User destructor after an error during a split parse: glr2.cc FAILED (glr-regression.at:624)
727: Duplicated user destructor for lookahead: glr2.cc FAILED (glr-regression.at:724)
730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc FAILED (glr-regression.at:823)
733: No users destructors if stack 0 deleted: glr2.cc FAILED (glr-regression.at:911)
736: Corrupted semantic options if user action cuts parse: glr2.cc FAILED (glr-regression.at:974)
739: Undesirable destructors if user action cuts parse: glr2.cc FAILED (glr-regression.at:1042)
742: Leaked semantic values if user action cuts parse: glr2.cc FAILED (glr-regression.at:1173)
748: Incorrect lookahead during nondeterministic GLR: glr2.cc FAILED (glr-regression.at:1546)
751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1639)
754: Leaked lookahead after nondeterministic parse syntax error: glr2.cc FAILED (glr-regression.at:1710)
757: Uninitialized location when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1794)
766: Predicates: glr2.cc FAILED (glr-regression.at:2045)
These pass:
745: Incorrect lookahead during deterministic GLR: glr2.cc ok
760: Missed %merge type warnings when LHS type is declared later: glr2.cc ok
763: Ambiguity reports: glr2.cc ok
With Valentin Tolmer's "glr2.cc: Fix memory corruption bug" commit,
these test fail "gracefully":
712: Improper handling of embedded actions and dollar(-N) in GLR parsers: glr2.cc FAILED (glr-regression.at:268)
730: Incorrectly initialized location for empty right-hand side in GLR: glr2.cc FAILED (glr-regression.at:816)
748: Incorrect lookahead during nondeterministic GLR: glr2.cc FAILED (glr-regression.at:1539)
And these do not end:
709: Badly Collapsed GLR States: glr2.cc FAILED (glr-regression.at:123)
715: Improper merging of GLR delayed action sets: glr2.cc FAILED (glr-regression.at:397)
718: Duplicate representation of merged trees: glr2.cc FAILED (glr-regression.at:495)
751: Leaked semantic values when reporting ambiguity: glr2.cc FAILED (glr-regression.at:1632)
With "tests: glr2.cc: run the glr-regression tests", none loop, and
709, 715, and 751 pass. Only 718 still fails.
* tests/glr-regression.at: Run all the tests with glr2.cc.
* tests/local.at (AT_GLR2_CC_IF): New.
This commit is contained in:
@@ -18,6 +18,13 @@
|
||||
|
||||
AT_BANNER([[GLR Regression Tests]])
|
||||
|
||||
# You might wonder what's the point of having names different for each
|
||||
# test case. When some endlessly loop, it is nice to see their "name"
|
||||
# in ps.
|
||||
|
||||
# AT_YYPARSE_DEFINE
|
||||
# -----------------
|
||||
# Wrap the C++ parser in a C-like function interface.
|
||||
m4_pushdef([AT_YYPARSE_DEFINE],
|
||||
[AT_CXX_IF([[
|
||||
static int
|
||||
@@ -39,6 +46,7 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Badly Collapsed GLR States: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser $1])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr1.y],
|
||||
[[/* Regression Test: Improper state compression */
|
||||
/* Reported by Scott McPeak */
|
||||
@@ -120,6 +128,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -133,6 +142,8 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Improper handling of embedded actions and dollar(-N) in GLR parsers: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser $1])
|
||||
AT_GLR2_CC_IF([AT_XFAIL_IF([true])])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr2a.y],
|
||||
[[/* Regression Test: Improper handling of embedded actions and $-N */
|
||||
/* Reported by S. Eken */
|
||||
@@ -264,6 +275,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -276,6 +288,7 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Improper merging of GLR delayed action sets: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser $1])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr3.y],
|
||||
[[/* Regression Test: Improper merging of GLR delayed action sets. */
|
||||
/* Reported by M. Rosien */
|
||||
@@ -392,6 +405,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -405,6 +419,8 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Duplicate representation of merged trees: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser $1])
|
||||
AT_GLR2_CC_IF([AT_XFAIL_IF([true])])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr4.y],
|
||||
[[
|
||||
%define parse.assert
|
||||
@@ -489,6 +505,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -552,6 +569,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -609,6 +627,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -623,6 +642,7 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Duplicated user destructor for lookahead: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser $1])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr7.y],
|
||||
[[
|
||||
%code requires {
|
||||
@@ -708,6 +728,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -724,6 +745,8 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Incorrectly initialized location for empty right-hand side in GLR: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser %locations $1])
|
||||
AT_GLR2_CC_IF([AT_XFAIL_IF([true])])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr8.y],
|
||||
[[
|
||||
%code {
|
||||
@@ -806,6 +829,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -893,6 +917,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -955,6 +980,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1022,6 +1048,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1152,6 +1179,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1293,6 +1321,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1306,6 +1335,8 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Incorrect lookahead during nondeterministic GLR: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser %locations $1])
|
||||
AT_GLR2_CC_IF([AT_XFAIL_IF([true])])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr14.y],
|
||||
[[
|
||||
/* Tests:
|
||||
@@ -1411,7 +1442,7 @@ stack_explosion:
|
||||
alt1:
|
||||
'd' no_look {
|
||||
USE ($][1);
|
||||
if (yychar != 'd' && yychar != YYEOF)
|
||||
if (yychar != 'd' && yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEOF)
|
||||
{
|
||||
fprintf (stderr, "Incorrect lookahead during stack explosion.\n");
|
||||
}
|
||||
@@ -1420,7 +1451,7 @@ alt1:
|
||||
alt2:
|
||||
'd' no_look {
|
||||
USE ($][1);
|
||||
if (yychar != 'd' && yychar != YYEOF)
|
||||
if (yychar != 'd' && yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEOF)
|
||||
{
|
||||
fprintf (stderr, "Incorrect lookahead during stack explosion.\n");
|
||||
}
|
||||
@@ -1429,7 +1460,7 @@ alt2:
|
||||
alt3:
|
||||
'd' no_look {
|
||||
USE ($][1);
|
||||
if (yychar != 'd' && yychar != YYEOF)
|
||||
if (yychar != 'd' && yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEOF)
|
||||
{
|
||||
fprintf (stderr, "Incorrect lookahead during stack explosion.\n");
|
||||
}
|
||||
@@ -1437,7 +1468,7 @@ alt3:
|
||||
;
|
||||
no_look:
|
||||
{
|
||||
if (yychar != YYEMPTY)
|
||||
if (yychar != ]AT_GLR2_CC_IF([yy::parser::token::])[YYEMPTY)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"Found lookahead where shouldn't during stack explosion.\n");
|
||||
@@ -1523,6 +1554,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1536,6 +1568,7 @@ m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([Leaked semantic values when reporting ambiguity: $1])
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%glr-parser $1])
|
||||
|
||||
AT_DATA_GRAMMAR([glr-regr15.y],
|
||||
[[
|
||||
%define parse.assert
|
||||
@@ -1615,6 +1648,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1685,6 +1719,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1768,6 +1803,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c" %define api.pure])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1828,6 +1864,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -1940,6 +1977,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -2016,6 +2054,7 @@ AT_CLEANUP
|
||||
|
||||
AT_TEST([%skeleton "glr.c"])
|
||||
AT_TEST([%skeleton "glr.cc"])
|
||||
AT_TEST([%skeleton "glr2.cc"])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user