loplugin:simplifyconstruct exclude std::unique_ptr with custom deleter
Change-Id: I8f4ba883747a2aace88786ef807fd7c338bef5da
This commit is contained in:
parent
e06a123937
commit
b74db41383
@ -51,7 +51,7 @@ bool SimplifyConstruct::VisitCXXConstructExpr(CXXConstructExpr const* constructE
|
||||
.Namespace("com")
|
||||
.GlobalNamespace())
|
||||
return true;
|
||||
if (constructExpr->getNumArgs() > 0
|
||||
if (constructExpr->getNumArgs() == 1
|
||||
&& isa<CXXNullPtrLiteralExpr>(constructExpr->getArg(0)->IgnoreParenImpCasts()))
|
||||
{
|
||||
report(DiagnosticsEngine::Warning,
|
||||
|
@ -15,11 +15,11 @@ struct Foo
|
||||
void acquire();
|
||||
void release();
|
||||
};
|
||||
class Foo16
|
||||
class Foo1
|
||||
{
|
||||
std::unique_ptr<int> m_pbar1;
|
||||
rtl::Reference<Foo> m_pbar2;
|
||||
Foo16()
|
||||
Foo1()
|
||||
: m_pbar1(nullptr)
|
||||
// expected-error@-1 {{no need to explicitly init this with nullptr, just use default constructor [loplugin:simplifyconstruct]}}
|
||||
, m_pbar2(nullptr)
|
||||
@ -27,4 +27,21 @@ class Foo16
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// no warning expected when using std::unique_ptr constructor with a custom deleter
|
||||
struct ITypeLib
|
||||
{
|
||||
};
|
||||
struct IUnknown
|
||||
{
|
||||
void Release();
|
||||
};
|
||||
void func2()
|
||||
{
|
||||
std::unique_ptr<IUnknown, void (*)(IUnknown * p)> aITypeLibGuard(nullptr, [](IUnknown* p) {
|
||||
if (p)
|
||||
p->Release();
|
||||
});
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|
||||
|
Loading…
x
Reference in New Issue
Block a user