Skip to content

Commit cbe532b

Browse files
committed
Fix lint errors and Boost shared_ptr name
1 parent 4938dd8 commit cbe532b

File tree

2 files changed

+28
-30
lines changed

2 files changed

+28
-30
lines changed

clang-tools-extra/clang-tidy/bugprone/MoveSharedPointerContentsCheck.cpp

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,9 @@
1010
#include "../ClangTidyCheck.h"
1111
#include "../utils/Matchers.h"
1212
#include "../utils/OptionsUtils.h"
13-
#include "clang/AST/ASTContext.h"
1413
#include "clang/ASTMatchers/ASTMatchFinder.h"
1514

16-
using namespace clang::ast_matchers;
15+
using namespace clang::ast_matchers; // NOLINT
1716

1817
namespace clang::tidy::bugprone {
1918
namespace {
@@ -25,8 +24,10 @@ AST_MATCHER_P(QualType, isSharedPointer,
2524
clang::ast_matchers::internal::Matcher<NamedDecl>, InnerMatcher) {
2625
if (const auto *RD = Node.getTypePtr()->getAsCXXRecordDecl(); RD != nullptr) {
2726
return InnerMatcher.matches(*RD, Finder, Builder);
28-
} else if (const auto *ED = Node.getTypePtr()->getAs<ElaboratedType>();
29-
ED != nullptr) {
27+
}
28+
29+
if (const auto *ED = Node.getTypePtr()->getAs<ElaboratedType>();
30+
ED != nullptr) {
3031
if (const auto *TS = ED->getNamedType()
3132
.getTypePtr()
3233
->getAs<TemplateSpecializationType>();
@@ -44,17 +45,16 @@ AST_MATCHER_P(QualType, isSharedPointer,
4445
MoveSharedPointerContentsCheck::MoveSharedPointerContentsCheck(
4546
StringRef Name, ClangTidyContext *Context)
4647
: ClangTidyCheck(Name, Context),
47-
SharedPointerClasses(utils::options::parseStringList(
48-
Options.get("SharedPointerClasses",
49-
"::std::shared_ptr;::boost::shared_pointer"))) {}
48+
SharedPointerClasses(utils::options::parseStringList(Options.get(
49+
"SharedPointerClasses", "::std::shared_ptr;::boost::shared_ptr"))) {}
5050

5151
void MoveSharedPointerContentsCheck::registerMatchers(MatchFinder *Finder) {
52-
auto isStdMove =
52+
auto IsStdMove =
5353
callee(functionDecl(hasAnyName("::std::move", "::std::forward")));
5454

55-
auto resolvedType = callExpr(anyOf(
55+
auto ResolvedType = callExpr(anyOf(
5656
// Resolved type, direct move.
57-
callExpr(isStdMove,
57+
callExpr(IsStdMove,
5858
hasArgument(
5959
0, cxxOperatorCallExpr(
6060
hasOverloadedOperatorName("*"),
@@ -65,28 +65,26 @@ void MoveSharedPointerContentsCheck::registerMatchers(MatchFinder *Finder) {
6565
callee(cxxMethodDecl()))))
6666
.bind("call"),
6767
// Resolved type, move out of get().
68-
callExpr(
69-
isStdMove,
70-
hasArgument(
71-
0, unaryOperator(
72-
hasOperatorName("*"),
73-
hasUnaryOperand(allOf(
74-
hasDescendant(declRefExpr(hasType(qualType(
75-
isSharedPointer(matchers::matchesAnyListedName(
76-
SharedPointerClasses)))))),
77-
cxxMemberCallExpr(
78-
callee(cxxMethodDecl(hasName("get")))))))))
68+
callExpr(IsStdMove,
69+
hasArgument(
70+
0, unaryOperator(hasOperatorName("*"),
71+
72+
hasUnaryOperand(cxxMemberCallExpr(
73+
callee(cxxMethodDecl(hasName("get"))),
74+
on(hasType(qualType(isSharedPointer(
75+
matchers::matchesAnyListedName(
76+
SharedPointerClasses))))))))))
7977
.bind("get_call")));
8078

81-
Finder->addMatcher(resolvedType, this);
79+
Finder->addMatcher(ResolvedType, this);
8280

83-
auto isStdMoveUnresolved = callee(unresolvedLookupExpr(
81+
auto IsStdMoveUnresolved = callee(unresolvedLookupExpr(
8482
hasAnyDeclaration(namedDecl(hasUnderlyingDecl(hasName("::std::move"))))));
8583

86-
auto unresolvedType = callExpr(anyOf(
84+
auto UnResolvedType = callExpr(anyOf(
8785
// Unresolved type, direct move.
8886
callExpr(
89-
isStdMoveUnresolved,
87+
IsStdMoveUnresolved,
9088
hasArgument(0, unaryOperator(
9189
hasOperatorName("*"),
9290
hasUnaryOperand(declRefExpr(hasType(qualType(
@@ -99,7 +97,7 @@ void MoveSharedPointerContentsCheck::registerMatchers(MatchFinder *Finder) {
9997
// just fetch the variable. This does leave a gap where a temporary
10098
// shared_ptr wouldn't be caught, but moving out of a temporary
10199
// shared pointer is a truly wild thing to do so it should be okay.
102-
callExpr(isStdMoveUnresolved,
100+
callExpr(IsStdMoveUnresolved,
103101
hasArgument(
104102
0, unaryOperator(
105103
hasOperatorName("*"),
@@ -110,15 +108,15 @@ void MoveSharedPointerContentsCheck::registerMatchers(MatchFinder *Finder) {
110108
SharedPointerClasses)))))))))))
111109
.bind("unresolved_get_call")));
112110

113-
Finder->addMatcher(unresolvedType, this);
111+
Finder->addMatcher(UnResolvedType, this);
114112
}
115113

116114
void MoveSharedPointerContentsCheck::check(
117115
const MatchFinder::MatchResult &Result) {
118116
const CallExpr *Call = nullptr;
119-
for (const llvm::StringRef binding :
117+
for (const llvm::StringRef Binding :
120118
{"unresolved_call", "unresolved_get_call", "get_call", "call"}) {
121-
if (const auto *C = Result.Nodes.getNodeAs<CallExpr>(binding);
119+
if (const auto *C = Result.Nodes.getNodeAs<CallExpr>(Binding);
122120
C != nullptr) {
123121
Call = C;
124122
break;

clang-tools-extra/docs/clang-tidy/checks/bugprone/move-shared-pointer-contents.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ Options
2020
A semicolon-separated list of class names that should be treated as
2121
shared pointers. Classes are resolved through aliases, so any alias
2222
to the defined classes will be considered. Default is
23-
`::std::shared_ptr;::boost::shared_pointer`.
23+
`::std::shared_ptr;::boost::shared_ptr`.

0 commit comments

Comments
 (0)