diff options
author | Michael Park <mcypark@gmail.com> | 2019-11-08 13:42:26 +0000 |
---|---|---|
committer | Michael Park <mcypark@gmail.com> | 2019-11-11 09:49:48 -0800 |
commit | eb8710cb93a5c21c168ffd97ac2b6872127cb60b (patch) | |
tree | 9aa3b97c056883c017a4f251aabd8d724bd05d8f /libcxx/test/std/strings | |
parent | 489449c28aaa45086d507fbad96826420adf409d (diff) | |
download | bcm5719-llvm-eb8710cb93a5c21c168ffd97ac2b6872127cb60b.tar.gz bcm5719-llvm-eb8710cb93a5c21c168ffd97ac2b6872127cb60b.zip |
[libc++][P0980] Marked member functions move/copy/assign of char_traits constexpr.
Reviewers: ldionne, EricWF, mclow.lists
Reviewed By: ldionne
Subscribers: christof, dexonsmith, libcxx-commits
Tags: #libc
Differential Revision: https://reviews.llvm.org/D68840
Diffstat (limited to 'libcxx/test/std/strings')
15 files changed, 180 insertions, 15 deletions
diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp index cc10294b014..d7a1753daf6 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { char s2[3] = {0}; assert(std::char_traits<char>::assign(s2, 3, char(5)) == s2); @@ -26,5 +26,16 @@ int main(int, char**) assert(s2[2] == char(5)); assert(std::char_traits<char>::assign(NULL, 0, char(5)) == NULL); + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp index 7e76c0bbd3d..3ac53897eba 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { char s1[] = {1, 2, 3}; char s2[3] = {0}; @@ -28,5 +28,16 @@ int main(int, char**) assert(std::char_traits<char>::copy(NULL, s1, 0) == NULL); assert(std::char_traits<char>::copy(s1, NULL, 0) == s1); + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp index 4a132649d50..94f10aab771 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { char s1[] = {1, 2, 3}; assert(std::char_traits<char>::move(s1, s1+1, 2) == s1); @@ -32,5 +32,16 @@ int main(int, char**) assert(std::char_traits<char>::move(NULL, s1, 0) == NULL); assert(std::char_traits<char>::move(s1, NULL, 0) == s1); + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp index 77207826aab..af61f97b30a 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS char16_t s2[3] = {0}; @@ -28,5 +28,16 @@ int main(int, char**) assert(std::char_traits<char16_t>::assign(NULL, 0, char16_t(5)) == NULL); #endif // _LIBCPP_HAS_NO_UNICODE_CHARS + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp index bedc55db0ed..5c70a7a21e5 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS char16_t s1[] = {1, 2, 3}; @@ -30,5 +30,16 @@ int main(int, char**) assert(std::char_traits<char16_t>::copy(s1, NULL, 0) == s1); #endif // _LIBCPP_HAS_NO_UNICODE_CHARS + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp index f822437809f..b058632a8f4 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS char16_t s1[] = {1, 2, 3}; @@ -34,5 +34,16 @@ int main(int, char**) assert(std::char_traits<char16_t>::move(s1, NULL, 0) == s1); #endif // _LIBCPP_HAS_NO_UNICODE_CHARS + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp index c63d0254385..b022b23aa0e 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS char32_t s2[3] = {0}; @@ -28,5 +28,16 @@ int main(int, char**) assert(std::char_traits<char32_t>::assign(NULL, 0, char32_t(5)) == NULL); #endif // _LIBCPP_HAS_NO_UNICODE_CHARS + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp index 7f9b383b087..75e17d082f0 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS char32_t s1[] = {1, 2, 3}; @@ -30,5 +30,16 @@ int main(int, char**) assert(std::char_traits<char32_t>::copy(s1, NULL, 0) == s1); #endif // _LIBCPP_HAS_NO_UNICODE_CHARS + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp index 6d335fa3c10..49900993851 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS char32_t s1[] = {1, 2, 3}; @@ -34,5 +34,16 @@ int main(int, char**) assert(std::char_traits<char32_t>::move(s1, NULL, 0) == s1); #endif // _LIBCPP_HAS_NO_UNICODE_CHARS + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp index 426ca075dce..d91f05a01fa 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L char8_t s2[3] = {0}; @@ -29,5 +29,16 @@ int main(int, char**) assert(std::char_traits<char8_t>::assign(NULL, 0, char8_t(5)) == NULL); #endif + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp index bfd25c93c44..4d9dc924f06 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L char8_t s1[] = {1, 2, 3}; @@ -31,5 +31,16 @@ int main(int, char**) assert(std::char_traits<char8_t>::copy(s1, NULL, 0) == s1); #endif + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp index ffb81fd30f1..b839b29cc57 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp @@ -18,7 +18,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { #if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L char8_t s1[] = {1, 2, 3}; @@ -35,5 +35,16 @@ int main(int, char**) assert(std::char_traits<char8_t>::move(s1, NULL, 0) == s1); #endif + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp index 373d374b33d..9997770e1ab 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/assign3.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { wchar_t s2[3] = {0}; assert(std::char_traits<wchar_t>::assign(s2, 3, wchar_t(5)) == s2); @@ -26,5 +26,16 @@ int main(int, char**) assert(s2[2] == wchar_t(5)); assert(std::char_traits<wchar_t>::assign(NULL, 0, wchar_t(5)) == NULL); + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp index 3665297cd16..1eb2bd51320 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/copy.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { wchar_t s1[] = {1, 2, 3}; wchar_t s2[3] = {0}; @@ -28,5 +28,16 @@ int main(int, char**) assert(std::char_traits<wchar_t>::copy(NULL, s1, 0) == NULL); assert(std::char_traits<wchar_t>::copy(s1, NULL, 0) == s1); + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp index 67610cb141b..f459f287ce6 100644 --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar.t/move.pass.cpp @@ -17,7 +17,7 @@ #include "test_macros.h" -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool test() { wchar_t s1[] = {1, 2, 3}; assert(std::char_traits<wchar_t>::move(s1, s1+1, 2) == s1); @@ -32,5 +32,16 @@ int main(int, char**) assert(std::char_traits<wchar_t>::move(NULL, s1, 0) == NULL); assert(std::char_traits<wchar_t>::move(s1, NULL, 0) == s1); + return true; +} + +int main(int, char**) +{ + test(); + +#if TEST_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED) + static_assert(test()); +#endif + return 0; } |