diff options
author | Marco Bubke <[email protected]> | 2015-08-31 16:28:26 +0200 |
---|---|---|
committer | Marco Bubke <[email protected]> | 2015-08-31 14:59:16 +0000 |
commit | b278dc87ca8662ff98aeabc03ed4293021aab955 (patch) | |
tree | 4589ec81eb345979f52fd1fc7a293d4b0ea177d1 /src/plugins/clangcodemodel/clangtextmark.cpp | |
parent | 8dfa9a5dab144797e446b09979be98642403259a (diff) |
Clang: Add diagnostics
Diagnostics are now moved to the clang backend process. Fixits are
supported too.
Change-Id: I20faacf466bbf78dec479220c3d7b336a47bc453
Reviewed-by: Nikolai Kosjar <[email protected]>
Diffstat (limited to 'src/plugins/clangcodemodel/clangtextmark.cpp')
-rw-r--r-- | src/plugins/clangcodemodel/clangtextmark.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp new file mode 100644 index 00000000000..e6692487637 --- /dev/null +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms and +** conditions see http://www.qt.io/terms-conditions. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "clangtextmark.h" + +#include "constants.h" + +#include <coreplugin/coreconstants.h> + +#include <QString> +#include <QApplication> + +#include <utils/tooltip/tooltip.h> + +namespace ClangCodeModel { + +namespace { + +bool isWarningOrNote(ClangBackEnd::DiagnosticSeverity severity) +{ + using ClangBackEnd::DiagnosticSeverity; + switch (severity) { + case DiagnosticSeverity::Ignored: + case DiagnosticSeverity::Note: + case DiagnosticSeverity::Warning: return true; + default: return false; + } + + Q_UNREACHABLE(); +} + +Core::Id cartegoryForSeverity(ClangBackEnd::DiagnosticSeverity severity) +{ + return isWarningOrNote(severity) ? Constants::CLANG_WARNING : Constants::CLANG_ERROR; +} + +const QIcon &iconForSeverity(ClangBackEnd::DiagnosticSeverity severity) +{ + static const QIcon errorIcon{QLatin1String(Core::Constants::ICON_ERROR)}; + static const QIcon warningIcon{QLatin1String(Core::Constants::ICON_WARNING)}; + + return isWarningOrNote(severity) ? warningIcon : errorIcon; +} + +} // anonymous namespace + +ClangTextMark::ClangTextMark(const QString &fileName, int lineNumber, ClangBackEnd::DiagnosticSeverity severity) + : TextEditor::TextMark(fileName, lineNumber, cartegoryForSeverity(severity)) +{ + setPriority(TextEditor::TextMark::HighPriority); + setIcon(iconForSeverity(severity)); +} + +} // namespace ClangCodeModel + |