[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
tests: run the api.value.type tests for all C++ standards
From: |
Akim Demaille |
Subject: |
tests: run the api.value.type tests for all C++ standards |
Date: |
Fri, 16 Nov 2018 17:38:47 +0100 |
commit 8eb1d7933341ad6b83818e64a4d2befc4f2ee771
Author: Akim Demaille <address@hidden>
Date: Wed Nov 14 21:03:18 2018 +0100
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.
diff --git a/tests/local.at b/tests/local.at
index 3b7356b5..b31b7719 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -539,6 +539,9 @@ main (int argc, char const* argv[])
return ]AT_NAME_PREFIX[parse ();
}]])
+m4_define([AT_LANG_FOR_EACH_STD(c)],
+[$1])
+
## ----- ##
## C++. ##
@@ -573,21 +576,24 @@ main (int argc, char const* argv[])
return p.parse ();
}]])
+m4_define([AT_LANG_FOR_EACH_STD(c++)],
+[AT_FOR_EACH_CXX([$1])])
+
m4_define([AT_FOR_EACH_CXX],
-[[at_for_each_cxx_CXXFLAGS_save=$CXXFLAGS
-for at_cxx_std in '' \
- ${CXX98_CXXFLAGS:+"$CXX98_CXXFLAGS"} \
- ${CXX03_CXXFLAGS:+"$CXX03_CXXFLAGS"} \
- ${CXX11_CXXFLAGS:+"$CXX11_CXXFLAGS"} \
- ${CXX14_CXXFLAGS:+"$CXX14_CXXFLAGS"} \
- ${CXX17_CXXFLAGS:+"$CXX17_CXXFLAGS"} \
- ${CXX2A_CXXFLAGS:+"$CXX2A_CXXFLAGS"}
+[[at_for_each_std_CXXFLAGS_save=$CXXFLAGS
+for at_std in '' \
+ ${CXX98_CXXFLAGS:+"$CXX98_CXXFLAGS"} \
+ ${CXX03_CXXFLAGS:+"$CXX03_CXXFLAGS"} \
+ ${CXX11_CXXFLAGS:+"$CXX11_CXXFLAGS"} \
+ ${CXX14_CXXFLAGS:+"$CXX14_CXXFLAGS"} \
+ ${CXX17_CXXFLAGS:+"$CXX17_CXXFLAGS"} \
+ ${CXX2A_CXXFLAGS:+"$CXX2A_CXXFLAGS"}
do
]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[
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. ##
@@ -819,6 +826,11 @@ AT_CHECK([[$SHELL ../../../javacomp.sh ]$1],
[[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])
# ---------------------------------------------------------------------
# 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",
# "14", etc.).
-m4_define([AT_REQUIRE_CXX_VERSION],
+m4_define([AT_REQUIRE_CXX_STD],
[AT_DATA([check.cc],
[[int main ()
{
@@ -920,14 +932,19 @@ m4_define([AT_REQUIRE_CXX_VERSION],
[17], [201703],
[2a], [201709],
[m4_fatal([$0: invalid arguments: address@hidden)])[
- return 77;
+ return 1;
#else
return 0;
#endif
}
]])
AT_COMPILE_CXX([check])
-AT_CHECK([@&address@hidden/check])
+AT_CHECK([@&address@hidden/check], [ignore])
+m4_ifval([$2],
+ [if test $at_status != 0; then
+ $2
+ fi],
+ [SKIP_IF([test $at_status != 0])])
])
diff --git a/tests/types.at b/tests/types.at
index 69bc9819..84d3e222 100644
--- a/tests/types.at
+++ b/tests/types.at
@@ -78,7 +78,7 @@ m4_pushdef([_AT_TEST],
[
AT_SETUP([$1])
AT_KEYWORDS([api.value.type])
-$7
+
AT_BISON_OPTION_PUSHDEFS([%debug $1 $2])
AT_DATA_GRAMMAR([test.y],
[[%debug
@@ -104,9 +104,12 @@ start: $3;
]AT_MAIN_DEFINE[
]])
-AT_FULL_COMPILE([[test]])
-AT_PARSER_CHECK([[./test]], 0, [[$6
+AT_LANG_FOR_EACH_STD([
+ $7
+ AT_FULL_COMPILE([[test]])
+ AT_PARSER_CHECK([[./test]], 0, [[$6
]])
+])
AT_BISON_OPTION_POPDEFS
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>>
(std::make_unique <std::string> ("two"));]],
[10, two],
- [AT_REQUIRE_CXX_VERSION(14)])])
+ [AT_REQUIRE_CXX_STD(14, [echo "$at_std not supported";
continue])])])
])
])
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- tests: run the api.value.type tests for all C++ standards,
Akim Demaille <=