mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 09:43:03 +00:00
tests: run the api.value.type tests for all C++ standards
* tests/local.at (AT_LANG_FOR_EACH_STD): New. (AT_REQUIRE_CXX_VERSION): Rename as... (AT_REQUIRE_CXX_STD): this. Accept an argument for what to do when the requirement is not met. * tests/types.at (api.value.type): Check all the C++ stds.
This commit is contained in:
@@ -539,6 +539,9 @@ main (int argc, char const* argv[])
|
|||||||
return ]AT_NAME_PREFIX[parse ();
|
return ]AT_NAME_PREFIX[parse ();
|
||||||
}]])
|
}]])
|
||||||
|
|
||||||
|
m4_define([AT_LANG_FOR_EACH_STD(c)],
|
||||||
|
[$1])
|
||||||
|
|
||||||
|
|
||||||
## ----- ##
|
## ----- ##
|
||||||
## C++. ##
|
## C++. ##
|
||||||
@@ -573,21 +576,24 @@ main (int argc, char const* argv[])
|
|||||||
return p.parse ();
|
return p.parse ();
|
||||||
}]])
|
}]])
|
||||||
|
|
||||||
|
m4_define([AT_LANG_FOR_EACH_STD(c++)],
|
||||||
|
[AT_FOR_EACH_CXX([$1])])
|
||||||
|
|
||||||
m4_define([AT_FOR_EACH_CXX],
|
m4_define([AT_FOR_EACH_CXX],
|
||||||
[[at_for_each_cxx_CXXFLAGS_save=$CXXFLAGS
|
[[at_for_each_std_CXXFLAGS_save=$CXXFLAGS
|
||||||
for at_cxx_std in '' \
|
for at_std in '' \
|
||||||
${CXX98_CXXFLAGS:+"$CXX98_CXXFLAGS"} \
|
${CXX98_CXXFLAGS:+"$CXX98_CXXFLAGS"} \
|
||||||
${CXX03_CXXFLAGS:+"$CXX03_CXXFLAGS"} \
|
${CXX03_CXXFLAGS:+"$CXX03_CXXFLAGS"} \
|
||||||
${CXX11_CXXFLAGS:+"$CXX11_CXXFLAGS"} \
|
${CXX11_CXXFLAGS:+"$CXX11_CXXFLAGS"} \
|
||||||
${CXX14_CXXFLAGS:+"$CXX14_CXXFLAGS"} \
|
${CXX14_CXXFLAGS:+"$CXX14_CXXFLAGS"} \
|
||||||
${CXX17_CXXFLAGS:+"$CXX17_CXXFLAGS"} \
|
${CXX17_CXXFLAGS:+"$CXX17_CXXFLAGS"} \
|
||||||
${CXX2A_CXXFLAGS:+"$CXX2A_CXXFLAGS"}
|
${CXX2A_CXXFLAGS:+"$CXX2A_CXXFLAGS"}
|
||||||
do
|
do
|
||||||
]AS_ECHO(["======== Testing with C++ standard flags: '$at_cxx_std'"])[
|
]AS_ECHO(["======== Testing with C++ standard flags: '$at_cxx_std'"])[
|
||||||
CXXFLAGS="$at_for_each_cxx_CXXFLAGS_save $at_cxx_std"
|
CXXFLAGS="$at_for_each_std_CXXFLAGS_save $at_std"
|
||||||
]$1[
|
]$1[
|
||||||
done
|
done
|
||||||
CXXFLAGS=$at_for_each_cxx_CXXFLAGS_save
|
CXXFLAGS=$at_for_each_std_CXXFLAGS_save
|
||||||
]])
|
]])
|
||||||
|
|
||||||
## ------ ##
|
## ------ ##
|
||||||
@@ -619,7 +625,8 @@ m4_define([AT_MAIN_DEFINE(java)],
|
|||||||
}
|
}
|
||||||
}]])
|
}]])
|
||||||
|
|
||||||
|
m4_define([AT_LANG_FOR_EACH_STD(java)],
|
||||||
|
[$1])
|
||||||
|
|
||||||
## --------------- ##
|
## --------------- ##
|
||||||
## Running Bison. ##
|
## Running Bison. ##
|
||||||
@@ -819,6 +826,11 @@ AT_CHECK([[$SHELL ../../../javacomp.sh ]$1],
|
|||||||
[[0]], [ignore], [ignore])])
|
[[0]], [ignore], [ignore])])
|
||||||
|
|
||||||
|
|
||||||
|
# AT_LANG_FOR_EACH_STD(BODY)
|
||||||
|
# -------------------------------
|
||||||
|
m4_define([AT_LANG_FOR_EACH_STD], [AT_LANG_DISPATCH([$0], $@)])
|
||||||
|
|
||||||
|
|
||||||
# AT_LANG_COMPILE(OUTPUT, [SOURCES = OUTPUT.c], [EXTRA-COMPILER-FLAGS])
|
# AT_LANG_COMPILE(OUTPUT, [SOURCES = OUTPUT.c], [EXTRA-COMPILER-FLAGS])
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
# Compile SOURCES into OUTPUT. Skip if compiler does not work.
|
# Compile SOURCES into OUTPUT. Skip if compiler does not work.
|
||||||
@@ -904,11 +916,11 @@ AT_PARSER_CHECK([./c-and-cxx])
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
# AT_REQUIRE_CXX_VERSION(STD)
|
# AT_REQUIRE_CXX_STD(STD, [IF-FAIL = SKIP])
|
||||||
# ---------------------------
|
# -----------------------------------------
|
||||||
# Skip unless this compiler supports at least C++ STD (e.g., "11",
|
# Skip unless this compiler supports at least C++ STD (e.g., "11",
|
||||||
# "14", etc.).
|
# "14", etc.).
|
||||||
m4_define([AT_REQUIRE_CXX_VERSION],
|
m4_define([AT_REQUIRE_CXX_STD],
|
||||||
[AT_DATA([check.cc],
|
[AT_DATA([check.cc],
|
||||||
[[int main ()
|
[[int main ()
|
||||||
{
|
{
|
||||||
@@ -920,14 +932,19 @@ m4_define([AT_REQUIRE_CXX_VERSION],
|
|||||||
[17], [201703],
|
[17], [201703],
|
||||||
[2a], [201709],
|
[2a], [201709],
|
||||||
[m4_fatal([$0: invalid arguments: $@])])[
|
[m4_fatal([$0: invalid arguments: $@])])[
|
||||||
return 77;
|
return 1;
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
]])
|
]])
|
||||||
AT_COMPILE_CXX([check])
|
AT_COMPILE_CXX([check])
|
||||||
AT_CHECK([@&t@./check])
|
AT_CHECK([@&t@./check], [ignore])
|
||||||
|
m4_ifval([$2],
|
||||||
|
[if test $at_status != 0; then
|
||||||
|
$2
|
||||||
|
fi],
|
||||||
|
[SKIP_IF([test $at_status != 0])])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ m4_pushdef([_AT_TEST],
|
|||||||
[
|
[
|
||||||
AT_SETUP([$1])
|
AT_SETUP([$1])
|
||||||
AT_KEYWORDS([api.value.type])
|
AT_KEYWORDS([api.value.type])
|
||||||
$7
|
|
||||||
AT_BISON_OPTION_PUSHDEFS([%debug $1 $2])
|
AT_BISON_OPTION_PUSHDEFS([%debug $1 $2])
|
||||||
AT_DATA_GRAMMAR([test.y],
|
AT_DATA_GRAMMAR([test.y],
|
||||||
[[%debug
|
[[%debug
|
||||||
@@ -104,9 +104,12 @@ start: $3;
|
|||||||
]AT_MAIN_DEFINE[
|
]AT_MAIN_DEFINE[
|
||||||
]])
|
]])
|
||||||
|
|
||||||
AT_FULL_COMPILE([[test]])
|
AT_LANG_FOR_EACH_STD([
|
||||||
AT_PARSER_CHECK([[./test]], 0, [[$6
|
$7
|
||||||
|
AT_FULL_COMPILE([[test]])
|
||||||
|
AT_PARSER_CHECK([[./test]], 0, [[$6
|
||||||
]])
|
]])
|
||||||
|
])
|
||||||
|
|
||||||
AT_BISON_OPTION_POPDEFS
|
AT_BISON_OPTION_POPDEFS
|
||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
@@ -282,7 +285,7 @@ m4_foreach([b4_skel], [[yacc.c], [glr.c], [lalr1.cc], [glr.cc]],
|
|||||||
]AT_VAL[.emplace <std::unique_ptr<std::string>>
|
]AT_VAL[.emplace <std::unique_ptr<std::string>>
|
||||||
(std::make_unique <std::string> ("two"));]],
|
(std::make_unique <std::string> ("two"));]],
|
||||||
[10, two],
|
[10, two],
|
||||||
[AT_REQUIRE_CXX_VERSION(14)])])
|
[AT_REQUIRE_CXX_STD(14, [echo "$at_std not supported"; continue])])])
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user