aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-08-17 17:29:25 +0200
committerEike Ziller <eike.ziller@qt.io>2017-08-17 17:29:25 +0200
commita0a42ff7bd862887bce281814f65179d88eb1de5 (patch)
treeb2182dcbbb1bef16fec1c600b8cae67e327e6ca8 /src/plugins/clangcodemodel/clangdiagnosticfilter.cpp
parentcf1edc1fb536287c1cb9760014c5dab9690bbf6a (diff)
parenta951448c4dceca637992ea29df832de190f22130 (diff)
Merge remote-tracking branch 'origin/4.4'
Conflicts: src/plugins/debugger/gdb/gdbengine.cpp Change-Id: I8a7c8ca07d6d6005f5d39b8f1477ebbc7a299fbf
Diffstat (limited to 'src/plugins/clangcodemodel/clangdiagnosticfilter.cpp')
-rw-r--r--src/plugins/clangcodemodel/clangdiagnosticfilter.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp b/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp
index 2a7d92b987b..78126eea69e 100644
--- a/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp
+++ b/src/plugins/clangcodemodel/clangdiagnosticfilter.cpp
@@ -45,8 +45,8 @@ bool isWarningOrNote(ClangBackEnd::DiagnosticSeverity severity)
Q_UNREACHABLE();
}
-bool isBlackListedDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic,
- bool isHeaderFile)
+bool isBlackListedHeaderDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic,
+ bool isHeaderFile)
{
static const Utf8StringVector blackList{
Utf8StringLiteral("warning: #pragma once in main file"),
@@ -56,6 +56,21 @@ bool isBlackListedDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic
return isHeaderFile && blackList.contains(diagnostic.text());
}
+bool isBlackListedQtDiagnostic(const ClangBackEnd::DiagnosticContainer &diagnostic)
+{
+ static const Utf8StringVector blackList{
+ // From Q_OBJECT:
+ Utf8StringLiteral("warning: "
+ "'metaObject' overrides a member function but is not marked 'override'"),
+ Utf8StringLiteral("warning: "
+ "'qt_metacast' overrides a member function but is not marked 'override'"),
+ Utf8StringLiteral("warning: "
+ "'qt_metacall' overrides a member function but is not marked 'override'"),
+ };
+
+ return blackList.contains(diagnostic.text());
+}
+
template <class Condition>
QVector<ClangBackEnd::DiagnosticContainer>
filterDiagnostics(const QVector<ClangBackEnd::DiagnosticContainer> &diagnostics,
@@ -97,7 +112,8 @@ void ClangDiagnosticFilter::filterDocumentRelatedWarnings(
const auto isLocalWarning = [this, isHeaderFile]
(const ClangBackEnd::DiagnosticContainer &diagnostic) {
return isWarningOrNote(diagnostic.severity())
- && !isBlackListedDiagnostic(diagnostic, isHeaderFile)
+ && !isBlackListedHeaderDiagnostic(diagnostic, isHeaderFile)
+ && !isBlackListedQtDiagnostic(diagnostic)
&& diagnostic.location().filePath() == m_filePath;
};