diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2023-01-18 14:27:55 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2023-01-18 21:47:58 +0000 |
commit | 33237e93d59ee7bb215cd5b726880bcbd679bb36 (patch) | |
tree | 7af228b8a2e835bd63fcf3c09d70460177270405 | |
parent | 26c68b8c31f637cc01f4bf511f9a0ca714231161 (diff) | |
download | gcc-33237e93d59ee7bb215cd5b726880bcbd679bb36.zip gcc-33237e93d59ee7bb215cd5b726880bcbd679bb36.tar.gz gcc-33237e93d59ee7bb215cd5b726880bcbd679bb36.tar.bz2 |
libstdc++: Deprecate std::filesystem::u8path for C++20
P0482R6 deprecated these functions for C++20. There was a ballot comment
on the C++23 CD saying to un-deprecate it, but LEWG just rejected that,
so let's add attributes to deprecate them.
libstdc++-v3/ChangeLog:
* include/bits/fs_path.h (u8path): Add deprecated attribute.
* testsuite/27_io/filesystem/path/construct/90281.cc: Add
-Wno-deprecated-declarations for C++20 and later.
* testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc:
Likewise.
* testsuite/27_io/filesystem/path/factory/u8path.cc: Likewise.
* testsuite/27_io/filesystem/path/native/string.cc: Likewise.
* testsuite/27_io/filesystem/path/factory/u8path-depr.cc: New test.
6 files changed, 22 insertions, 0 deletions
diff --git a/libstdc++-v3/include/bits/fs_path.h b/libstdc++-v3/include/bits/fs_path.h index 5f18f23..1cbfaaa 100644 --- a/libstdc++-v3/include/bits/fs_path.h +++ b/libstdc++-v3/include/bits/fs_path.h @@ -808,6 +808,7 @@ namespace __detail typename _Require = __detail::_Path2<_InputIterator>, typename _CharT = __detail::__value_type_is_char_or_char8_t<_InputIterator>> + _GLIBCXX20_DEPRECATED_SUGGEST("path(u8string(first, last))") inline path u8path(_InputIterator __first, _InputIterator __last) { @@ -830,6 +831,7 @@ namespace __detail template<typename _Source, typename _Require = __detail::_Path<_Source>, typename _CharT = __detail::__value_type_is_char_or_char8_t<_Source>> + _GLIBCXX20_DEPRECATED_SUGGEST("path((const char8_t*)&*source)") inline path u8path(const _Source& __source) { diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc index 4b38646..d26b5e1 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do run { target c++17 } } +// { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } } #include <filesystem> #include <testsuite_hooks.h> diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc index ceedd5f..eff95c1 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc @@ -17,6 +17,7 @@ // { dg-options "-fchar8_t -Wno-stringop-overread" } // { dg-do run { target c++17 } } +// { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } } #include <filesystem> #include <string_view> diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-depr.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-depr.cc new file mode 100644 index 0000000..de54668 --- /dev/null +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-depr.cc @@ -0,0 +1,16 @@ +// { dg-options "-std=gnu++20" } +// { dg-do compile { target c++20 } } + +#include <filesystem> + +namespace fs = std::filesystem; + +const char* s = ""; +auto p1 = fs::u8path(s); // { dg-warning "deprecated" } +auto p2 = fs::u8path(s, s); // { dg-warning "deprecated" } + +#if __cpp_lib_char8_t +const char8_t* u = u8""; +auto p3 = fs::u8path(u); // { dg-warning "deprecated" } +auto p4 = fs::u8path(u, u); // { dg-warning "deprecated" } +#endif diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc index 726b3ea..4c41fc2 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do run { target c++17 } } +// { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } } #include <filesystem> #include <string_view> diff --git a/libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc b/libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc index 8620c15..d5942c9 100644 --- a/libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc +++ b/libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc @@ -16,6 +16,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do run { target c++17 } } +// { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } } #include <filesystem> #include <string> |