Skip to content

Commit f3390fc

Browse files
authored
[EquivClasses] Fix signature of copy-assignment operator (#130140)
The current signature is unusual, and deviates from the C++ operator overloading spec. https://en.cppreference.com/w/cpp/language/copy_assignment
1 parent 318bd45 commit f3390fc

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

llvm/include/llvm/ADT/EquivalenceClasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class EquivalenceClasses {
144144
operator=(RHS);
145145
}
146146

147-
const EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
147+
EquivalenceClasses &operator=(const EquivalenceClasses &RHS) {
148148
TheMapping.clear();
149149
for (iterator I = RHS.begin(), E = RHS.end(); I != E; ++I)
150150
if (I->isLeader()) {

llvm/unittests/ADT/EquivalenceClassesTest.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ using namespace llvm;
1313

1414
namespace llvm {
1515

16+
TEST(EquivalenceClassesTest, CopyAssignemnt) {
17+
EquivalenceClasses<int> EC, Copy;
18+
EC.insert(1);
19+
EC.insert(4);
20+
EquivalenceClasses<int> &Ref = Copy = EC;
21+
EXPECT_EQ(Copy.getNumClasses(), 2u);
22+
EXPECT_EQ(&Ref, &Copy);
23+
}
24+
1625
TEST(EquivalenceClassesTest, NoMerges) {
1726
EquivalenceClasses<int> EqClasses;
1827
// Until we merged any sets, check that every element is only equivalent to

0 commit comments

Comments
 (0)