diff options
| author | David Blaikie <dblaikie@gmail.com> | 2014-08-31 01:33:41 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2014-08-31 01:33:41 +0000 |
| commit | ee03eadc3f15b63e20e80ad65e6cef157915094f (patch) | |
| tree | 189fd20fbb38650eea17f54464ee5bef4d055552 /llvm/unittests/ADT/ArrayRefTest.cpp | |
| parent | 41429874d6f25f507df939a5bb019877fce357e9 (diff) | |
| download | llvm-ee03eadc3f15b63e20e80ad65e6cef157915094f.zip llvm-ee03eadc3f15b63e20e80ad65e6cef157915094f.tar.gz llvm-ee03eadc3f15b63e20e80ad65e6cef157915094f.tar.bz2 | |
Add some negative (and positive) static_assert checks for ArrayRef-of-pointer conversions introduced in r216709
llvm-svn: 216830
Diffstat (limited to 'llvm/unittests/ADT/ArrayRefTest.cpp')
| -rw-r--r-- | llvm/unittests/ADT/ArrayRefTest.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/ArrayRefTest.cpp b/llvm/unittests/ADT/ArrayRefTest.cpp index 6499367..f9c98a5 100644 --- a/llvm/unittests/ADT/ArrayRefTest.cpp +++ b/llvm/unittests/ADT/ArrayRefTest.cpp @@ -13,6 +13,23 @@ #include "gtest/gtest.h" using namespace llvm; +// Check that the ArrayRef-of-pointer converting constructor only allows adding +// cv qualifiers (not removing them, or otherwise changing the type) +static_assert( + std::is_convertible<ArrayRef<int *>, ArrayRef<const int *>>::value, + "Adding const"); +static_assert( + std::is_convertible<ArrayRef<int *>, ArrayRef<volatile int *>>::value, + "Adding volatile"); +static_assert(!std::is_convertible<ArrayRef<int *>, ArrayRef<float *>>::value, + "Changing pointer of one type to a pointer of another"); +static_assert( + !std::is_convertible<ArrayRef<const int *>, ArrayRef<int *>>::value, + "Removing const"); +static_assert( + !std::is_convertible<ArrayRef<volatile int *>, ArrayRef<int *>>::value, + "Removing volatile"); + namespace llvm { TEST(ArrayRefTest, AllocatorCopy) { |
