Kaydet (Commit) 744c9247 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Adapt to Clang 3.4 again

Change-Id: I33c1cee01593b06efca6e1aae283ce80d5cd77be
üst d1c0a77e
...@@ -379,8 +379,10 @@ static void findDisposeAndClearStatements(std::set<const FieldDecl*>& aVclPtrFie ...@@ -379,8 +379,10 @@ static void findDisposeAndClearStatements(std::set<const FieldDecl*>& aVclPtrFie
return; return;
if (isa<CompoundStmt>(pStmt)) { if (isa<CompoundStmt>(pStmt)) {
const CompoundStmt *pCompoundStatement = dyn_cast<CompoundStmt>(pStmt); const CompoundStmt *pCompoundStatement = dyn_cast<CompoundStmt>(pStmt);
for(const Stmt* pStmt : pCompoundStatement->body()) { for (auto i = pCompoundStatement->body_begin();
findDisposeAndClearStatements(aVclPtrFields, pStmt); i != pCompoundStatement->body_end(); ++i)
{
findDisposeAndClearStatements(aVclPtrFields, *i);
} }
return; return;
} }
...@@ -459,22 +461,24 @@ bool VCLWidgets::VisitFunctionDecl( const FunctionDecl* functionDecl ) ...@@ -459,22 +461,24 @@ bool VCLWidgets::VisitFunctionDecl( const FunctionDecl* functionDecl )
return true; return true;
std::set<const FieldDecl*> aVclPtrFields; std::set<const FieldDecl*> aVclPtrFields;
for(const auto& fieldDecl : pMethodDecl->getParent()->fields()) { for (auto i = pMethodDecl->getParent()->field_begin();
auto const type = loplugin::TypeCheck(fieldDecl->getType()); i != pMethodDecl->getParent()->field_end(); ++i)
{
auto const type = loplugin::TypeCheck((*i)->getType());
if (type.Class("VclPtr").GlobalNamespace()) { if (type.Class("VclPtr").GlobalNamespace()) {
aVclPtrFields.insert(fieldDecl); aVclPtrFields.insert(*i);
} else if (type.Class("vector").StdNamespace() } else if (type.Class("vector").StdNamespace()
|| type.Class("map").StdNamespace() || type.Class("map").StdNamespace()
|| type.Class("list").StdNamespace() || type.Class("list").StdNamespace()
|| type.Class("set").StdNamespace()) || type.Class("set").StdNamespace())
{ {
const RecordType* recordType = dyn_cast_or_null<RecordType>(fieldDecl->getType()->getUnqualifiedDesugaredType()); const RecordType* recordType = dyn_cast_or_null<RecordType>((*i)->getType()->getUnqualifiedDesugaredType());
if (recordType) { if (recordType) {
auto d = dyn_cast<ClassTemplateSpecializationDecl>(recordType->getDecl()); auto d = dyn_cast<ClassTemplateSpecializationDecl>(recordType->getDecl());
if (d && d->getTemplateArgs().size()>0) { if (d && d->getTemplateArgs().size()>0) {
auto const type = loplugin::TypeCheck(d->getTemplateArgs()[0].getAsType()); auto const type = loplugin::TypeCheck(d->getTemplateArgs()[0].getAsType());
if (type.Class("VclPtr").GlobalNamespace()) { if (type.Class("VclPtr").GlobalNamespace()) {
aVclPtrFields.insert(fieldDecl); aVclPtrFields.insert(*i);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment