summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/containers
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2019-03-19 03:30:07 +0000
committerMarshall Clow <mclow.lists@gmail.com>2019-03-19 03:30:07 +0000
commit9ea0e473f0b96455b918eefcf8fc535638674a1f (patch)
tree7d4d56a0ab1298b8cd8b065695ff2b9d6b06582f /libcxx/test/std/containers
parent89251edefcb46f0b5e0caf2bb47f38d115e12fa4 (diff)
downloadbcm5719-llvm-9ea0e473f0b96455b918eefcf8fc535638674a1f.tar.gz
bcm5719-llvm-9ea0e473f0b96455b918eefcf8fc535638674a1f.zip
Mark 'front()' and 'back()' as noexcept for array/deque/string/string_view. These are just rebranded 'operator[]', and should be noexcept like it is.
llvm-svn: 356435
Diffstat (limited to 'libcxx/test/std/containers')
-rw-r--r--libcxx/test/std/containers/sequences/array/front_back.pass.cpp24
-rw-r--r--libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp32
2 files changed, 40 insertions, 16 deletions
diff --git a/libcxx/test/std/containers/sequences/array/front_back.pass.cpp b/libcxx/test/std/containers/sequences/array/front_back.pass.cpp
index 1a714369ffc..5e0cb08ede0 100644
--- a/libcxx/test/std/containers/sequences/array/front_back.pass.cpp
+++ b/libcxx/test/std/containers/sequences/array/front_back.pass.cpp
@@ -68,10 +68,14 @@ int main(int, char**)
typedef std::array<T, 0> C;
C c = {};
C const& cc = c;
- static_assert((std::is_same<decltype(c.front()), T &>::value), "");
- static_assert((std::is_same<decltype(cc.front()), const T &>::value), "");
- static_assert((std::is_same<decltype(c.back()), T &>::value), "");
- static_assert((std::is_same<decltype(cc.back()), const T &>::value), "");
+ ASSERT_SAME_TYPE(decltype( c.back()), typename C::reference);
+ ASSERT_SAME_TYPE(decltype(cc.back()), typename C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.back());
+ LIBCPP_ASSERT_NOEXCEPT( cc.back());
+ ASSERT_SAME_TYPE(decltype( c.front()), typename C::reference);
+ ASSERT_SAME_TYPE(decltype(cc.front()), typename C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.front());
+ LIBCPP_ASSERT_NOEXCEPT( cc.front());
if (c.size() > (0)) { // always false
TEST_IGNORE_NODISCARD c.front();
TEST_IGNORE_NODISCARD c.back();
@@ -84,10 +88,14 @@ int main(int, char**)
typedef std::array<const T, 0> C;
C c = {{}};
C const& cc = c;
- static_assert((std::is_same<decltype(c.front()), const T &>::value), "");
- static_assert((std::is_same<decltype(cc.front()), const T &>::value), "");
- static_assert((std::is_same<decltype(c.back()), const T &>::value), "");
- static_assert((std::is_same<decltype(cc.back()), const T &>::value), "");
+ ASSERT_SAME_TYPE(decltype( c.back()), typename C::reference);
+ ASSERT_SAME_TYPE(decltype(cc.back()), typename C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.back());
+ LIBCPP_ASSERT_NOEXCEPT( cc.back());
+ ASSERT_SAME_TYPE(decltype( c.front()), typename C::reference);
+ ASSERT_SAME_TYPE(decltype(cc.front()), typename C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.front());
+ LIBCPP_ASSERT_NOEXCEPT( cc.front());
if (c.size() > (0)) {
TEST_IGNORE_NODISCARD c.front();
TEST_IGNORE_NODISCARD c.back();
diff --git a/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp
index c7d9006d2c1..583dba28a24 100644
--- a/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp
+++ b/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp
@@ -54,8 +54,12 @@ int main(int, char**)
{
typedef std::deque<int> C;
C c = make<std::deque<int> >(10);
- LIBCPP_ASSERT_NOEXCEPT(c[0]);
- ASSERT_SAME_TYPE(C::reference, decltype(c[0]));
+ ASSERT_SAME_TYPE(decltype(c[0]), C::reference);
+ LIBCPP_ASSERT_NOEXCEPT( c[0]);
+ LIBCPP_ASSERT_NOEXCEPT( c.front());
+ ASSERT_SAME_TYPE(decltype(c.front()), C::reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.back());
+ ASSERT_SAME_TYPE(decltype(c.back()), C::reference);
for (int i = 0; i < 10; ++i)
assert(c[i] == i);
for (int i = 0; i < 10; ++i)
@@ -66,8 +70,12 @@ int main(int, char**)
{
typedef std::deque<int> C;
const C c = make<std::deque<int> >(10);
- LIBCPP_ASSERT_NOEXCEPT(c[0]);
- ASSERT_SAME_TYPE(C::const_reference, decltype(c[0]));
+ ASSERT_SAME_TYPE(decltype(c[0]), C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c[0]);
+ LIBCPP_ASSERT_NOEXCEPT( c.front());
+ ASSERT_SAME_TYPE(decltype(c.front()), C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.back());
+ ASSERT_SAME_TYPE(decltype(c.back()), C::const_reference);
for (int i = 0; i < 10; ++i)
assert(c[i] == i);
for (int i = 0; i < 10; ++i)
@@ -79,8 +87,12 @@ int main(int, char**)
{
typedef std::deque<int, min_allocator<int>> C;
C c = make<std::deque<int, min_allocator<int>> >(10);
- LIBCPP_ASSERT_NOEXCEPT(c[0]);
- ASSERT_SAME_TYPE(C::reference, decltype(c[0]));
+ ASSERT_SAME_TYPE(decltype(c[0]), C::reference);
+ LIBCPP_ASSERT_NOEXCEPT( c[0]);
+ LIBCPP_ASSERT_NOEXCEPT( c.front());
+ ASSERT_SAME_TYPE(decltype(c.front()), C::reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.back());
+ ASSERT_SAME_TYPE(decltype(c.back()), C::reference);
for (int i = 0; i < 10; ++i)
assert(c[i] == i);
for (int i = 0; i < 10; ++i)
@@ -91,8 +103,12 @@ int main(int, char**)
{
typedef std::deque<int, min_allocator<int>> C;
const C c = make<std::deque<int, min_allocator<int>> >(10);
- LIBCPP_ASSERT_NOEXCEPT(c[0]);
- ASSERT_SAME_TYPE(C::const_reference, decltype(c[0]));
+ ASSERT_SAME_TYPE(decltype(c[0]), C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c[0]);
+ LIBCPP_ASSERT_NOEXCEPT( c.front());
+ ASSERT_SAME_TYPE(decltype(c.front()), C::const_reference);
+ LIBCPP_ASSERT_NOEXCEPT( c.back());
+ ASSERT_SAME_TYPE(decltype(c.back()), C::const_reference);
for (int i = 0; i < 10; ++i)
assert(c[i] == i);
for (int i = 0; i < 10; ++i)
OpenPOWER on IntegriCloud