summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouis Dionne <ldionne@apple.com>2018-12-06 18:24:39 +0000
committerLouis Dionne <ldionne@apple.com>2018-12-06 18:24:39 +0000
commit7125b08d0805898773e8721d685b86ab8f45d500 (patch)
treec6e1ccd4aa0411db668263321ecb26bccb363625
parentc3717cd0d557ac2df0ce8a58487aacd8a502e69d (diff)
downloadbcm5719-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.cpp9
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);
}
}
OpenPOWER on IntegriCloud