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/strings/basic.string/string.access | |
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/strings/basic.string/string.access')
3 files changed, 16 insertions, 0 deletions
diff --git a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp index 3831da0845c..dd2a59a7615 100644 --- a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp @@ -25,6 +25,10 @@ void test(S s) { const S& cs = s; + ASSERT_SAME_TYPE(decltype( s.back()), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs.back()), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s.back()); + LIBCPP_ASSERT_NOEXCEPT( cs.back()); assert(&cs.back() == &cs[cs.size()-1]); assert(&s.back() == &s[cs.size()-1]); s.back() = typename S::value_type('z'); diff --git a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp index d51a12f0a77..b666c9c6870 100644 --- a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp @@ -25,6 +25,10 @@ void test(S s) { const S& cs = s; + ASSERT_SAME_TYPE(decltype( s.front()), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs.front()), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s.front()); + LIBCPP_ASSERT_NOEXCEPT( cs.front()); assert(&cs.front() == &cs[0]); assert(&s.front() == &s[0]); s.front() = typename S::value_type('z'); diff --git a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp index 3a1224ca301..ec02fa4c32b 100644 --- a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp @@ -26,6 +26,10 @@ int main(int, char**) typedef std::string S; S s("0123456789"); const S& cs = s; + ASSERT_SAME_TYPE(decltype( s[0]), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs[0]), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s[0]); + LIBCPP_ASSERT_NOEXCEPT( cs[0]); for (S::size_type i = 0; i < cs.size(); ++i) { assert(s[i] == static_cast<char>('0' + i)); @@ -40,6 +44,10 @@ int main(int, char**) typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; S s("0123456789"); const S& cs = s; + ASSERT_SAME_TYPE(decltype( s[0]), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs[0]), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s[0]); + LIBCPP_ASSERT_NOEXCEPT( cs[0]); for (S::size_type i = 0; i < cs.size(); ++i) { assert(s[i] == static_cast<char>('0' + i)); |