summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin Lebar <jlebar@google.com>2016-10-21 20:13:39 +0000
committerJustin Lebar <jlebar@google.com>2016-10-21 20:13:39 +0000
commitae90ad2065786be5168919740100258cf0fe43f9 (patch)
tree04cd6b38365c99d9b2d2d1be60f7368d9ce93ce2
parentc9d66eb05b3e76e3d33e4f11525ef888f1629234 (diff)
downloadbcm5719-llvm-ae90ad2065786be5168919740100258cf0fe43f9.tar.gz
bcm5719-llvm-ae90ad2065786be5168919740100258cf0fe43f9.zip
[clang-tidy] Don't use a SmallSetVector of an enum.
Summary: This doesn't work after converting SmallSetVector to use DenseSet. Instead we can just use a SmallVector. Reviewers: timshen Subscribers: nemanjai, cfe-commits Differential Revision: https://reviews.llvm.org/D25647 llvm-svn: 284873
-rw-r--r--clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp11
-rw-r--r--clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h4
2 files changed, 10 insertions, 5 deletions
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
index 5a487d54e81..62f791e6576 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.cpp
@@ -97,8 +97,13 @@ void SpecialMemberFunctionsCheck::check(
{"move-assign", SpecialMemberFunctionKind::MoveAssignment}};
for (const auto &KV : Matchers)
- if (Result.Nodes.getNodeAs<CXXMethodDecl>(KV.first))
- ClassWithSpecialMembers[ID].insert(KV.second);
+ if (Result.Nodes.getNodeAs<CXXMethodDecl>(KV.first)) {
+ SpecialMemberFunctionKind Kind = KV.second;
+ llvm::SmallVectorImpl<SpecialMemberFunctionKind> &Members =
+ ClassWithSpecialMembers[ID];
+ if (find(Members, Kind) == Members.end())
+ Members.push_back(Kind);
+ }
}
void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
@@ -125,7 +130,7 @@ void SpecialMemberFunctionsCheck::onEndOfTranslationUnit() {
std::back_inserter(UndefinedSpecialMembers));
diag(C.first.first, "class '%0' defines %1 but does not define %2")
- << C.first.second << join(DefinedSpecialMembers.getArrayRef(), " and ")
+ << C.first.second << join(DefinedSpecialMembers, " and ")
<< join(UndefinedSpecialMembers, " or ");
}
}
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
index 227d3591cf0..c4e31c2f457 100644
--- a/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
+++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/SpecialMemberFunctionsCheck.h
@@ -31,7 +31,7 @@ public:
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
void onEndOfTranslationUnit() override;
- enum class SpecialMemberFunctionKind {
+ enum class SpecialMemberFunctionKind : uint8_t {
Destructor,
CopyConstructor,
CopyAssignment,
@@ -43,7 +43,7 @@ public:
using ClassDefiningSpecialMembersMap =
llvm::DenseMap<ClassDefId,
- llvm::SmallSetVector<SpecialMemberFunctionKind, 5>>;
+ llvm::SmallVector<SpecialMemberFunctionKind, 5>>;
private:
ClassDefiningSpecialMembersMap ClassWithSpecialMembers;
OpenPOWER on IntegriCloud