Skip to content

Commit 935aa2e

Browse files
committed
Address review comments
1 parent ad14635 commit 935aa2e

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

clang/lib/Sema/SemaDeclCXX.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7535,8 +7535,15 @@ void Sema::CheckExplicitlyDefaultedFunction(Scope *S, FunctionDecl *FD) {
75357535
return;
75367536
}
75377537

7538-
if (DefKind.isComparison() && isa<CXXRecordDecl>(FD->getDeclContext()))
7539-
UnusedPrivateFields.clear();
7538+
if (DefKind.isComparison()) {
7539+
auto PT = FD->getParamDecl(0)->getType();
7540+
if (const CXXRecordDecl *RD =
7541+
PT.getNonReferenceType()->getAsCXXRecordDecl()) {
7542+
for (FieldDecl *Field : RD->fields()) {
7543+
UnusedPrivateFields.remove(Field);
7544+
}
7545+
}
7546+
}
75407547

75417548
if (DefKind.isSpecialMember()
75427549
? CheckExplicitlyDefaultedSpecialMember(cast<CXXMethodDecl>(FD),

clang/test/SemaCXX/warn-unused-private-field.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,20 @@ class SpaceShipDefaultCompare {
2020
int operator<=>(const SpaceShipDefaultCompare &) const = default;
2121
};
2222

23-
class UnusedConstPrivateField {
24-
public:
25-
UnusedConstPrivateField() : unused_(0) {}
26-
private:
27-
const int unused_; // expected-warning{{private field 'unused_' is not used}}
23+
class HasUnusedField {
24+
int unused_; // expected-warning{{private field 'unused_' is not used}}
2825
};
2926

3027
class FriendEqDefaultCompare {
28+
int used;
3129
friend auto operator==(FriendEqDefaultCompare, FriendEqDefaultCompare) -> bool = default;
3230
};
3331

32+
class UnrelatedFriendEqDefaultCompare {
33+
friend auto operator==(UnrelatedFriendEqDefaultCompare, UnrelatedFriendEqDefaultCompare) -> bool = default;
34+
int operator<=>(const UnrelatedFriendEqDefaultCompare &) const = default;
35+
};
36+
3437
#endif
3538

3639
class NotFullyDefined {

0 commit comments

Comments
 (0)