diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2017-11-17 14:07:58 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2017-11-17 14:07:58 +0000 |
commit | 96e0367ead5d8dcac3bec2865582e76e2fbab190 (patch) | |
tree | 7206a6f455f377e8e51d9d7466c82d36a3e08a50 /libstdc++-v3/testsuite | |
parent | 610f66a3d14e56dee60cd542579ffbf14f803d80 (diff) | |
download | gcc-96e0367ead5d8dcac3bec2865582e76e2fbab190.tar.gz |
PR libstdc++/83025 fix constraints for path overloads in <fstream>
PR libstdc++/83025
* include/std/fstream (basic_filebuf::_If_path): Move to
namespace-scope and rename to _If_fs_path.
(basic_filebuf::open): Use new name.
(basic_ifstream(_Path, ios::openmode))
(basic_ifstream::open(_Path, ios::openmode))
(basic_ofstream(_Path, ios::openmode))
(basic_ofstream::open(_Path, ios::openmode))
(basic_fstream(_Path, ios::openmode))
(basic_fstream::open(_Path, ios::openmode)): Use _If_fs_path.
* testsuite/27_io/basic_filebuf/open/char/path.cc: Test with filename
as non-const char*.
* testsuite/27_io/basic_fstream/cons/char/path.cc: Likewise.
* testsuite/27_io/basic_fstream/open/char/path.cc: Likewise.
* testsuite/27_io/basic_ifstream/cons/char/path.cc: Likewise.
* testsuite/27_io/basic_ifstream/open/char/path.cc: Likewise.
* testsuite/27_io/basic_ofstream/cons/char/path.cc: Likewise.
* testsuite/27_io/basic_ofstream/open/char/path.cc: Likewise.
From-SVN: r254871
Diffstat (limited to 'libstdc++-v3/testsuite')
7 files changed, 54 insertions, 7 deletions
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc index 56fffde5f9b..51f0839394b 100644 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc @@ -24,7 +24,8 @@ #include <filesystem> #include <testsuite_hooks.h> -const std::filesystem::path filename = "filebuf_members-1.tst"; +char cstr[] = "filebuf_members-1.tst"; +const std::filesystem::path filename = cstr; void test01() @@ -34,6 +35,13 @@ test01() VERIFY( fb.is_open() ); } +void +test02() // compile-only +{ + std::filebuf fb; + fb.open(cstr, std::ios::in); // PR libstdc++/83025 +} + int main() { diff --git a/libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc index 51337ebd909..079ebe2d04e 100644 --- a/libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc @@ -40,10 +40,14 @@ test02() VERIFY( f.is_open() ); } +using std::is_constructible_v; +// PR libstdc++/83025 +static_assert(is_constructible_v<std::fstream, char*>); +static_assert(is_constructible_v<std::fstream, char*, std::ios::openmode>); + int main() { test01(); test02(); - return 0; } diff --git a/libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc index 8d0127be2b8..297c8973ca1 100644 --- a/libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc @@ -24,7 +24,8 @@ #include <filesystem> #include <testsuite_hooks.h> -const std::filesystem::path filename = "ofstream_members-1.tst"; +char cstr[] = "filebuf_members-1.tst"; +const std::filesystem::path filename = cstr; void test01() @@ -42,6 +43,14 @@ test02() VERIFY( f.is_open() ); } +void +test03() // compile-only +{ + std::fstream f; + f.open(cstr); // PR libstdc++/83025 + f.open(cstr, std::ios::in|std::ios::out); // PR libstdc++/83025 +} + int main() { diff --git a/libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc index a0de4ba55b2..4265149752b 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc @@ -40,10 +40,14 @@ test02() VERIFY( f.is_open() ); } +using std::is_constructible_v; +// PR libstdc++/83025 +static_assert(is_constructible_v<std::fstream, char*>); +static_assert(is_constructible_v<std::fstream, char*, std::ios::openmode>); + int main() { test01(); test02(); - return 0; } diff --git a/libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc index 192e0fe9e85..49b8c1e4dc4 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc @@ -24,7 +24,8 @@ #include <filesystem> #include <testsuite_hooks.h> -const std::filesystem::path filename = "ifstream_members-1.tst"; +char cstr[] = "filebuf_members-1.tst"; +const std::filesystem::path filename = cstr; void test01() @@ -42,6 +43,14 @@ test02() VERIFY( f.is_open() ); } +void +test03() // compile-only +{ + std::ifstream f; + f.open(cstr); // PR libstdc++/83025 + f.open(cstr, std::ios::in); // PR libstdc++/83025 +} + int main() { diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc index c6b6b237dfd..da88ff979c4 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc @@ -40,6 +40,11 @@ test02() VERIFY( f.is_open() ); } +using std::is_constructible_v; +// PR libstdc++/83025 +static_assert(is_constructible_v<std::fstream, char*>); +static_assert(is_constructible_v<std::fstream, char*, std::ios::openmode>); + int main() { diff --git a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc index 38078c97ef7..4bbace2c679 100644 --- a/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc +++ b/libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc @@ -24,7 +24,8 @@ #include <filesystem> #include <testsuite_hooks.h> -const std::filesystem::path filename = "ofstream_members-1.tst"; +char cstr[] = "filebuf_members-1.tst"; +const std::filesystem::path filename = cstr; void test01() @@ -42,10 +43,17 @@ test02() VERIFY( f.is_open() ); } +void +test03() // compile-only +{ + std::ofstream f; + f.open(cstr); // PR libstdc++/83025 + f.open(cstr, std::ios::out); // PR libstdc++/83025 +} + int main() { test01(); test02(); - return 0; } |