tests: refactor

This commit is contained in:
Akim Demaille
2018-12-30 10:16:31 +01:00
parent 7ff7ef678c
commit 9a110873a0

View File

@@ -853,6 +853,7 @@ AT_CLEANUP
m4_popdef([AT_TEST]) m4_popdef([AT_TEST])
## -------------------------------------- ## ## -------------------------------------- ##
## Syntax error discarding no lookahead. ## ## Syntax error discarding no lookahead. ##
## -------------------------------------- ## ## -------------------------------------- ##
@@ -936,12 +937,14 @@ AT_CLEANUP
## Syntax error as exception. ## ## Syntax error as exception. ##
## --------------------------- ## ## --------------------------- ##
AT_SETUP([[Syntax error as exception]]) # AT_TEST([BISON-DIRECTIVES = ''])
m4_pushdef([AT_TEST],
[AT_SETUP([[Syntax error as exception: $1]])
AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"]) AT_BISON_OPTION_PUSHDEFS([$1])
AT_DATA_GRAMMAR([[input.y]], AT_DATA_GRAMMAR([[input.yy]],
[[%skeleton "lalr1.cc" [[$1
%defines %defines
%code %code
@@ -950,7 +953,6 @@ AT_DATA_GRAMMAR([[input.y]],
int yylex (yy::parser::semantic_type *); int yylex (yy::parser::semantic_type *);
} }
%define api.value.type variant
%define parse.error verbose %define parse.error verbose
%define parse.trace %define parse.trace
%% %%
@@ -969,7 +971,7 @@ item:
'a' 'a'
| 's' | 's'
{ {
throw yy::parser::syntax_error ("invalid expression"); throw syntax_error ("invalid expression");
} }
%% %%
@@ -982,7 +984,7 @@ yy::parser::error (const std::string &m)
]AT_MAIN_DEFINE[ ]AT_MAIN_DEFINE[
]]) ]])
AT_DATA_SOURCE([input-scan.cc], AT_DATA_SOURCE([scan.cc],
[[#include "input.hh" [[#include "input.hh"
int int
@@ -1000,8 +1002,10 @@ yylex (yy::parser::semantic_type *)
} }
]]) ]])
AT_BISON_CHECK([[-o input.cc input.yy]])
AT_FOR_EACH_CXX([ AT_FOR_EACH_CXX([
AT_FULL_COMPILE([[input]], [[scan]]) AT_LANG_COMPILE([[input]], [[input.cc scan.cc]])
AT_PARSER_CHECK([[./input]], [[0]], [[]], AT_PARSER_CHECK([[./input]], [[0]], [[]],
[[error: invalid expression [[error: invalid expression
@@ -1013,7 +1017,11 @@ caught error
AT_BISON_OPTION_POPDEFS AT_BISON_OPTION_POPDEFS
AT_CLEANUP AT_CLEANUP
])
AT_TEST([%skeleton "lalr1.cc"])
m4_popdef([AT_TEST])
## ------------------ ## ## ------------------ ##
## Exception safety. ## ## Exception safety. ##