summaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2017-11-17 14:07:58 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2017-11-17 14:07:58 +0000
commit96e0367ead5d8dcac3bec2865582e76e2fbab190 (patch)
tree7206a6f455f377e8e51d9d7466c82d36a3e08a50 /libstdc++-v3/testsuite
parent610f66a3d14e56dee60cd542579ffbf14f803d80 (diff)
downloadgcc-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')
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc10
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc6
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc11
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc6
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc11
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc5
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc12
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;
}