diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2019-03-19 03:30:07 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2019-03-19 03:30:07 +0000 |
commit | 9ea0e473f0b96455b918eefcf8fc535638674a1f (patch) | |
tree | 7d4d56a0ab1298b8cd8b065695ff2b9d6b06582f /libcxx/test/std/containers | |
parent | 89251edefcb46f0b5e0caf2bb47f38d115e12fa4 (diff) | |
download | bcm5719-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.cpp | 24 | ||||
-rw-r--r-- | libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp | 32 |
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) |