diff options
author | Louis Dionne <ldionne@apple.com> | 2018-12-06 18:24:39 +0000 |
---|---|---|
committer | Louis Dionne <ldionne@apple.com> | 2018-12-06 18:24:39 +0000 |
commit | 7125b08d0805898773e8721d685b86ab8f45d500 (patch) | |
tree | c6e1ccd4aa0411db668263321ecb26bccb363625 | |
parent | c3717cd0d557ac2df0ce8a58487aacd8a502e69d (diff) | |
download | bcm5719-llvm-7125b08d0805898773e8721d685b86ab8f45d500.tar.gz bcm5719-llvm-7125b08d0805898773e8721d685b86ab8f45d500.zip |
[libcxx] Add checks for unique value of array<T, 0>.begin() and array<T, 0>.end()
The standard section [array.zero] requires the return value of begin()
and end() methods of a zero-sized array to be unique. Eric Fiselier
clarifies: "That unique value cannot be null, and must be properly aligned".
This patch adds checks for the first part of this clarification: unique
value returned by these methods cannot be null.
Reviewed as https://reviews.llvm.org/D55366.
Thanks to Andrey Maksimov for the patch.
llvm-svn: 348509
-rw-r--r-- | libcxx/test/std/containers/sequences/array/begin.pass.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libcxx/test/std/containers/sequences/array/begin.pass.cpp b/libcxx/test/std/containers/sequences/array/begin.pass.cpp index 1c76472213b..37c6b5eecde 100644 --- a/libcxx/test/std/containers/sequences/array/begin.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/begin.pass.cpp @@ -14,6 +14,8 @@ #include <array> #include <cassert> +#include "test_macros.h" + // std::array is explicitly allowed to be initialized with A a = { init-list };. // Disable the missing braces warning for this reason. #include "disable_missing_braces_warning.h" @@ -40,6 +42,11 @@ int main() typedef NoDefault T; typedef std::array<T, 0> C; C c = {}; - assert(c.begin() == c.end()); + C::iterator ib, ie; + ib = c.begin(); + ie = c.end(); + assert(ib == ie); + LIBCPP_ASSERT(ib != nullptr); + LIBCPP_ASSERT(ie != nullptr); } } |