diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2018-09-10 19:59:18 +0000 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2018-09-10 19:59:18 +0000 |
commit | a3dc9484e3588f55907e87f0d36e605b9989a4d5 (patch) | |
tree | 76d334011928a0fc2e1dab5526926ed7398323ca /clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp | |
parent | 4d2dff01482ffb7708db699fc4ab294be7eaf715 (diff) | |
download | bcm5719-llvm-a3dc9484e3588f55907e87f0d36e605b9989a4d5.tar.gz bcm5719-llvm-a3dc9484e3588f55907e87f0d36e605b9989a4d5.zip |
[clang-tidy] ExprMutationAnalyzer: construct from references. Fixes PR38888
Summary:
I have hit this the rough way, while trying to use this in D51870.
There is no particular point in storing the pointers, and moreover
the pointers are assumed to be non-null, and that assumption is not
enforced. If they are null, it won't be able to do anything good
with them anyway.
Initially i thought about simply adding asserts() that they are
not null, but taking/storing references looks like even cleaner solution?
Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=38888 | PR38888 ]]
Reviewers: JonasToth, shuaiwang, alexfh, george.karpenkov
Reviewed By: shuaiwang
Subscribers: xazax.hun, a.sidorin, Szelethus, cfe-commits
Tags: #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D51884
llvm-svn: 341854
Diffstat (limited to 'clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp b/clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp index f1cd1daf577..f979e97a03d 100644 --- a/clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp +++ b/clang-tools-extra/clang-tidy/utils/ExprMutationAnalyzer.cpp @@ -102,7 +102,7 @@ bool ExprMutationAnalyzer::isUnevaluated(const Expr *Exp) { hasDescendant(equalsNode(Exp)))), cxxNoexceptExpr()))))) .bind("expr")), - *Stm, *Context)) != nullptr; + Stm, Context)) != nullptr; } const Stmt * @@ -125,7 +125,7 @@ ExprMutationAnalyzer::findDeclMutation(ArrayRef<BoundNodes> Matches) { const Stmt *ExprMutationAnalyzer::findDeclMutation(const Decl *Dec) { const auto Refs = match( - findAll(declRefExpr(to(equalsNode(Dec))).bind("expr")), *Stm, *Context); + findAll(declRefExpr(to(equalsNode(Dec))).bind("expr")), Stm, Context); for (const auto &RefNodes : Refs) { const auto *E = RefNodes.getNodeAs<Expr>("expr"); if (findMutation(E)) @@ -200,7 +200,7 @@ const Stmt *ExprMutationAnalyzer::findDirectMutation(const Expr *Exp) { AsNonConstRefArg, AsLambdaRefCaptureInit, AsNonConstRefReturn)) .bind("stmt")), - *Stm, *Context); + Stm, Context); return selectFirst<Stmt>("stmt", Matches); } @@ -211,7 +211,7 @@ const Stmt *ExprMutationAnalyzer::findMemberMutation(const Expr *Exp) { cxxDependentScopeMemberExpr( hasObjectExpression(equalsNode(Exp))))) .bind("expr")), - *Stm, *Context); + Stm, Context); return findExprMutation(MemberExprs); } @@ -220,7 +220,7 @@ const Stmt *ExprMutationAnalyzer::findArrayElementMutation(const Expr *Exp) { const auto SubscriptExprs = match( findAll(arraySubscriptExpr(hasBase(ignoringImpCasts(equalsNode(Exp)))) .bind("expr")), - *Stm, *Context); + Stm, Context); return findExprMutation(SubscriptExprs); } @@ -233,7 +233,7 @@ const Stmt *ExprMutationAnalyzer::findCastMutation(const Expr *Exp) { implicitCastExpr(hasImplicitDestinationType( nonConstReferenceType())))) .bind("expr")), - *Stm, *Context); + Stm, Context); return findExprMutation(Casts); } @@ -245,7 +245,7 @@ const Stmt *ExprMutationAnalyzer::findRangeLoopMutation(const Expr *Exp) { hasLoopVariable( varDecl(hasType(nonConstReferenceType())).bind("decl")), hasRangeInit(equalsNode(Exp)))), - *Stm, *Context); + Stm, Context); return findDeclMutation(LoopVars); } @@ -265,7 +265,7 @@ const Stmt *ExprMutationAnalyzer::findReferenceMutation(const Expr *Exp) { unless(hasParent(declStmt(hasParent( cxxForRangeStmt(hasRangeStmt(equalsBoundNode("stmt")))))))) .bind("decl"))), - *Stm, *Context); + Stm, Context); return findDeclMutation(Refs); } |