[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 10/10] glr2.cc: run the glr-regression tests
From: |
Akim Demaille |
Subject: |
[PATCH 10/10] glr2.cc: run the glr-regression tests |
Date: |
Sun, 6 Dec 2020 14:10:37 +0100 |
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)
763: Ambiguity reports: glr2.cc FAILED
(glr-regression.at:1968)
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
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)
763: Ambiguity reports: glr2.cc FAILED
(glr-regression.at:1961)
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)
* tests/glr-regression.at: Run all the tests with glr2.cc.
* tests/local.at (AT_GLR2_CC_IF): New.
---
tests/glr-regression.at | 47 +++++++++++++++++++++++++++++++++++++----
tests/local.at | 3 +++
2 files changed, 46 insertions(+), 4 deletions(-)
diff --git a/tests/glr-regression.at b/tests/glr-regression.at
index 36093048..e0d61958 100644
--- a/tests/glr-regression.at
+++ b/tests/glr-regression.at
@@ -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])
diff --git a/tests/local.at b/tests/local.at
index e4242b39..f68d6e5b 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -244,6 +244,8 @@ m4_pushdef([AT_LALR1_CC_IF],
[AT_CXX_IF([AT_GLR_IF([$2], [$1])], [$2])])
m4_pushdef([AT_GLR_CC_IF],
[AT_CXX_IF([AT_GLR_IF([$1], [$2])], [$2])])
+m4_pushdef([AT_GLR2_CC_IF],
+ [m4_bmatch([$3], [%skeleton "glr2\.cc"], [$1], [$2])])
# Using yacc.c?
m4_pushdef([AT_YACC_IF],
[m4_bmatch([$3], [%language\|%glr-parser\|%skeleton], [$2], [$1])])
@@ -460,6 +462,7 @@ m4_popdef([AT_CXX_IF])
m4_popdef([AT_C_IF])
m4_popdef([AT_LANG])
m4_popdef([AT_JAVA_IF])
+m4_popdef([AT_GLR2_CC_IF])
m4_popdef([AT_GLR_CC_IF])
m4_popdef([AT_LALR1_CC_IF])
m4_popdef([AT_ERROR_SIMPLE_IF])
--
2.29.2
- [PATCH 00/10] glr2.cc: fixes, Akim Demaille, 2020/12/06
- [PATCH 01/10] glr.c: fix line numbers in logs, Akim Demaille, 2020/12/06
- [PATCH 02/10] glr2.cc: fix when the stack is not expandable, Akim Demaille, 2020/12/06
- [PATCH 03/10] glr2.cc: use 'const' for some constant local variables, Akim Demaille, 2020/12/06
- [PATCH 04/10] glr2.cc: turn some pointers into references, Akim Demaille, 2020/12/06
- [PATCH 05/10] glr2.cc: fix memory corruption bug, Akim Demaille, 2020/12/06
- [PATCH 06/10] glr2.cc: misc cleanups, Akim Demaille, 2020/12/06
- [PATCH 07/10] glr2.cc: fix yyresolveValue, Akim Demaille, 2020/12/06
- [PATCH 08/10] glr2.cc: add support for parse.assert, Akim Demaille, 2020/12/06
- [PATCH 09/10] glr2.cc: use the same format for traces as glr.c, Akim Demaille, 2020/12/06
- [PATCH 10/10] glr2.cc: run the glr-regression tests,
Akim Demaille <=