mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
tests: skip C++ tests that are too demanding for some compilers
Some tests now fail when compiled with G++ 4.3 or 4.4 on MacPorts. * tests/local.at (AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR): New. * tests/c++.at (Exception safety): Use it.
This commit is contained in:
@@ -655,6 +655,8 @@ AT_CLEANUP
|
||||
m4_pushdef([AT_TEST],
|
||||
[AT_SETUP([[Exception safety $1]])
|
||||
|
||||
AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR
|
||||
|
||||
AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc" $1])
|
||||
|
||||
AT_DATA_GRAMMAR([[input.yy]],
|
||||
|
||||
@@ -875,6 +875,49 @@ AT_PARSER_CHECK([./c-and-cxx])
|
||||
])
|
||||
|
||||
|
||||
# AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR
|
||||
# ------------------------------------
|
||||
# Check that we can expect exceptions to be handled properly.
|
||||
# GCC 4.3 and 4.4 fail https://trac.macports.org/ticket/40853.
|
||||
m4_define([AT_SKIP_IF_EXCEPTION_SUPPORT_IS_POOR],
|
||||
[AT_DATA_SOURCE([exception.cc],
|
||||
[[#include <iostream>
|
||||
#include <stdexcept>
|
||||
|
||||
void foo()
|
||||
{
|
||||
try
|
||||
{
|
||||
throw std::runtime_error("foo");
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cerr << "Inner caught" << std::endl;
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
try
|
||||
{
|
||||
foo();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cerr << "Outer caught" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
]])
|
||||
AT_COMPILE_CXX([exception])
|
||||
# The "empty" quadrigraph is to protect from cfg.mk's
|
||||
# sc_at_parser_check.
|
||||
AT_CHECK([@&t@./exception || exit 77], [0], [], [ignore])
|
||||
])
|
||||
|
||||
|
||||
## ---------------------------- ##
|
||||
## Running a generated parser. ##
|
||||
## ---------------------------- ##
|
||||
|
||||
Reference in New Issue
Block a user