diff options
author | Eike Ziller <eike.ziller@qt.io> | 2019-02-20 10:05:07 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2019-02-20 10:05:07 +0100 |
commit | 7f4c6e38bf89271950c752af123ce5a9680ab3ac (patch) | |
tree | 0dc2f4b3b2ec6835786c58154bd026da4700acf2 /src/plugins/clangcodemodel | |
parent | ee42f833d712d681661d1efed84f8672949e1ed6 (diff) | |
parent | 2e58938404c7c54c741d976816d304cc8447cc56 (diff) |
Merge remote-tracking branch 'origin/4.9'
Change-Id: I0d3db14e583628b906d7fdeb800e004d98e52632
Diffstat (limited to 'src/plugins/clangcodemodel')
17 files changed, 105 insertions, 39 deletions
diff --git a/src/plugins/clangcodemodel/clangcurrentdocumentfilter.cpp b/src/plugins/clangcodemodel/clangcurrentdocumentfilter.cpp index 951c6efd53..702d4557b6 100644 --- a/src/plugins/clangcodemodel/clangcurrentdocumentfilter.cpp +++ b/src/plugins/clangcodemodel/clangcurrentdocumentfilter.cpp @@ -48,6 +48,7 @@ #include <QRegularExpression> namespace ClangCodeModel { +namespace Internal { ClangCurrentDocumentFilter::ClangCurrentDocumentFilter() { @@ -108,7 +109,6 @@ QList<Core::LocatorFilterEntry> ClangCurrentDocumentFilter::matchesFor( if (!regexp.isValid()) return goodEntries; - using Internal::ClangEditorDocumentProcessor; ClangEditorDocumentProcessor *processor = ClangEditorDocumentProcessor::get(m_currentPath); if (!processor) return goodEntries; @@ -170,4 +170,5 @@ void ClangCurrentDocumentFilter::onCurrentEditorChanged(Core::IEditor *newCurren reset(); } +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangcurrentdocumentfilter.h b/src/plugins/clangcodemodel/clangcurrentdocumentfilter.h index e355862bdf..891905fbda 100644 --- a/src/plugins/clangcodemodel/clangcurrentdocumentfilter.h +++ b/src/plugins/clangcodemodel/clangcurrentdocumentfilter.h @@ -30,6 +30,7 @@ namespace Core { class IEditor; } namespace ClangCodeModel { +namespace Internal { class ClangCurrentDocumentFilter : public Core::ILocatorFilter { @@ -53,4 +54,5 @@ private: QString m_currentPath; }; +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp index 4811e1b543..5151279a28 100644 --- a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp +++ b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp @@ -46,6 +46,7 @@ using namespace ClangCodeModel; using Internal::ClangDiagnosticWidget; +using Internal::ClangFixItOperation; namespace { @@ -87,7 +88,7 @@ void openEditorAt(const ClangBackEnd::DiagnosticContainer &diagnostic) void applyFixit(const ClangBackEnd::DiagnosticContainer &diagnostic) { - ClangCodeModel::ClangFixItOperation operation(Utf8String(), diagnostic.fixIts); + ClangFixItOperation operation(Utf8String(), diagnostic.fixIts); operation.perform(); } diff --git a/src/plugins/clangcodemodel/clangeditordocumentparser.cpp b/src/plugins/clangcodemodel/clangeditordocumentparser.cpp index 0d4195c538..b892f39364 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentparser.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentparser.cpp @@ -26,6 +26,7 @@ #include "clangeditordocumentparser.h" namespace ClangCodeModel { +namespace Internal { ClangEditorDocumentParser::ClangEditorDocumentParser(const QString &filePath) : BaseEditorDocumentParser(filePath) @@ -46,4 +47,5 @@ void ClangEditorDocumentParser::updateImpl(const QFutureInterface<void> &, setState(state_); } +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangeditordocumentparser.h b/src/plugins/clangcodemodel/clangeditordocumentparser.h index 28dd52a46a..a5b2ff27bf 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentparser.h +++ b/src/plugins/clangcodemodel/clangeditordocumentparser.h @@ -28,6 +28,7 @@ #include <cpptools/baseeditordocumentparser.h> namespace ClangCodeModel { +namespace Internal { class ClangEditorDocumentParser : public CppTools::BaseEditorDocumentParser { @@ -41,4 +42,5 @@ private: const UpdateParams &updateParams) override; }; +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangfixitoperation.cpp b/src/plugins/clangcodemodel/clangfixitoperation.cpp index b123c9af45..a7170dc881 100644 --- a/src/plugins/clangcodemodel/clangfixitoperation.cpp +++ b/src/plugins/clangcodemodel/clangfixitoperation.cpp @@ -32,6 +32,7 @@ #include <QTextDocument> namespace ClangCodeModel { +namespace Internal { using FileToFixits = QMap<QString, QVector<ClangBackEnd::FixItContainer>>; using FileToFixitsIterator = QMapIterator<QString, QVector<ClangBackEnd::FixItContainer>>; @@ -50,7 +51,7 @@ int ClangFixItOperation::priority() const return 10; } -QString ClangCodeModel::ClangFixItOperation::description() const +QString ClangFixItOperation::description() const { return QStringLiteral("Apply Fix: ") + fixItText.toString(); } @@ -120,5 +121,5 @@ Utils::ChangeSet ClangFixItOperation::toChangeSet( return changeSet; } +} // namespace Internal } // namespace ClangCodeModel - diff --git a/src/plugins/clangcodemodel/clangfixitoperation.h b/src/plugins/clangcodemodel/clangfixitoperation.h index 4f37f3d479..7caf0cf652 100644 --- a/src/plugins/clangcodemodel/clangfixitoperation.h +++ b/src/plugins/clangcodemodel/clangfixitoperation.h @@ -34,13 +34,13 @@ #include <QVector> #include <QSharedPointer> -namespace TextEditor -{ +namespace TextEditor { class RefactoringChanges; class RefactoringFile; } namespace ClangCodeModel { +namespace Internal { class ClangFixItOperation : public TextEditor::QuickFixOperation { @@ -67,4 +67,5 @@ private: QVector<ClangBackEnd::FixItContainer> fixItContainers; }; +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangfixitoperationsextractor.cpp b/src/plugins/clangcodemodel/clangfixitoperationsextractor.cpp index 8ec6496794..981a679a9b 100644 --- a/src/plugins/clangcodemodel/clangfixitoperationsextractor.cpp +++ b/src/plugins/clangcodemodel/clangfixitoperationsextractor.cpp @@ -72,6 +72,7 @@ bool hasFixItAt(const QVector<ClangBackEnd::FixItContainer> &fixits, } // anonymous namespace namespace ClangCodeModel { +namespace Internal { ClangFixItOperationsExtractor::ClangFixItOperationsExtractor( const QVector<DiagnosticContainer> &diagnosticContainers) @@ -114,4 +115,5 @@ void ClangFixItOperationsExtractor::extractFromDiagnostic( } } +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangfixitoperationsextractor.h b/src/plugins/clangcodemodel/clangfixitoperationsextractor.h index ee2da9a4b2..77b5643f8b 100644 --- a/src/plugins/clangcodemodel/clangfixitoperationsextractor.h +++ b/src/plugins/clangcodemodel/clangfixitoperationsextractor.h @@ -30,6 +30,7 @@ #include <clangsupport/diagnosticcontainer.h> namespace ClangCodeModel { +namespace Internal { class ClangFixItOperationsExtractor { @@ -50,4 +51,5 @@ private: TextEditor::QuickFixOperations operations; }; +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp b/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp index 27eeea1af4..46bdbc33ea 100644 --- a/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp +++ b/src/plugins/clangcodemodel/clanghighlightingresultreporter.cpp @@ -144,6 +144,7 @@ TextEditor::HighlightingResult toHighlightingResult( } // anonymous namespace ClangCodeModel { +namespace Internal { HighlightingResultReporter::HighlightingResultReporter( const QVector<ClangBackEnd::TokenInfoContainer> &tokenInfos) @@ -219,4 +220,5 @@ QFuture<TextEditor::HighlightingResult> HighlightingResultReporter::start() return future; } +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clanghighlightingresultreporter.h b/src/plugins/clangcodemodel/clanghighlightingresultreporter.h index 0f57bc10d8..2c6e7a89a8 100644 --- a/src/plugins/clangcodemodel/clanghighlightingresultreporter.h +++ b/src/plugins/clangcodemodel/clanghighlightingresultreporter.h @@ -35,6 +35,7 @@ #include <clangsupport/tokeninfocontainer.h> namespace ClangCodeModel { +namespace Internal { class HighlightingResultReporter: public QObject, @@ -67,4 +68,5 @@ private: unsigned m_flushLine = 0; }; +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.cpp b/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.cpp index 07fdaba9e5..72c6c2dd09 100644 --- a/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.cpp +++ b/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.cpp @@ -30,6 +30,7 @@ #include <cplusplus/Token.h> namespace ClangCodeModel { +namespace Internal { bool ClangPreprocessorAssistProposalItem::prematurelyApplies(const QChar &typedCharacter) const { @@ -156,4 +157,5 @@ bool ClangPreprocessorAssistProposalItem::isInclude() const || m_completionOperator == CPlusPlus::T_ANGLE_STRING_LITERAL; } +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.h b/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.h index cbdb5383b0..1a5ee440a0 100644 --- a/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.h +++ b/src/plugins/clangcodemodel/clangpreprocessorassistproposalitem.h @@ -31,6 +31,7 @@ #include <QString> namespace ClangCodeModel { +namespace Internal { class ClangPreprocessorAssistProposalItem final : public TextEditor::AssistProposalItemInterface { @@ -68,4 +69,5 @@ private: mutable QChar m_typedCharacter; }; +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangrefactoringengine.cpp b/src/plugins/clangcodemodel/clangrefactoringengine.cpp index bb985a650e..ed9af84d66 100644 --- a/src/plugins/clangcodemodel/clangrefactoringengine.cpp +++ b/src/plugins/clangcodemodel/clangrefactoringengine.cpp @@ -30,13 +30,14 @@ #include <utils/qtcassert.h> namespace ClangCodeModel { +namespace Internal { void RefactoringEngine::startLocalRenaming(const CppTools::CursorInEditor &data, CppTools::ProjectPart *, RenameCallback &&renameSymbolsCallback) { - Internal::ClangEditorDocumentProcessor *processor = Internal::ClangEditorDocumentProcessor::get( - data.filePath().toString()); + ClangEditorDocumentProcessor *processor = ClangEditorDocumentProcessor::get( + data.filePath().toString()); const int startRevision = data.cursor().document()->revision(); using ClangBackEnd::SourceLocationsContainer; @@ -79,4 +80,5 @@ void RefactoringEngine::startLocalRenaming(const CppTools::CursorInEditor &data, m_watcher->setFuture(cursorFuture); } -} +} // namespace Internal +} // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangrefactoringengine.h b/src/plugins/clangcodemodel/clangrefactoringengine.h index 79537f24df..297c8ff238 100644 --- a/src/plugins/clangcodemodel/clangrefactoringengine.h +++ b/src/plugins/clangcodemodel/clangrefactoringengine.h @@ -36,6 +36,7 @@ class RefactoringServerInterface; } namespace ClangCodeModel { +namespace Internal { class RefactoringEngine : public CppTools::RefactoringEngineInterface { @@ -60,4 +61,5 @@ private: std::unique_ptr<FutureCursorWatcher> m_watcher; }; +} // namespace Internal } // namespace ClangRefactoring diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index 61a4c7716c..f756acf2d3 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -48,9 +48,12 @@ #include <QLayout> #include <QString> +using namespace CppTools; +using namespace ClangCodeModel::Internal; using namespace Utils; namespace ClangCodeModel { +namespace Internal { namespace { @@ -75,9 +78,6 @@ static Core::Id categoryForSeverity(ClangBackEnd::DiagnosticSeverity severity) ProjectExplorer::Project *projectForCurrentEditor() { - using namespace CppTools; - using namespace ClangCodeModel::Internal; - const QString filePath = Utils::currentCppEditorDocumentFilePath(); if (filePath.isEmpty()) return nullptr; @@ -90,35 +90,80 @@ ProjectExplorer::Project *projectForCurrentEditor() return nullptr; } -void disableDiagnosticInConfig(CppTools::ClangDiagnosticConfig &config, - const ClangBackEnd::DiagnosticContainer &diagnostic) +enum class DiagnosticType { Clang, Tidy, Clazy }; +DiagnosticType diagnosticType(const ClangBackEnd::DiagnosticContainer &diagnostic) + { - // Clang check - if (!diagnostic.disableOption.isEmpty()) { - config.setClangOptions(config.clangOptions() + QStringList(diagnostic.disableOption)); - return; - } + if (!diagnostic.disableOption.isEmpty()) + return DiagnosticType::Clang; - // Clazy check + const Utils::DiagnosticTextInfo textInfo(diagnostic.text); + if (Utils::DiagnosticTextInfo::isClazyOption(textInfo.option())) + return DiagnosticType::Clazy; + return DiagnosticType::Tidy; +} + +void disableDiagnosticInConfig(ClangDiagnosticConfig &config, + const ClangBackEnd::DiagnosticContainer &diagnostic) +{ using namespace ClangCodeModel::Utils; - DiagnosticTextInfo textInfo(diagnostic.text); - if (DiagnosticTextInfo::isClazyOption(textInfo.option())) { + + switch (diagnosticType(diagnostic)) { + case DiagnosticType::Clang: + config.setClangOptions(config.clangOptions() + QStringList(diagnostic.disableOption)); + break; + case DiagnosticType::Tidy: + config.setClangTidyChecks(config.clangTidyChecks() + QString(",-") + + DiagnosticTextInfo(diagnostic.text).option()); + break; + case DiagnosticType::Clazy: { + const DiagnosticTextInfo textInfo(diagnostic.text); const QString checkName = DiagnosticTextInfo::clazyCheckName(textInfo.option()); QStringList newChecks = config.clazyChecks().split(','); newChecks.removeOne(checkName); config.setClazyChecks(newChecks.join(',')); - return; + break; + } } +} + +ClangDiagnosticConfig diagnosticConfig(ClangProjectSettings &projectSettings, + CppCodeModelSettings &globalSettings) +{ + ProjectExplorer::Project *project = projectForCurrentEditor(); + QTC_ASSERT(project, return {}); + + // Get config id + Core::Id currentConfigId = projectSettings.warningConfigId(); + if (projectSettings.useGlobalConfig()) + currentConfigId = globalSettings.clangDiagnosticConfigId(); - // Tidy check - config.setClangTidyChecks(config.clangTidyChecks() + QString(",-") + textInfo.option()); + // Get config + ClangDiagnosticConfigsModel configsModel(globalSettings.clangCustomDiagnosticConfigs()); + QTC_ASSERT(configsModel.hasConfigWithId(currentConfigId), return {}); + return configsModel.configWithId(currentConfigId); } -void disableDiagnosticInCurrentProjectConfig(const ClangBackEnd::DiagnosticContainer &diagnostic) +bool isDiagnosticConfigChangable(ProjectExplorer::Project *project, + const ClangBackEnd::DiagnosticContainer &diagnostic) { - using namespace CppTools; - using namespace ClangCodeModel::Internal; + if (!project) + return false; + + ClangProjectSettings &projectSettings = ClangModelManagerSupport::instance()->projectSettings( + project); + const QSharedPointer<CppCodeModelSettings> globalSettings = codeModelSettings(); + const ClangDiagnosticConfig config = diagnosticConfig(projectSettings, *globalSettings); + if (config.clangTidyMode() == ClangDiagnosticConfig::TidyMode::File + && diagnosticType(diagnostic) == DiagnosticType::Tidy) { + return false; + } + return true; +} + +void disableDiagnosticInCurrentProjectConfig(const ClangBackEnd::DiagnosticContainer &diagnostic) +{ ProjectExplorer::Project *project = projectForCurrentEditor(); QTC_ASSERT(project, return ); @@ -127,15 +172,9 @@ void disableDiagnosticInCurrentProjectConfig(const ClangBackEnd::DiagnosticConta project); const QSharedPointer<CppCodeModelSettings> globalSettings = codeModelSettings(); - // Get config id - Core::Id currentConfigId = projectSettings.warningConfigId(); - if (projectSettings.useGlobalConfig()) - currentConfigId = globalSettings->clangDiagnosticConfigId(); - // Get config + ClangDiagnosticConfig config = diagnosticConfig(projectSettings, *globalSettings); ClangDiagnosticConfigsModel configsModel(globalSettings->clangCustomDiagnosticConfigs()); - QTC_ASSERT(configsModel.hasConfigWithId(currentConfigId), return ); - ClangDiagnosticConfig config = configsModel.configWithId(currentConfigId); // Create copy if needed if (config.isReadOnly()) { @@ -197,7 +236,6 @@ ClangTextMark::ClangTextMark(const FileName &fileName, QAction *action = new QAction(); action->setIcon(QIcon::fromTheme("edit-copy", ::Utils::Icons::COPY.icon())); QObject::connect(action, &QAction::triggered, [diagnostic]() { - using namespace ClangCodeModel::Internal; const QString text = ClangDiagnosticWidget::createText({diagnostic}, ClangDiagnosticWidget::InfoBar); QApplication::clipboard()->setText(text, QClipboard::Clipboard); @@ -205,7 +243,8 @@ ClangTextMark::ClangTextMark(const FileName &fileName, actions << action; // Remove diagnostic warning action - if (projectForCurrentEditor()) { + ProjectExplorer::Project *project = projectForCurrentEditor(); + if (project && isDiagnosticConfigChangable(project, diagnostic)) { action = new QAction(); action->setIcon(::Utils::Icons::BROKEN.icon()); QObject::connect(action, &QAction::triggered, [diagnostic]() { @@ -228,8 +267,6 @@ void ClangTextMark::updateIcon(bool valid) bool ClangTextMark::addToolTipContent(QLayout *target) const { - using Internal::ClangDiagnosticWidget; - QWidget *widget = ClangDiagnosticWidget::createWidget({m_diagnostic}, ClangDiagnosticWidget::ToolTip); target->addWidget(widget); @@ -243,5 +280,6 @@ void ClangTextMark::removedFromEditor() m_removedFromEditorHandler(this); } +} // namespace Internal } // namespace ClangCodeModel diff --git a/src/plugins/clangcodemodel/clangtextmark.h b/src/plugins/clangcodemodel/clangtextmark.h index 00cadfb5c8..ae67bcef86 100644 --- a/src/plugins/clangcodemodel/clangtextmark.h +++ b/src/plugins/clangcodemodel/clangtextmark.h @@ -33,6 +33,7 @@ #include <functional> namespace ClangCodeModel { +namespace Internal { class ClangTextMark : public TextEditor::TextMark { @@ -56,4 +57,5 @@ private: RemovedFromEditorHandler m_removedFromEditorHandler; }; +} // namespace Internal } // namespace ClangCodeModel |