Kaydet (Commit) e0686cb7 authored tarafından Noel Grandin's avatar Noel Grandin

workaround ErrorContextImpl in vclwidget clang plugin

Change-Id: I6c0265f33a88169708d0812639169b665a95fc1f
üst 5cc560f6
...@@ -265,13 +265,17 @@ bool VCLWidgets::VisitFieldDecl(const FieldDecl * fieldDecl) { ...@@ -265,13 +265,17 @@ bool VCLWidgets::VisitFieldDecl(const FieldDecl * fieldDecl) {
if (fieldDecl->isBitField()) { if (fieldDecl->isBitField()) {
return true; return true;
} }
const CXXRecordDecl *pParentRecordDecl = dyn_cast<CXXRecordDecl>(fieldDecl->getParent());
if (containsWindowSubclass(fieldDecl->getType())) { if (containsWindowSubclass(fieldDecl->getType())) {
report( // have to ignore this for now, nasty reverse dependency from tools->vcl
DiagnosticsEngine::Warning, if (!(pParentRecordDecl != nullptr && pParentRecordDecl->getQualifiedNameAsString() == "ErrorContextImpl")) {
"OutputDevice subclass declared as a pointer field, should be wrapped in VclPtr." + fieldDecl->getType().getAsString(), report(
fieldDecl->getLocation()) DiagnosticsEngine::Warning,
<< fieldDecl->getSourceRange(); "OutputDevice subclass declared as a pointer field, should be wrapped in VclPtr." + fieldDecl->getType().getAsString(),
return true; fieldDecl->getLocation())
<< fieldDecl->getSourceRange();
return true;
}
} }
const RecordType *recordType = fieldDecl->getType()->getAs<RecordType>(); const RecordType *recordType = fieldDecl->getType()->getAs<RecordType>();
if (recordType == nullptr) { if (recordType == nullptr) {
...@@ -292,7 +296,6 @@ bool VCLWidgets::VisitFieldDecl(const FieldDecl * fieldDecl) { ...@@ -292,7 +296,6 @@ bool VCLWidgets::VisitFieldDecl(const FieldDecl * fieldDecl) {
} }
// If this field is a VclPtr field, then the class MUST have a dispose method // If this field is a VclPtr field, then the class MUST have a dispose method
const CXXRecordDecl *pParentRecordDecl = dyn_cast<CXXRecordDecl>(fieldDecl->getParent());
if (pParentRecordDecl && isDerivedFromWindow(pParentRecordDecl) if (pParentRecordDecl && isDerivedFromWindow(pParentRecordDecl)
&& startsWith(recordDecl->getQualifiedNameAsString(), "VclPtr")) && startsWith(recordDecl->getQualifiedNameAsString(), "VclPtr"))
{ {
......
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