diff options
Diffstat (limited to 'llvm/unittests/ADT/ArrayRefTest.cpp')
-rw-r--r-- | llvm/unittests/ADT/ArrayRefTest.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/ArrayRefTest.cpp b/llvm/unittests/ADT/ArrayRefTest.cpp index 3ab13a34829..6cbadd6bc22 100644 --- a/llvm/unittests/ADT/ArrayRefTest.cpp +++ b/llvm/unittests/ADT/ArrayRefTest.cpp @@ -124,4 +124,20 @@ TEST(ArrayRefTest, InitializerList) { ArgTest12({1, 2}); } +// Test that makeArrayRef works on ArrayRef (no-op) +TEST(ArrayRefTest, makeArrayRef) { + static const int A1[] = {1, 2, 3, 4, 5, 6, 7, 8}; + + // No copy expected for non-const ArrayRef (true no-op) + ArrayRef<int> AR1(A1); + ArrayRef<int> &AR1Ref = makeArrayRef(AR1); + EXPECT_EQ(&AR1, &AR1Ref); + + // A copy is expected for non-const ArrayRef (thin copy) + const ArrayRef<int> AR2(A1); + const ArrayRef<int> &AR2Ref = makeArrayRef(AR2); + EXPECT_NE(&AR2Ref, &AR2); + EXPECT_TRUE(AR2.equals(AR2Ref)); +} + } // end anonymous namespace |