aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/ADT/ArrayRefTest.cpp
diff options
context:
space:
mode:
authorserge-sans-paille <sguelton@mozilla.com>2023-01-04 08:28:45 +0100
committerserge-sans-paille <sguelton@mozilla.com>2023-01-05 14:11:08 +0100
commit38818b60c58c76ba89b990978cdfd2d7b6799260 (patch)
tree63c85a12b00f87ec07dd8ad566970361e88f6fa4 /llvm/unittests/ADT/ArrayRefTest.cpp
parent11be5cc00110eaff473cd41714120a11878326fc (diff)
downloadllvm-38818b60c58c76ba89b990978cdfd2d7b6799260.zip
llvm-38818b60c58c76ba89b990978cdfd2d7b6799260.tar.gz
llvm-38818b60c58c76ba89b990978cdfd2d7b6799260.tar.bz2
Move from llvm::makeArrayRef to ArrayRef deduction guides - llvm/ part
Use deduction guides instead of helper functions. The only non-automatic changes have been: 1. ArrayRef(some_uint8_pointer, 0) needs to be changed into ArrayRef(some_uint8_pointer, (size_t)0) to avoid an ambiguous call with ArrayRef((uint8_t*), (uint8_t*)) 2. CVSymbol sym(makeArrayRef(symStorage)); needed to be rewritten as CVSymbol sym{ArrayRef(symStorage)}; otherwise the compiler is confused and thinks we have a (bad) function prototype. There was a few similar situation across the codebase. 3. ADL doesn't seem to work the same for deduction-guides and functions, so at some point the llvm namespace must be explicitly stated. 4. The "reference mode" of makeArrayRef(ArrayRef<T> &) that acts as no-op is not supported (a constructor cannot achieve that). Per reviewers' comment, some useless makeArrayRef have been removed in the process. This is a follow-up to https://reviews.llvm.org/D140896 that introduced the deduction guides. Differential Revision: https://reviews.llvm.org/D140955
Diffstat (limited to 'llvm/unittests/ADT/ArrayRefTest.cpp')
-rw-r--r--llvm/unittests/ADT/ArrayRefTest.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/llvm/unittests/ADT/ArrayRefTest.cpp b/llvm/unittests/ADT/ArrayRefTest.cpp
index 9fcddc8..0aea5a9 100644
--- a/llvm/unittests/ADT/ArrayRefTest.cpp
+++ b/llvm/unittests/ADT/ArrayRefTest.cpp
@@ -44,9 +44,9 @@ namespace {
TEST(ArrayRefTest, AllocatorCopy) {
BumpPtrAllocator Alloc;
static const uint16_t Words1[] = { 1, 4, 200, 37 };
- ArrayRef<uint16_t> Array1 = makeArrayRef(Words1, 4);
+ ArrayRef<uint16_t> Array1 = ArrayRef(Words1, 4);
static const uint16_t Words2[] = { 11, 4003, 67, 64000, 13 };
- ArrayRef<uint16_t> Array2 = makeArrayRef(Words2, 5);
+ ArrayRef<uint16_t> Array2 = ArrayRef(Words2, 5);
ArrayRef<uint16_t> Array1c = Array1.copy(Alloc);
ArrayRef<uint16_t> Array2c = Array2.copy(Alloc);
EXPECT_TRUE(Array1.equals(Array1c));
@@ -63,9 +63,9 @@ TEST(ArrayRefTest, AllocatorCopy) {
void operator=(const NonAssignable &RHS) { assert(RHS.Ptr != nullptr); }
bool operator==(const NonAssignable &RHS) const { return Ptr == RHS.Ptr; }
} Array3Src[] = {"hello", "world"};
- ArrayRef<NonAssignable> Array3Copy = makeArrayRef(Array3Src).copy(Alloc);
- EXPECT_EQ(makeArrayRef(Array3Src), Array3Copy);
- EXPECT_NE(makeArrayRef(Array3Src).data(), Array3Copy.data());
+ ArrayRef<NonAssignable> Array3Copy = ArrayRef(Array3Src).copy(Alloc);
+ EXPECT_EQ(ArrayRef(Array3Src), Array3Copy);
+ EXPECT_NE(ArrayRef(Array3Src).data(), Array3Copy.data());
}
// This test is pure UB given the ArrayRef<> implementation.
@@ -222,31 +222,32 @@ TEST(ArrayRefTest, EmptyInitializerList) {
EXPECT_TRUE(A.empty());
}
-TEST(ArrayRefTest, makeArrayRef) {
+TEST(ArrayRefTest, ArrayRef) {
static const int A1[] = {1, 2, 3, 4, 5, 6, 7, 8};
- // No copy expected for non-const ArrayRef (true no-op)
+ // A copy is expected for non-const ArrayRef (thin copy)
ArrayRef<int> AR1(A1);
- ArrayRef<int> &AR1Ref = makeArrayRef(AR1);
- EXPECT_EQ(&AR1, &AR1Ref);
+ const ArrayRef<int> &AR1Ref = ArrayRef(AR1);
+ EXPECT_NE(&AR1, &AR1Ref);
+ EXPECT_TRUE(AR1.equals(AR1Ref));
// A copy is expected for non-const ArrayRef (thin copy)
const ArrayRef<int> AR2(A1);
- const ArrayRef<int> &AR2Ref = makeArrayRef(AR2);
+ const ArrayRef<int> &AR2Ref = ArrayRef(AR2);
EXPECT_NE(&AR2Ref, &AR2);
EXPECT_TRUE(AR2.equals(AR2Ref));
}
TEST(ArrayRefTest, OwningArrayRef) {
static const int A1[] = {0, 1};
- OwningArrayRef<int> A(makeArrayRef(A1));
+ OwningArrayRef<int> A{ArrayRef(A1)};
OwningArrayRef<int> B(std::move(A));
EXPECT_EQ(A.data(), nullptr);
}
-TEST(ArrayRefTest, makeArrayRefFromStdArray) {
+TEST(ArrayRefTest, ArrayRefFromStdArray) {
std::array<int, 5> A1{{42, -5, 0, 1000000, -1000000}};
- ArrayRef<int> A2 = makeArrayRef(A1);
+ ArrayRef<int> A2 = ArrayRef(A1);
EXPECT_EQ(A1.size(), A2.size());
for (std::size_t i = 0; i < A1.size(); ++i) {