summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/CMakeLists.txt131
-rw-r--r--src/plugins/cpptools/builtinindexingsupport.cpp2
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigswidget.cpp4
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp3
-rw-r--r--src/plugins/cpptools/cppclassesfilter.cpp2
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.cpp56
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.h1
-rw-r--r--src/plugins/cpptools/cppcompletionassist.cpp24
-rw-r--r--src/plugins/cpptools/cppcompletionassist.h1
-rw-r--r--src/plugins/cpptools/cppcurrentdocumentfilter.cpp2
-rw-r--r--src/plugins/cpptools/cppeditoroutline.cpp4
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp4
-rw-r--r--src/plugins/cpptools/cppfunctionsfilter.cpp2
-rw-r--r--src/plugins/cpptools/cppkitinfo.cpp6
-rw-r--r--src/plugins/cpptools/cpplocatorfilter.cpp2
-rw-r--r--src/plugins/cpptools/cpplocatorfilter_test.cpp4
-rw-r--r--src/plugins/cpptools/cppprojectinfogenerator.cpp17
-rw-r--r--src/plugins/cpptools/cpptools_clangtidychecks.h85
-rw-r--r--src/plugins/cpptools/cpptoolsconstants.h2
-rw-r--r--src/plugins/cpptools/cpptoolsjsextension.cpp48
-rw-r--r--src/plugins/cpptools/cpptoolsjsextension.h5
-rw-r--r--src/plugins/cpptools/cpptoolsplugin.cpp2
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.cpp9
-rw-r--r--src/plugins/cpptools/headerpathfilter.cpp15
-rw-r--r--src/plugins/cpptools/headerpathfilter.h2
-rw-r--r--src/plugins/cpptools/indexitem.cpp2
-rw-r--r--src/plugins/cpptools/symbolsfindfilter.cpp2
27 files changed, 346 insertions, 91 deletions
diff --git a/src/plugins/cpptools/CMakeLists.txt b/src/plugins/cpptools/CMakeLists.txt
new file mode 100644
index 0000000000..e810c379f8
--- /dev/null
+++ b/src/plugins/cpptools/CMakeLists.txt
@@ -0,0 +1,131 @@
+add_qtc_plugin(CppTools
+ DEPENDS Qt5::Network Qt5::Xml
+ PUBLIC_DEPENDS CPlusPlus
+ PLUGIN_DEPENDS Core ProjectExplorer TextEditor
+ SOURCES
+ abstracteditorsupport.cpp abstracteditorsupport.h
+ abstractoverviewmodel.h
+ baseeditordocumentparser.cpp baseeditordocumentparser.h
+ baseeditordocumentprocessor.cpp baseeditordocumentprocessor.h
+ builtincursorinfo.cpp builtincursorinfo.h
+ builtineditordocumentparser.cpp builtineditordocumentparser.h
+ builtineditordocumentprocessor.cpp builtineditordocumentprocessor.h
+ builtinindexingsupport.cpp builtinindexingsupport.h
+ clangbasechecks.ui
+ clangdiagnosticconfig.cpp clangdiagnosticconfig.h
+ clangdiagnosticconfigsmodel.cpp clangdiagnosticconfigsmodel.h
+ clangdiagnosticconfigsselectionwidget.cpp clangdiagnosticconfigsselectionwidget.h
+ clangdiagnosticconfigswidget.cpp clangdiagnosticconfigswidget.h clangdiagnosticconfigswidget.ui
+ clazychecks.ui
+ compileroptionsbuilder.cpp compileroptionsbuilder.h
+ cppbuiltinmodelmanagersupport.cpp cppbuiltinmodelmanagersupport.h
+ cppcanonicalsymbol.cpp cppcanonicalsymbol.h
+ cppchecksymbols.cpp cppchecksymbols.h
+ cppclassesfilter.cpp cppclassesfilter.h
+ cppcodeformatter.cpp cppcodeformatter.h
+ cppcodemodelinspectordumper.cpp cppcodemodelinspectordumper.h
+ cppcodemodelsettings.cpp cppcodemodelsettings.h
+ cppcodemodelsettingspage.cpp cppcodemodelsettingspage.h cppcodemodelsettingspage.ui
+ cppcodestylepreferences.cpp cppcodestylepreferences.h
+ cppcodestylepreferencesfactory.cpp cppcodestylepreferencesfactory.h
+ cppcodestylesettings.cpp cppcodestylesettings.h
+ cppcodestylesettingspage.cpp cppcodestylesettingspage.h cppcodestylesettingspage.ui
+ cppcodestylesnippets.h
+ cppcompletionassist.cpp cppcompletionassist.h
+ cppcompletionassistprocessor.cpp cppcompletionassistprocessor.h
+ cppcompletionassistprovider.cpp cppcompletionassistprovider.h
+ cppcurrentdocumentfilter.cpp cppcurrentdocumentfilter.h
+ cppcursorinfo.h
+ cppdoxygen.cpp cppdoxygen.h
+ cppeditoroutline.cpp cppeditoroutline.h
+ cppeditorwidgetinterface.h
+ cppelementevaluator.cpp cppelementevaluator.h
+ cppfileiterationorder.cpp cppfileiterationorder.h
+ cppfilesettingspage.cpp cppfilesettingspage.h cppfilesettingspage.ui
+ cppfindreferences.cpp cppfindreferences.h
+ cppfollowsymbolundercursor.cpp cppfollowsymbolundercursor.h
+ cppfunctionsfilter.cpp cppfunctionsfilter.h
+ cpphoverhandler.cpp cpphoverhandler.h
+ cppincludesfilter.cpp cppincludesfilter.h
+ cppindexingsupport.cpp cppindexingsupport.h
+ cppkitinfo.cpp cppkitinfo.h
+ cpplocalsymbols.cpp cpplocalsymbols.h
+ cpplocatordata.cpp cpplocatordata.h
+ cpplocatorfilter.cpp cpplocatorfilter.h
+ cppmodelmanager.cpp cppmodelmanager.h
+ cppmodelmanagerinterface.h
+ cppmodelmanagersupport.cpp cppmodelmanagersupport.h
+ cppoverviewmodel.cpp cppoverviewmodel.h
+ cpppointerdeclarationformatter.cpp cpppointerdeclarationformatter.h
+ cppprojectfile.cpp cppprojectfile.h
+ cppprojectfilecategorizer.cpp cppprojectfilecategorizer.h
+ cppprojectinfogenerator.cpp cppprojectinfogenerator.h
+ cppprojectpartchooser.cpp cppprojectpartchooser.h
+ cppprojectupdater.cpp cppprojectupdater.h
+ cppqtstyleindenter.cpp cppqtstyleindenter.h
+ cpprawprojectpart.cpp cpprawprojectpart.h
+ cpprefactoringchanges.cpp cpprefactoringchanges.h
+ cpprefactoringengine.cpp cpprefactoringengine.h
+ cppselectionchanger.cpp cppselectionchanger.h
+ cppsemanticinfo.h
+ cppsemanticinfoupdater.cpp cppsemanticinfoupdater.h
+ cppsourceprocessor.cpp cppsourceprocessor.h
+ cppsymbolinfo.h
+ cpptools.qrc
+ cpptools_clangtidychecks.h
+ cpptools_clazychecks.h
+ cpptools_global.h
+ cpptools_utils.h
+ cpptoolsbridge.cpp cpptoolsbridge.h
+ cpptoolsbridgeinterface.h
+ cpptoolsbridgeqtcreatorimplementation.cpp cpptoolsbridgeqtcreatorimplementation.h
+ cpptoolsconstants.h
+ cpptoolsjsextension.cpp cpptoolsjsextension.h
+ cpptoolsplugin.cpp cpptoolsplugin.h
+ cpptoolsreuse.cpp cpptoolsreuse.h
+ cpptoolssettings.cpp cpptoolssettings.h
+ cppvirtualfunctionassistprovider.cpp cppvirtualfunctionassistprovider.h
+ cppvirtualfunctionproposalitem.cpp cppvirtualfunctionproposalitem.h
+ cppworkingcopy.cpp cppworkingcopy.h
+ cursorineditor.h
+ doxygengenerator.cpp doxygengenerator.h
+ editordocumenthandle.cpp editordocumenthandle.h
+ followsymbolinterface.h
+ functionutils.cpp functionutils.h
+ generatedcodemodelsupport.cpp generatedcodemodelsupport.h
+ headerpathfilter.cpp headerpathfilter.h
+ includeutils.cpp includeutils.h
+ indexitem.cpp indexitem.h
+ insertionpointlocator.cpp insertionpointlocator.h
+ projectinfo.cpp projectinfo.h
+ projectpart.cpp projectpart.h
+ refactoringengineinterface.h
+ searchsymbols.cpp searchsymbols.h
+ semantichighlighter.cpp semantichighlighter.h
+ senddocumenttracker.cpp senddocumenttracker.h
+ stringtable.cpp stringtable.h
+ symbolfinder.cpp symbolfinder.h
+ symbolsfindfilter.cpp symbolsfindfilter.h
+ tidychecks.ui
+ typehierarchybuilder.cpp typehierarchybuilder.h
+ usages.h
+ wrappablelineedit.cpp wrappablelineedit.h
+)
+
+extend_qtc_plugin(CppTools
+ CONDITION WITH_TESTS
+ SOURCES
+ cppcodegen_test.cpp
+ cppcompletion_test.cpp
+ cppheadersource_test.cpp
+ cpplocalsymbols_test.cpp
+ cpplocatorfilter_test.cpp
+ cppmodelmanager_test.cpp
+ cpppointerdeclarationformatter_test.cpp
+ cppsourceprocessertesthelper.cpp cppsourceprocessertesthelper.h
+ cppsourceprocessor_test.cpp
+ cpptoolstestcase.cpp cpptoolstestcase.h
+ modelmanagertesthelper.cpp modelmanagertesthelper.h
+ symbolsearcher_test.cpp
+ typehierarchybuilder_test.cpp
+)
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp
index ff21e85500..ddde5699a1 100644
--- a/src/plugins/cpptools/builtinindexingsupport.cpp
+++ b/src/plugins/cpptools/builtinindexingsupport.cpp
@@ -310,7 +310,7 @@ public:
item.path = scope.split(QLatin1String("::"), QString::SkipEmptyParts);
item.text = text;
item.icon = info->icon();
- item.userData = qVariantFromValue(info);
+ item.userData = QVariant::fromValue(info);
resultItems << item;
}
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
index ea0386239f..4f03a681f0 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
@@ -910,7 +910,7 @@ void ClangDiagnosticConfigsWidget::updateValidityWidgets(const QString &errorMes
void ClangDiagnosticConfigsWidget::connectClangTidyItemChanged()
{
connect(m_tidyChecks->tidyMode,
- static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+ QOverload<int>::of(&QComboBox::currentIndexChanged),
this,
&ClangDiagnosticConfigsWidget::onClangTidyModeChanged);
connect(m_tidyTreeModel.get(), &TidyChecksTreeModel::dataChanged,
@@ -920,7 +920,7 @@ void ClangDiagnosticConfigsWidget::connectClangTidyItemChanged()
void ClangDiagnosticConfigsWidget::disconnectClangTidyItemChanged()
{
disconnect(m_tidyChecks->tidyMode,
- static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+ QOverload<int>::of(&QComboBox::currentIndexChanged),
this,
&ClangDiagnosticConfigsWidget::onClangTidyModeChanged);
disconnect(m_tidyTreeModel.get(), &TidyChecksTreeModel::dataChanged,
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index 8dfe0c7977..7d12b33f05 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -455,6 +455,8 @@ void CompilerOptionsBuilder::addLanguageVersionAndExtensions()
case LanguageVersion::CXX2a:
option = (gnuExtensions ? QLatin1String("-std=gnu++2a") : QLatin1String("-std=c++2a"));
break;
+ case LanguageVersion::None:
+ break;
}
add(option, /*gccOnlyOption=*/true);
@@ -522,6 +524,7 @@ static QStringList languageFeatureMacros()
"__cpp_guaranteed_copy_elision",
"__cpp_hex_float",
"__cpp_if_constexpr",
+ "__cpp_impl_destroying_delete",
"__cpp_inheriting_constructors",
"__cpp_init_captures",
"__cpp_initializer_lists",
diff --git a/src/plugins/cpptools/cppclassesfilter.cpp b/src/plugins/cpptools/cppclassesfilter.cpp
index 1306a155a4..ee691ba98b 100644
--- a/src/plugins/cpptools/cppclassesfilter.cpp
+++ b/src/plugins/cpptools/cppclassesfilter.cpp
@@ -43,7 +43,7 @@ CppClassesFilter::~CppClassesFilter() = default;
Core::LocatorFilterEntry CppClassesFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
{
- const QVariant id = qVariantFromValue(info);
+ const QVariant id = QVariant::fromValue(info);
Core::LocatorFilterEntry filterEntry(this, info->symbolName(), id, info->icon());
filterEntry.extraInfo = info->symbolScope().isEmpty()
? info->shortNativeFilePath()
diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
index e05c6c5eb3..692d8a8634 100644
--- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
+++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp
@@ -107,17 +107,18 @@ QString Utils::toString(::Utils::LanguageVersion languageVersion)
{
#define CASE_LANGUAGEVERSION(x) case ::Utils::LanguageVersion::x: return QLatin1String(#x)
switch (languageVersion) {
- CASE_LANGUAGEVERSION(C89);
- CASE_LANGUAGEVERSION(C99);
- CASE_LANGUAGEVERSION(C11);
- CASE_LANGUAGEVERSION(C18);
- CASE_LANGUAGEVERSION(CXX98);
- CASE_LANGUAGEVERSION(CXX03);
- CASE_LANGUAGEVERSION(CXX11);
- CASE_LANGUAGEVERSION(CXX14);
- CASE_LANGUAGEVERSION(CXX17);
- CASE_LANGUAGEVERSION(CXX2a);
- // no default to get a compiler warning if anything is added
+ CASE_LANGUAGEVERSION(None);
+ CASE_LANGUAGEVERSION(C89);
+ CASE_LANGUAGEVERSION(C99);
+ CASE_LANGUAGEVERSION(C11);
+ CASE_LANGUAGEVERSION(C18);
+ CASE_LANGUAGEVERSION(CXX98);
+ CASE_LANGUAGEVERSION(CXX03);
+ CASE_LANGUAGEVERSION(CXX11);
+ CASE_LANGUAGEVERSION(CXX14);
+ CASE_LANGUAGEVERSION(CXX17);
+ CASE_LANGUAGEVERSION(CXX2a);
+ // no default to get a compiler warning if anything is added
}
#undef CASE_LANGUAGEVERSION
return QString();
@@ -383,6 +384,17 @@ QString Utils::toString(CPlusPlus::Kind kind)
return QString();
}
+QString Utils::toString(ProjectPart::ToolChainWordWidth width)
+{
+ switch (width) {
+ case ProjectPart::ToolChainWordWidth::WordWidth32Bit:
+ return QString("32");
+ case ProjectPart::ToolChainWordWidth::WordWidth64Bit:
+ return QString("64");
+ }
+ return QString();
+}
+
QString Utils::partsForFile(const QString &fileName)
{
const QList<ProjectPart::Ptr> parts
@@ -502,16 +514,20 @@ void Dumper::dumpProjectInfos( const QList<ProjectInfo> &projectInfos)
if (!part->projectConfigFile.isEmpty())
m_out << i3 << "Project Config File: " << part->projectConfigFile << "\n";
m_out << i2 << "Project Part \"" << part->id() << "\"{{{3\n";
- m_out << i3 << "Project Part Name : " << part->displayName << "\n";
- m_out << i3 << "Project Name : " << projectName << "\n";
- m_out << i3 << "Project File : " << projectFilePath << "\n";
- m_out << i3 << "Compiler Flags : " << part->compilerFlags.join(", ") << "\n";
- m_out << i3 << "Selected For Building: " << part->selectedForBuilding << "\n";
- m_out << i3 << "Build Target Type : " << Utils::toString(part->buildTargetType) << "\n";
- m_out << i3 << "Lanugage Version : " << Utils::toString(part->languageVersion)<<"\n";
- m_out << i3 << "Lanugage Extensions : " << Utils::toString(part->languageExtensions)
+ m_out << i3 << "Project Part Name : " << part->displayName << "\n";
+ m_out << i3 << "Project Name : " << projectName << "\n";
+ m_out << i3 << "Project File : " << projectFilePath << "\n";
+ m_out << i3 << "ToolChain Type : " << part->toolchainType.toString() << "\n";
+ m_out << i3 << "ToolChain Target Triple: " << part->toolChainTargetTriple << "\n";
+ m_out << i3 << "ToolChain Word Width : " << part->toolChainWordWidth << "\n";
+ m_out << i3 << "Compiler Flags : " << part->compilerFlags.join(", ") << "\n";
+ m_out << i3 << "Selected For Building : " << part->selectedForBuilding << "\n";
+ m_out << i3 << "Build System Target : " << part->buildSystemTarget << "\n";
+ m_out << i3 << "Build Target Type : " << Utils::toString(part->buildTargetType) << "\n";
+ m_out << i3 << "Language Version : " << Utils::toString(part->languageVersion)<<"\n";
+ m_out << i3 << "Language Extensions : " << Utils::toString(part->languageExtensions)
<< "\n";
- m_out << i3 << "Qt Version : " << Utils::toString(part->qtVersion) << "\n";
+ m_out << i3 << "Qt Version : " << Utils::toString(part->qtVersion) << "\n";
if (!part->files.isEmpty()) {
m_out << i3 << "Files:{{{4\n";
diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.h b/src/plugins/cpptools/cppcodemodelinspectordumper.h
index c3100d8b33..41d294e817 100644
--- a/src/plugins/cpptools/cppcodemodelinspectordumper.h
+++ b/src/plugins/cpptools/cppcodemodelinspectordumper.h
@@ -54,6 +54,7 @@ struct CPPTOOLS_EXPORT Utils
static QString toString(const QVector<CppTools::ProjectFile> &projectFiles);
static QString toString(CppTools::ProjectFile::Kind kind);
static QString toString(CPlusPlus::Kind kind);
+ static QString toString(ProjectPart::ToolChainWordWidth width);
static QString partsForFile(const QString &fileName);
static QString unresolvedFileNameWithDelimiters(const CPlusPlus::Document::Include &include);
static QString pathListToString(const QStringList &pathList);
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index 12b226f756..b51f833afe 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -92,7 +92,10 @@ public:
void keepCompletionOperator(unsigned compOp) { m_completionOperator = compOp; }
void keepTypeOfExpression(const QSharedPointer<TypeOfExpression> &typeOfExp)
{ m_typeOfExpression = typeOfExp; }
-
+ bool isKeyword() const final
+ { return m_isKeyword; }
+ void setIsKeyword(bool isKeyword)
+ { m_isKeyword = isKeyword; }
quint64 hash() const override;
@@ -101,6 +104,7 @@ private:
unsigned m_completionOperator = T_EOF_SYMBOL;
mutable QChar m_typedChar;
bool m_isOverloaded = false;
+ bool m_isKeyword = false;
};
} // Internal
@@ -1531,6 +1535,16 @@ bool InternalCppCompletionAssistProcessor::globalCompletion(Scope *currentScope)
return !m_completions.isEmpty();
}
+void InternalCppCompletionAssistProcessor::addKeywordCompletionItem(const QString &text)
+{
+ auto item = new CppAssistProposalItem;
+ item->setText(text);
+ item->setIcon(Icons::keywordIcon());
+ item->setOrder(KeywordsOrder);
+ item->setIsKeyword(true);
+ m_completions.append(item);
+}
+
bool InternalCppCompletionAssistProcessor::completeMember(const QList<LookupItem> &baseResults)
{
const LookupContext &context = m_model->m_typeOfExpression->context();
@@ -1859,16 +1873,16 @@ void InternalCppCompletionAssistProcessor::addKeywords()
// keyword completion items.
for (int i = T_FIRST_KEYWORD; i < keywordLimit; ++i)
- addCompletionItem(QLatin1String(Token::name(i)), Icons::keywordIcon(), KeywordsOrder);
+ addKeywordCompletionItem(QLatin1String(Token::name(i)));
// primitive type completion items.
for (int i = T_FIRST_PRIMITIVE; i <= T_LAST_PRIMITIVE; ++i)
- addCompletionItem(QLatin1String(Token::name(i)), Icons::keywordIcon(), KeywordsOrder);
+ addKeywordCompletionItem(QLatin1String(Token::name(i)));
// "Identifiers with special meaning"
if (m_interface->languageFeatures().cxx11Enabled) {
- addCompletionItem(QLatin1String("override"), Icons::keywordIcon(), KeywordsOrder);
- addCompletionItem(QLatin1String("final"), Icons::keywordIcon(), KeywordsOrder);
+ addKeywordCompletionItem(QLatin1String("override"));
+ addKeywordCompletionItem(QLatin1String("final"));
}
}
diff --git a/src/plugins/cpptools/cppcompletionassist.h b/src/plugins/cpptools/cppcompletionassist.h
index e22ea38607..7213271263 100644
--- a/src/plugins/cpptools/cppcompletionassist.h
+++ b/src/plugins/cpptools/cppcompletionassist.h
@@ -138,6 +138,7 @@ private:
CPlusPlus::Scope *cursorScope);
bool globalCompletion(CPlusPlus::Scope *scope);
+ void addKeywordCompletionItem(const QString &text);
void addCompletionItem(const QString &text,
const QIcon &icon = QIcon(),
int order = 0,
diff --git a/src/plugins/cpptools/cppcurrentdocumentfilter.cpp b/src/plugins/cpptools/cppcurrentdocumentfilter.cpp
index be1163d168..fdd4920504 100644
--- a/src/plugins/cpptools/cppcurrentdocumentfilter.cpp
+++ b/src/plugins/cpptools/cppcurrentdocumentfilter.cpp
@@ -83,7 +83,7 @@ QList<Core::LocatorFilterEntry> CppCurrentDocumentFilter::matchesFor(
QRegularExpressionMatch match = regexp.match(matchString);
if (match.hasMatch()) {
const bool betterMatch = match.capturedStart() == 0;
- QVariant id = qVariantFromValue(info);
+ QVariant id = QVariant::fromValue(info);
QString name = matchString;
QString extraInfo = info->symbolScope();
if (info->type() == IndexItem::Function) {
diff --git a/src/plugins/cpptools/cppeditoroutline.cpp b/src/plugins/cpptools/cppeditoroutline.cpp
index d7840016d5..627385f107 100644
--- a/src/plugins/cpptools/cppeditoroutline.cpp
+++ b/src/plugins/cpptools/cppeditoroutline.cpp
@@ -124,9 +124,9 @@ CppEditorOutline::CppEditorOutline(TextEditor::TextEditorWidget *editorWidget)
&CppTools::CppToolsSettings::setSortedEditorDocumentOutline);
m_combo->addAction(m_sortAction);
- connect(m_combo, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated),
+ connect(m_combo, QOverload<int>::of(&QComboBox::activated),
this, &CppEditorOutline::gotoSymbolInEditor);
- connect(m_combo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+ connect(m_combo, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &CppEditorOutline::updateToolTip);
// Set up timers
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 867b3d395a..b42796c194 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -351,7 +351,7 @@ void CppFindReferences::findUsages(CPlusPlus::Symbol *symbol,
parameters.prettySymbolName = overview.prettyName(context.path(symbol).constLast());
}
- search->setUserData(qVariantFromValue(parameters));
+ search->setUserData(QVariant::fromValue(parameters));
findAll_helper(search, symbol, context);
}
@@ -571,7 +571,7 @@ static void displayResults(SearchResult *search, QFutureWatcher<CPlusPlus::Usage
parameters.filesToRename.append(node);
}
- search->setUserData(qVariantFromValue(parameters));
+ search->setUserData(QVariant::fromValue(parameters));
}
static void searchFinished(SearchResult *search, QFutureWatcher<CPlusPlus::Usage> *watcher)
diff --git a/src/plugins/cpptools/cppfunctionsfilter.cpp b/src/plugins/cpptools/cppfunctionsfilter.cpp
index f2897215df..9e023b2c64 100644
--- a/src/plugins/cpptools/cppfunctionsfilter.cpp
+++ b/src/plugins/cpptools/cppfunctionsfilter.cpp
@@ -45,7 +45,7 @@ CppFunctionsFilter::~CppFunctionsFilter() = default;
Core::LocatorFilterEntry CppFunctionsFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
{
- const QVariant id = qVariantFromValue(info);
+ const QVariant id = QVariant::fromValue(info);
QString name = info->symbolName();
QString extraInfo = info->symbolScope();
diff --git a/src/plugins/cpptools/cppkitinfo.cpp b/src/plugins/cpptools/cppkitinfo.cpp
index 6cdf7d52df..e57a4dbd73 100644
--- a/src/plugins/cpptools/cppkitinfo.cpp
+++ b/src/plugins/cpptools/cppkitinfo.cpp
@@ -48,12 +48,12 @@ KitInfo::KitInfo(Project *project)
// Toolchains
if (kit) {
- cToolChain = ToolChainKitInformation::toolChain(kit, Constants::C_LANGUAGE_ID);
- cxxToolChain = ToolChainKitInformation::toolChain(kit, Constants::CXX_LANGUAGE_ID);
+ cToolChain = ToolChainKitAspect::toolChain(kit, Constants::C_LANGUAGE_ID);
+ cxxToolChain = ToolChainKitAspect::toolChain(kit, Constants::CXX_LANGUAGE_ID);
}
// Sysroot
- sysRootPath = ProjectExplorer::SysRootKitInformation::sysRoot(kit).toString();
+ sysRootPath = ProjectExplorer::SysRootKitAspect::sysRoot(kit).toString();
}
bool KitInfo::isValid() const
diff --git a/src/plugins/cpptools/cpplocatorfilter.cpp b/src/plugins/cpptools/cpplocatorfilter.cpp
index 6865cbe5a2..aa85f8d33f 100644
--- a/src/plugins/cpptools/cpplocatorfilter.cpp
+++ b/src/plugins/cpptools/cpplocatorfilter.cpp
@@ -50,7 +50,7 @@ CppLocatorFilter::~CppLocatorFilter() = default;
Core::LocatorFilterEntry CppLocatorFilter::filterEntryFromIndexItem(IndexItem::Ptr info)
{
- const QVariant id = qVariantFromValue(info);
+ const QVariant id = QVariant::fromValue(info);
Core::LocatorFilterEntry filterEntry(this, info->scopedSymbolName(), id, info->icon());
if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum)
filterEntry.extraInfo = info->shortNativeFilePath();
diff --git a/src/plugins/cpptools/cpplocatorfilter_test.cpp b/src/plugins/cpptools/cpplocatorfilter_test.cpp
index 8c6f50390f..da6a154360 100644
--- a/src/plugins/cpptools/cpplocatorfilter_test.cpp
+++ b/src/plugins/cpptools/cpplocatorfilter_test.cpp
@@ -166,8 +166,8 @@ void CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter_data()
MyTestDataDir testDirectory("testdata_basic");
const QString testFile = testDirectory.file("file1.cpp");
const QString objTestFile = testDirectory.file("file1.mm");
- const QString testFileShort = FileUtils::shortNativePath(FileName::fromString(testFile));
- const QString objTestFileShort = FileUtils::shortNativePath(FileName::fromString(objTestFile));
+ const QString testFileShort = FileName::fromString(testFile).shortNativePath();
+ const QString objTestFileShort = FileName::fromString(objTestFile).shortNativePath();
QTest::newRow("CppFunctionsFilter")
<< testFile
diff --git a/src/plugins/cpptools/cppprojectinfogenerator.cpp b/src/plugins/cpptools/cppprojectinfogenerator.cpp
index c177c7a7d9..18c7d4fb76 100644
--- a/src/plugins/cpptools/cppprojectinfogenerator.cpp
+++ b/src/plugins/cpptools/cppprojectinfogenerator.cpp
@@ -89,10 +89,13 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
rawProjectPart.files,
rawProjectPart.fileClassifier);
- if (cat.hasParts()) {
- const ProjectPart::Ptr part = projectPartFromRawProjectPart(rawProjectPart,
- m_projectUpdateInfo.project);
+ if (!cat.hasParts())
+ return result;
+ const ProjectPart::Ptr part = projectPartFromRawProjectPart(rawProjectPart,
+ m_projectUpdateInfo.project);
+
+ if (m_projectUpdateInfo.cxxToolChain) {
if (cat.hasCxxSources()) {
result << createProjectPart(rawProjectPart,
part,
@@ -101,7 +104,6 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
Language::Cxx,
LanguageExtension::None);
}
-
if (cat.hasObjcxxSources()) {
result << createProjectPart(rawProjectPart,
part,
@@ -110,7 +112,9 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
Language::Cxx,
LanguageExtension::ObjectiveC);
}
+ }
+ if (m_projectUpdateInfo.cToolChain) {
if (cat.hasCSources()) {
result << createProjectPart(rawProjectPart,
part,
@@ -129,6 +133,7 @@ QVector<ProjectPart::Ptr> ProjectInfoGenerator::createProjectParts(const RawProj
LanguageExtension::ObjectiveC);
}
}
+
return result;
}
@@ -182,7 +187,9 @@ ProjectPart::Ptr ProjectInfoGenerator::createProjectPart(
// Header paths
if (tcInfo.headerPathsRunner) {
const ProjectExplorer::HeaderPaths builtInHeaderPaths
- = tcInfo.headerPathsRunner(flags.commandLineFlags, tcInfo.sysRootPath);
+ = tcInfo.headerPathsRunner(flags.commandLineFlags,
+ tcInfo.sysRootPath,
+ tcInfo.targetTriple);
ProjectExplorer::HeaderPaths &headerPaths = part->headerPaths;
for (const ProjectExplorer::HeaderPath &header : builtInHeaderPaths) {
diff --git a/src/plugins/cpptools/cpptools_clangtidychecks.h b/src/plugins/cpptools/cpptools_clangtidychecks.h
index 20dcbdf120..813e9b9ed5 100644
--- a/src/plugins/cpptools/cpptools_clangtidychecks.h
+++ b/src/plugins/cpptools/cpptools_clangtidychecks.h
@@ -50,7 +50,33 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"android-",
{
+ {
+ "uration-",
+ {
+ "comparison",
+ "division",
+ {
+ "factory-",
+ {
+ "float",
+ "scale"
+ }
+ },
+ "subtraction"
+ }
+ },
+ "aster-strsplit-delimiter",
+ {
+ "o-",
+ {
+ "internal-dependencies",
+ "namespace"
+ }
+ },
+ "edundant-strcat-calls",
+ "tr-cat-append",
"tring-find-startswith",
+ "pgrade-duration-conversions",
{
"cloexec-",
{
@@ -149,6 +175,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"swapped-arguments",
"terminating-continue",
"throw-keyword-missing",
+ "too-small-loop-variable",
"undefined-memory-manipulation",
"undelegated-constructor",
{
@@ -166,6 +193,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"cert-",
{
"dcl03-c",
+ "dcl16-c",
"dcl21-cpp",
"dcl50-cpp",
"dcl54-cpp",
@@ -193,6 +221,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"apiModeling.",
{
+ "StdCLibraryFunctions",
"TrustNonnull",
"google.GTest"
}
@@ -232,13 +261,13 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"cplusplus.",
{
"InnerPointer",
+ "Move",
"NewDelete",
"NewDeleteLeaks",
"SelfAssignment"
}
},
"deadcode.DeadStores",
- "llvm.Conventions",
{
"nullability.",
{
@@ -286,6 +315,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"API",
"NumberObjectConversion",
+ "OSObjectRetainCount",
"ObjCProperty",
"SecKeychainAPI",
{
@@ -357,7 +387,6 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"Malloc",
"MallocSizeof",
"MismatchedDeallocator",
- "StdCLibraryFunctions",
"Vfork",
{
"cstring.",
@@ -381,11 +410,20 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"cppcoreguidelines-",
{
- "avoid-goto",
+ {
+ "avoid-",
+ {
+ "c-arrays",
+ "goto",
+ "magic-numbers"
+ }
+ },
"c-copy-assignment-signature",
"interfaces-global-init",
+ "macro-usage",
"narrowing-conversions",
"no-malloc",
+ "non-private-member-variables-in-classes",
"owning-memory",
{
"pro-",
@@ -447,6 +485,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"objc-",
{
"avoid-throwing-exception",
+ "function-naming",
"global-variable-declaration"
}
},
@@ -473,7 +512,13 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"hicpp-",
{
- "avoid-goto",
+ {
+ "avoid-",
+ {
+ "c-arrays",
+ "goto"
+ }
+ },
"braces-around-statements",
"deprecated-headers",
"exception-baseclass",
@@ -498,6 +543,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"special-member-functions",
"static-assert",
"undelegated-constructor",
+ "uppercase-literal-suffix",
{
"use-",
{
@@ -533,7 +579,13 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"definitions-in-headers",
"misplaced-const",
"new-delete-overloads",
- "non-copyable-objects",
+ {
+ "non-",
+ {
+ "copyable-objects",
+ "private-member-variables-in-classes"
+ }
+ },
"redundant-expression",
"static-assert",
"throw-by-value-catch-by-reference",
@@ -552,8 +604,21 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"modernize-",
{
- "avoid-bind",
- "deprecated-headers",
+ {
+ "avoid-",
+ {
+ "bind",
+ "c-arrays"
+ }
+ },
+ "concat-nested-namespaces",
+ {
+ "deprecated-",
+ {
+ "headers",
+ "ios-base-aliases"
+ }
+ },
"loop-convert",
{
"make-",
@@ -589,6 +654,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"delete"
}
},
+ "nodiscard",
"noexcept",
"nullptr",
"override",
@@ -658,6 +724,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
{
"avoid-const-params-in-decls",
"braces-around-statements",
+ "const-return-type",
"container-size-empty",
"delete-null-pointer",
"deleted-default",
@@ -666,6 +733,8 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"identifier-naming",
"implicit-bool-conversion",
"inconsistent-declaration-parameter-name",
+ "isolate-declaration",
+ "magic-numbers",
"misleading-indentation",
"misplaced-array-index",
"named-parameter",
@@ -677,6 +746,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
"declaration",
"function-ptr-dereference",
"member-init",
+ "preprocessor",
"smartptr-get",
{
"string-",
@@ -703,6 +773,7 @@ static const TidyNode CLANG_TIDY_CHECKS_ROOT
},
"string-compare",
"uniqueptr-delete-release",
+ "uppercase-literal-suffix",
"rary-objects"
}
}
diff --git a/src/plugins/cpptools/cpptoolsconstants.h b/src/plugins/cpptools/cpptoolsconstants.h
index 2e1aebfd43..8490f2ccf5 100644
--- a/src/plugins/cpptools/cpptoolsconstants.h
+++ b/src/plugins/cpptools/cpptoolsconstants.h
@@ -100,7 +100,7 @@ const char SYMBOLS_FIND_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C
// CLANG_VERSION here because it might denote a version that was not yet
// released (e.g. 6.0.1, but only 6.0.0 was released).
constexpr const char TIDY_DOCUMENTATION_URL_TEMPLATE[]
- = "https://releases.llvm.org/7.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/%1.html";
+ = "https://releases.llvm.org/8.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/%1.html";
constexpr const char CLAZY_DOCUMENTATION_URL_TEMPLATE[]
= "https://github.com/KDE/clazy/blob/master/docs/checks/README-%1.md";
diff --git a/src/plugins/cpptools/cpptoolsjsextension.cpp b/src/plugins/cpptools/cpptoolsjsextension.cpp
index d5efc1db6d..d25448f304 100644
--- a/src/plugins/cpptools/cpptoolsjsextension.cpp
+++ b/src/plugins/cpptools/cpptoolsjsextension.cpp
@@ -38,33 +38,16 @@
namespace CppTools {
namespace Internal {
-QString CppToolsJsExtension::headerGuard(const QString &in) const
+static QString fileName(const QString &path, const QString &extension)
{
- return Utils::headerGuard(in);
+ return Utils::FileName::fromStringWithExtension(path, extension).toString();
}
-QString CppToolsJsExtension::fileName(const QString &path, const QString &extension) const
+QString CppToolsJsExtension::headerGuard(const QString &in) const
{
- QString raw = Utils::FileName::fromString(path, extension).toString();
- CppFileSettings settings;
- settings.fromSettings(Core::ICore::settings());
- if (!settings.lowerCaseFiles)
- return raw;
-
- QFileInfo fi = QFileInfo(raw);
- QString finalPath = fi.path();
- if (finalPath == QStringLiteral("."))
- finalPath.clear();
- if (!finalPath.isEmpty() && !finalPath.endsWith(QLatin1Char('/')))
- finalPath += QLatin1Char('/');
- QString name = fi.baseName().toLower();
- QString ext = fi.completeSuffix();
- if (!ext.isEmpty())
- ext = QString(QLatin1Char('.')) + ext;
- return finalPath + name + ext;
+ return Utils::headerGuard(in);
}
-
static QStringList parts(const QString &klass)
{
return klass.split(QStringLiteral("::"));
@@ -77,6 +60,11 @@ QStringList CppToolsJsExtension::namespaces(const QString &klass) const
return result;
}
+bool CppToolsJsExtension::hasNamespaces(const QString &klass) const
+{
+ return !namespaces(klass).empty();
+}
+
QString CppToolsJsExtension::className(const QString &klass) const
{
QStringList result = parts(klass);
@@ -85,7 +73,23 @@ QString CppToolsJsExtension::className(const QString &klass) const
QString CppToolsJsExtension::classToFileName(const QString &klass, const QString &extension) const
{
- return fileName(className(klass), extension);
+ const QString raw = fileName(className(klass), extension);
+ CppFileSettings settings;
+ settings.fromSettings(Core::ICore::settings());
+ if (!settings.lowerCaseFiles)
+ return raw;
+
+ QFileInfo fi = QFileInfo(raw);
+ QString finalPath = fi.path();
+ if (finalPath == QStringLiteral("."))
+ finalPath.clear();
+ if (!finalPath.isEmpty() && !finalPath.endsWith(QLatin1Char('/')))
+ finalPath += QLatin1Char('/');
+ QString name = fi.baseName().toLower();
+ QString ext = fi.completeSuffix();
+ if (!ext.isEmpty())
+ ext = QString(QLatin1Char('.')) + ext;
+ return finalPath + name + ext;
}
QString CppToolsJsExtension::classToHeaderGuard(const QString &klass, const QString &extension) const
diff --git a/src/plugins/cpptools/cpptoolsjsextension.h b/src/plugins/cpptools/cpptoolsjsextension.h
index 16a4010f78..b528191033 100644
--- a/src/plugins/cpptools/cpptoolsjsextension.h
+++ b/src/plugins/cpptools/cpptoolsjsextension.h
@@ -45,12 +45,11 @@ public:
// Generate header guard:
Q_INVOKABLE QString headerGuard(const QString &in) const;
- // Fix the filename casing as configured in C++/File Naming:
- Q_INVOKABLE QString fileName(const QString &path, const QString &extension) const;
-
// Work with classes:
Q_INVOKABLE QStringList namespaces(const QString &klass) const;
+ Q_INVOKABLE bool hasNamespaces(const QString &klass) const;
Q_INVOKABLE QString className(const QString &klass) const;
+ // Fix the filename casing as configured in C++/File Naming:
Q_INVOKABLE QString classToFileName(const QString &klass,
const QString &extension) const;
Q_INVOKABLE QString classToHeaderGuard(const QString &klass, const QString &extension) const;
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp
index d2ca6d5d0b..4d7599b24b 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -172,7 +172,7 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error)
d = new CppToolsPluginPrivate;
- JsExpander::registerQObjectForJs(QLatin1String("Cpp"), new CppToolsJsExtension);
+ JsExpander::registerGlobalObject<CppToolsJsExtension>("Cpp");
// Menus
ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS);
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp
index 9bcf806b7d..da1c79b4c0 100644
--- a/src/plugins/cpptools/cpptoolsreuse.cpp
+++ b/src/plugins/cpptools/cpptoolsreuse.cpp
@@ -323,18 +323,9 @@ bool fileSizeExceedsLimit(const QFileInfo &fileInfo, int sizeLimitInMb)
"C++ Indexer: Skipping file \"%1\" because it is too big.")
.arg(absoluteFilePath);
-#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
QMetaObject::invokeMethod(Core::MessageManager::instance(), [msg]() {
Core::MessageManager::write(msg, Core::MessageManager::Silent);
});
-#else
- QMetaObject::invokeMethod(Core::MessageManager::instance(),
- "write",
- Qt::QueuedConnection,
- Q_ARG(QString, msg),
- Q_ARG(Core::MessageManager::PrintToOutputPaneFlags,
- Core::MessageManager::Silent));
-#endif
qWarning().noquote() << msg;
return true;
diff --git a/src/plugins/cpptools/headerpathfilter.cpp b/src/plugins/cpptools/headerpathfilter.cpp
index b514c468d7..83ad478b0c 100644
--- a/src/plugins/cpptools/headerpathfilter.cpp
+++ b/src/plugins/cpptools/headerpathfilter.cpp
@@ -29,6 +29,8 @@
#include <coreplugin/icore.h>
#endif
+#include <projectexplorer/project.h>
+
#include <QRegularExpression>
namespace CppTools {
@@ -41,6 +43,8 @@ void HeaderPathFilter::process()
{
const HeaderPaths &headerPaths = projectPart.headerPaths;
+ addPreIncludesPath();
+
for (const HeaderPath &headerPath : headerPaths)
filterHeaderPath(headerPath);
@@ -141,6 +145,17 @@ void HeaderPathFilter::tweakHeaderPaths()
}
}
+void HeaderPathFilter::addPreIncludesPath()
+{
+ if (projectDirectory.size()) {
+ const Utils::FileName rootProjectDirectory = Utils::FileName::fromString(projectDirectory)
+ .pathAppended(".pre_includes");
+
+ systemHeaderPaths.push_back(
+ {rootProjectDirectory.toString(), ProjectExplorer::HeaderPathType::System});
+ }
+}
+
QString HeaderPathFilter::ensurePathWithSlashEnding(const QString &path)
{
QString pathWithSlashEnding = path;
diff --git a/src/plugins/cpptools/headerpathfilter.h b/src/plugins/cpptools/headerpathfilter.h
index 8b4e771994..20fbc020e8 100644
--- a/src/plugins/cpptools/headerpathfilter.h
+++ b/src/plugins/cpptools/headerpathfilter.h
@@ -53,6 +53,8 @@ private:
void tweakHeaderPaths();
+ void addPreIncludesPath();
+
bool isProjectHeaderPath(const QString &path) const;
static QString ensurePathWithSlashEnding(const QString &path);
diff --git a/src/plugins/cpptools/indexitem.cpp b/src/plugins/cpptools/indexitem.cpp
index 1a07d9eada..b9fb4cdcc5 100644
--- a/src/plugins/cpptools/indexitem.cpp
+++ b/src/plugins/cpptools/indexitem.cpp
@@ -88,7 +88,7 @@ QString IndexItem::representDeclaration() const
QString IndexItem::shortNativeFilePath() const
{
- return Utils::FileUtils::shortNativePath(Utils::FileName::fromString(m_fileName));
+ return Utils::FileName::fromString(m_fileName).shortNativePath();
}
void IndexItem::squeeze()
diff --git a/src/plugins/cpptools/symbolsfindfilter.cpp b/src/plugins/cpptools/symbolsfindfilter.cpp
index f6bc1f52ba..dd8dc4694d 100644
--- a/src/plugins/cpptools/symbolsfindfilter.cpp
+++ b/src/plugins/cpptools/symbolsfindfilter.cpp
@@ -119,7 +119,7 @@ void SymbolsFindFilter::findAll(const QString &txt, FindFlags findFlags)
parameters.flags = findFlags;
parameters.types = m_symbolsToSearch;
parameters.scope = m_scope;
- search->setUserData(qVariantFromValue(parameters));
+ search->setUserData(QVariant::fromValue(parameters));
startSearch(search);
}