ArrayRef: Remove the equals helper with many arguments.

With initializer lists there is a really neat idiomatic way to write
this, 'ArrayRef.equals({1, 2, 3, 4, 5})'. Remove the equal method which
always had a hard limit on the number of arguments. I considered
rewriting it with variadic templates but that's not really a good fit
for a function with homogeneous arguments.

'ArrayRef == {1, 2, 3, 4, 5}' would've been even more awesome, but C++11
doesn't allow init lists with binary operators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230907 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer
2015-03-01 21:05:05 +00:00
parent e2557d9bd1
commit c255d35a10
3 changed files with 28 additions and 87 deletions

View File

@@ -57,24 +57,24 @@ TEST(ArrayRefTest, DropBack) {
TEST(ArrayRefTest, Equals) {
static const int A1[] = {1, 2, 3, 4, 5, 6, 7, 8};
ArrayRef<int> AR1(A1);
EXPECT_TRUE(AR1.equals(1, 2, 3, 4, 5, 6, 7, 8));
EXPECT_FALSE(AR1.equals(8, 1, 2, 4, 5, 6, 6, 7));
EXPECT_FALSE(AR1.equals(2, 4, 5, 6, 6, 7, 8, 1));
EXPECT_FALSE(AR1.equals(0, 1, 2, 4, 5, 6, 6, 7));
EXPECT_FALSE(AR1.equals(1, 2, 42, 4, 5, 6, 7, 8));
EXPECT_FALSE(AR1.equals(42, 2, 3, 4, 5, 6, 7, 8));
EXPECT_FALSE(AR1.equals(1, 2, 3, 4, 5, 6, 7, 42));
EXPECT_FALSE(AR1.equals(1, 2, 3, 4, 5, 6, 7));
EXPECT_FALSE(AR1.equals(1, 2, 3, 4, 5, 6, 7, 8, 9));
EXPECT_TRUE(AR1.equals({1, 2, 3, 4, 5, 6, 7, 8}));
EXPECT_FALSE(AR1.equals({8, 1, 2, 4, 5, 6, 6, 7}));
EXPECT_FALSE(AR1.equals({2, 4, 5, 6, 6, 7, 8, 1}));
EXPECT_FALSE(AR1.equals({0, 1, 2, 4, 5, 6, 6, 7}));
EXPECT_FALSE(AR1.equals({1, 2, 42, 4, 5, 6, 7, 8}));
EXPECT_FALSE(AR1.equals({42, 2, 3, 4, 5, 6, 7, 8}));
EXPECT_FALSE(AR1.equals({1, 2, 3, 4, 5, 6, 7, 42}));
EXPECT_FALSE(AR1.equals({1, 2, 3, 4, 5, 6, 7}));
EXPECT_FALSE(AR1.equals({1, 2, 3, 4, 5, 6, 7, 8, 9}));
ArrayRef<int> AR1a = AR1.drop_back();
EXPECT_TRUE(AR1a.equals(1, 2, 3, 4, 5, 6, 7));
EXPECT_FALSE(AR1a.equals(1, 2, 3, 4, 5, 6, 7, 8));
EXPECT_TRUE(AR1a.equals({1, 2, 3, 4, 5, 6, 7}));
EXPECT_FALSE(AR1a.equals({1, 2, 3, 4, 5, 6, 7, 8}));
ArrayRef<int> AR1b = AR1a.slice(2, 4);
EXPECT_TRUE(AR1b.equals(3, 4, 5, 6));
EXPECT_FALSE(AR1b.equals(2, 3, 4, 5, 6));
EXPECT_FALSE(AR1b.equals(3, 4, 5, 6, 7));
EXPECT_TRUE(AR1b.equals({3, 4, 5, 6}));
EXPECT_FALSE(AR1b.equals({2, 3, 4, 5, 6}));
EXPECT_FALSE(AR1b.equals({3, 4, 5, 6, 7}));
}
TEST(ArrayRefTest, EmptyEquals) {