summaryrefslogtreecommitdiffstats
path: root/compilerplugins/clang/cow_wrapper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'compilerplugins/clang/cow_wrapper.cxx')
-rw-r--r--compilerplugins/clang/cow_wrapper.cxx8
1 files changed, 5 insertions, 3 deletions
diff --git a/compilerplugins/clang/cow_wrapper.cxx b/compilerplugins/clang/cow_wrapper.cxx
index d5d1b47b3a43..073a4fa9fb89 100644
--- a/compilerplugins/clang/cow_wrapper.cxx
+++ b/compilerplugins/clang/cow_wrapper.cxx
@@ -21,7 +21,7 @@
/*
Look for places where we are using cow_wrapper, but we are calling a const method on the impl object
-with a non-const pointer, which means we will unnnecessarily trigger a copy.
+with a non-const pointer, which means we will unnecessarily trigger a copy.
*/
namespace
@@ -34,6 +34,8 @@ public:
{
}
+ bool shouldVisitTemplateInstantiations() const { return true; }
+
virtual bool preRun() override { return true; }
virtual void run() override
@@ -53,7 +55,7 @@ bool Cow_Wrapper::VisitCXXMemberCallExpr(const CXXMemberCallExpr* memberCallExpr
if (!methodDecl || !methodDecl->isConst())
return true;
- auto expr = compat::IgnoreImplicit(memberCallExpr->getImplicitObjectArgument())->IgnoreParens();
+ auto expr = memberCallExpr->getImplicitObjectArgument()->IgnoreImplicit()->IgnoreParens();
auto operatorCallExpr = dyn_cast<CXXOperatorCallExpr>(expr);
if (operatorCallExpr && operatorCallExpr->getOperator() == OO_Arrow)
@@ -107,7 +109,7 @@ bool Cow_Wrapper::VisitCXXMemberCallExpr(const CXXMemberCallExpr* memberCallExpr
report(DiagnosticsEngine::Warning,
"calling const method on o3tl::cow_wrapper impl class via non-const pointer, rather use "
"std::as_const to prevent triggering an unnecessary copy",
- compat::getBeginLoc(memberCallExpr))
+ memberCallExpr->getBeginLoc())
<< memberCallExpr->getSourceRange();
return true;
}