aboutsummaryrefslogtreecommitdiffstats
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/abstracteditorsupport.cpp2
-rw-r--r--src/plugins/cpptools/baseeditordocumentparser.cpp2
-rw-r--r--src/plugins/cpptools/builtineditordocumentparser.cpp16
-rw-r--r--src/plugins/cpptools/builtineditordocumentparser.h4
-rw-r--r--src/plugins/cpptools/builtinindexingsupport.cpp7
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp6
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigswidget.cpp6
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp14
-rw-r--r--src/plugins/cpptools/cppclassesfilter.cpp2
-rw-r--r--src/plugins/cpptools/cppcodemodelinspectordumper.cpp60
-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/cppelementevaluator.cpp2
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp28
-rw-r--r--src/plugins/cpptools/cppfunctionsfilter.cpp4
-rw-r--r--src/plugins/cpptools/cppheadersource_test.cpp2
-rw-r--r--src/plugins/cpptools/cppincludesfilter.cpp4
-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/cppmodelmanager.cpp23
-rw-r--r--src/plugins/cpptools/cppmodelmanager.h6
-rw-r--r--src/plugins/cpptools/cppmodelmanager_test.cpp8
-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.cpp8
-rw-r--r--src/plugins/cpptools/cpptoolsplugin.h4
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.cpp12
-rw-r--r--src/plugins/cpptools/cpptoolstestcase.cpp4
-rw-r--r--src/plugins/cpptools/cppworkingcopy.h26
-rw-r--r--src/plugins/cpptools/cursorineditor.h6
-rw-r--r--src/plugins/cpptools/doxygengenerator.cpp2
-rw-r--r--src/plugins/cpptools/doxygengenerator.h4
-rw-r--r--src/plugins/cpptools/generatedcodemodelsupport.cpp6
-rw-r--r--src/plugins/cpptools/generatedcodemodelsupport.h6
-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/modelmanagertesthelper.cpp2
-rw-r--r--src/plugins/cpptools/symbolsfindfilter.cpp4
-rw-r--r--src/plugins/cpptools/typehierarchybuilder.cpp4
48 files changed, 452 insertions, 183 deletions
diff --git a/src/plugins/cpptools/CMakeLists.txt b/src/plugins/cpptools/CMakeLists.txt
new file mode 100644
index 0000000000..c99705cbc1
--- /dev/null
+++ b/src/plugins/cpptools/CMakeLists.txt
@@ -0,0 +1,131 @@
+add_qtc_plugin(CppTools
+ DEPENDS Qt5::Network Qt5::Xml
+ PUBLIC_DEPENDS CPlusPlus Qt5::Widgets
+ 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/abstracteditorsupport.cpp b/src/plugins/cpptools/abstracteditorsupport.cpp
index 8818c83efb..05c9112555 100644
--- a/src/plugins/cpptools/abstracteditorsupport.cpp
+++ b/src/plugins/cpptools/abstracteditorsupport.cpp
@@ -62,7 +62,7 @@ QString AbstractEditorSupport::licenseTemplate(const QString &file, const QStrin
const QString license = Internal::CppFileSettings::licenseTemplate();
Utils::MacroExpander expander;
expander.registerVariable("Cpp:License:FileName", tr("The file name."),
- [file]() { return Utils::FileName::fromString(file).fileName(); });
+ [file]() { return Utils::FilePath::fromString(file).fileName(); });
expander.registerVariable("Cpp:License:ClassName", tr("The class name."),
[className]() { return className; });
diff --git a/src/plugins/cpptools/baseeditordocumentparser.cpp b/src/plugins/cpptools/baseeditordocumentparser.cpp
index f0c7d9f680..91c6a3aa79 100644
--- a/src/plugins/cpptools/baseeditordocumentparser.cpp
+++ b/src/plugins/cpptools/baseeditordocumentparser.cpp
@@ -133,7 +133,7 @@ ProjectPartInfo BaseEditorDocumentParser::determineProjectPart(
return CppModelManager::instance()->projectPart(filePath);
});
chooser.setProjectPartsFromDependenciesForFile([&](const QString &filePath) {
- const auto fileName = Utils::FileName::fromString(filePath);
+ const auto fileName = Utils::FilePath::fromString(filePath);
return CppModelManager::instance()->projectPartFromDependencies(fileName);
});
diff --git a/src/plugins/cpptools/builtineditordocumentparser.cpp b/src/plugins/cpptools/builtineditordocumentparser.cpp
index d802e67250..a8f44e1e0c 100644
--- a/src/plugins/cpptools/builtineditordocumentparser.cpp
+++ b/src/plugins/cpptools/builtineditordocumentparser.cpp
@@ -145,9 +145,9 @@ void BuiltinEditorDocumentParser::updateImpl(const QFutureInterface<void> &futur
state.snapshot = Snapshot();
} else {
// Remove changed files from the snapshot
- QSet<Utils::FileName> toRemove;
+ QSet<Utils::FilePath> toRemove;
foreach (const Document::Ptr &doc, state.snapshot) {
- const Utils::FileName fileName = Utils::FileName::fromString(doc->fileName());
+ const Utils::FilePath fileName = Utils::FilePath::fromString(doc->fileName());
if (workingCopy.contains(fileName)) {
if (workingCopy.get(fileName).second != doc->editorRevision())
addFileAndDependencies(&state.snapshot, &toRemove, fileName);
@@ -160,7 +160,7 @@ void BuiltinEditorDocumentParser::updateImpl(const QFutureInterface<void> &futur
if (!toRemove.isEmpty()) {
invalidateSnapshot = true;
- foreach (const Utils::FileName &fileName, toRemove)
+ foreach (const Utils::FilePath &fileName, toRemove)
state.snapshot.remove(fileName);
}
}
@@ -261,15 +261,15 @@ BuiltinEditorDocumentParser::Ptr BuiltinEditorDocumentParser::get(const QString
}
void BuiltinEditorDocumentParser::addFileAndDependencies(Snapshot *snapshot,
- QSet<Utils::FileName> *toRemove,
- const Utils::FileName &fileName) const
+ QSet<Utils::FilePath> *toRemove,
+ const Utils::FilePath &fileName) const
{
QTC_ASSERT(snapshot, return);
toRemove->insert(fileName);
- if (fileName != Utils::FileName::fromString(filePath())) {
- Utils::FileNameList deps = snapshot->filesDependingOn(fileName);
- toRemove->unite(QSet<Utils::FileName>::fromList(deps));
+ if (fileName != Utils::FilePath::fromString(filePath())) {
+ Utils::FilePathList deps = snapshot->filesDependingOn(fileName);
+ toRemove->unite(QSet<Utils::FilePath>::fromList(deps));
}
}
diff --git a/src/plugins/cpptools/builtineditordocumentparser.h b/src/plugins/cpptools/builtineditordocumentparser.h
index 3f53ae765e..7a1b9fd880 100644
--- a/src/plugins/cpptools/builtineditordocumentparser.h
+++ b/src/plugins/cpptools/builtineditordocumentparser.h
@@ -61,8 +61,8 @@ private:
void updateImpl(const QFutureInterface<void> &future,
const UpdateParams &updateParams) override;
void addFileAndDependencies(CPlusPlus::Snapshot *snapshot,
- QSet<Utils::FileName> *toRemove,
- const Utils::FileName &fileName) const;
+ QSet<Utils::FilePath> *toRemove,
+ const Utils::FilePath &fileName) const;
struct ExtraState {
QByteArray configFile;
diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp
index ff21e85500..3677cefc29 100644
--- a/src/plugins/cpptools/builtinindexingsupport.cpp
+++ b/src/plugins/cpptools/builtinindexingsupport.cpp
@@ -52,6 +52,7 @@ using namespace CppTools;
using namespace CppTools::Internal;
static const bool FindErrorsIndexing = qgetenv("QTC_FIND_ERRORS_INDEXING") == "1";
+static Q_LOGGING_CATEGORY(indexerLog, "qtc.cpptools.indexer", QtWarningMsg)
namespace {
@@ -205,6 +206,8 @@ void index(QFutureInterface<void> &indexingFuture,
const ProjectExplorer::HeaderPaths fallbackHeaderPaths = cmm->headerPaths();
const CPlusPlus::LanguageFeatures defaultFeatures =
CPlusPlus::LanguageFeatures::defaultFeatures();
+
+ qCDebug(indexerLog) << "About to index" << files.size() << "files.";
for (int i = 0; i < files.size(); ++i) {
if (indexingFuture.isCanceled() || superFuture.isCanceled())
break;
@@ -225,6 +228,7 @@ void index(QFutureInterface<void> &indexingFuture,
processingHeaders = true;
}
+ qCDebug(indexerLog) << " Indexing" << i + 1 << "of" << files.size() << ":" << fileName;
ProjectExplorer::HeaderPaths headerPaths = parts.isEmpty()
? fallbackHeaderPaths
: parts.first()->headerPaths;
@@ -236,6 +240,7 @@ void index(QFutureInterface<void> &indexingFuture,
if (isSourceFile)
sourceProcessor->resetEnvironment();
}
+ qCDebug(indexerLog) << "Indexing finished.";
}
void parse(QFutureInterface<void> &indexingFuture,
@@ -310,7 +315,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/clangdiagnosticconfigsselectionwidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
index eb89d7d87e..7899fcae4c 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
@@ -68,10 +68,8 @@ Core::Id ClangDiagnosticConfigsSelectionWidget::currentConfigId() const
void ClangDiagnosticConfigsSelectionWidget::connectToCurrentIndexChanged()
{
m_currentIndexChangedConnection
- = connect(m_selectionComboBox,
- static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
- this,
- [this]() { emit currentConfigChanged(currentConfigId()); });
+ = connect(m_selectionComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
+ this, [this]() { emit currentConfigChanged(currentConfigId()); });
}
void ClangDiagnosticConfigsSelectionWidget::disconnectFromCurrentIndexChanged()
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
index ea0386239f..01164bfb1a 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
@@ -70,7 +70,7 @@ static void buildTree(ProjectExplorer::Tree *parent,
current->fullPath = parent->fullPath + current->name;
parent->childDirectories.push_back(current);
} else {
- current->fullPath = Utils::FileName::fromString(current->name);
+ current->fullPath = Utils::FilePath::fromString(current->name);
}
current->parent = parent;
for (const Constants::TidyNode &nodeChild : node.children)
@@ -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..3d74ad8d32 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",
@@ -706,6 +709,7 @@ void CompilerOptionsBuilder::evaluateCompilerFlags()
qgetenv("QTC_CLANG_CMD_OPTIONS_BLACKLIST"))
.split(';', QString::SkipEmptyParts);
+ const Core::Id &toolChain = m_projectPart.toolchainType;
bool containsDriverMode = false;
bool skipNext = false;
for (const QString &option : m_projectPart.compilerFlags) {
@@ -717,6 +721,13 @@ void CompilerOptionsBuilder::evaluateCompilerFlags()
if (userBlackList.contains(option))
continue;
+ // TODO: Make it possible that the clang binary/driver ignores unknown options,
+ // as it is done for libclang/clangd (not checking for OPT_UNKNOWN).
+ if (toolChain == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) {
+ if (option == "-fkeep-inline-dllexport" || option == "-fno-keep-inline-dllexport")
+ continue;
+ }
+
// Ignore warning flags as these interfere with our user-configured diagnostics.
// Note that once "-w" is provided, no warnings will be emitted, even if "-Wall" follows.
if (m_useBuildSystemWarnings == UseBuildSystemWarnings::No
@@ -752,7 +763,7 @@ void CompilerOptionsBuilder::evaluateCompilerFlags()
// Check whether a language version is already used.
QString theOption = option;
- if (theOption.startsWith("-std=")) {
+ if (theOption.startsWith("-std=") || theOption.startsWith("--std=")) {
m_compilerFlags.isLanguageVersionSpecified = true;
theOption.replace("=c18", "=c17");
theOption.replace("=gnu18", "=gnu17");
@@ -769,7 +780,6 @@ void CompilerOptionsBuilder::evaluateCompilerFlags()
m_compilerFlags.flags.append(theOption);
}
- const Core::Id &toolChain = m_projectPart.toolchainType;
if (!containsDriverMode
&& (toolChain == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID
|| toolChain == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID)) {
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..efde14abc4 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";
@@ -597,10 +613,10 @@ void Dumper::dumpWorkingCopy(const WorkingCopy &workingCopy)
m_out << "Working Copy contains " << workingCopy.size() << " entries{{{1\n";
const QByteArray i1 = indent(1);
- QHashIterator< ::Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
+ QHashIterator< ::Utils::FilePath, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
while (it.hasNext()) {
it.next();
- const ::Utils::FileName &filePath = it.key();
+ const ::Utils::FilePath &filePath = it.key();
unsigned sourcRevision = it.value().second;
m_out << i1 << "rev=" << sourcRevision << ", " << filePath << "\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/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp
index 949442c459..88ffc3c075 100644
--- a/src/plugins/cpptools/cppelementevaluator.cpp
+++ b/src/plugins/cpptools/cppelementevaluator.cpp
@@ -83,7 +83,7 @@ class CppInclude : public CppElement
public:
explicit CppInclude(const Document::Include &includeFile)
: path(QDir::toNativeSeparators(includeFile.resolvedFileName()))
- , fileName(Utils::FileName::fromString(includeFile.resolvedFileName()).fileName())
+ , fileName(Utils::FilePath::fromString(includeFile.resolvedFileName()).fileName())
{
helpCategory = Core::HelpItem::Brief;
helpIdCandidates = QStringList(fileName);
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 867b3d395a..e277edeb4f 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -56,7 +56,7 @@ using namespace CppTools::Internal;
using namespace CppTools;
using namespace ProjectExplorer;
-static QByteArray getSource(const Utils::FileName &fileName,
+static QByteArray getSource(const Utils::FilePath &fileName,
const WorkingCopy &workingCopy)
{
if (workingCopy.contains(fileName)) {
@@ -178,7 +178,7 @@ class ProcessFile
public:
// needed by QtConcurrent
- using argument_type = const Utils::FileName &;
+ using argument_type = const Utils::FilePath &;
using result_type = QList<CPlusPlus::Usage>;
ProcessFile(const WorkingCopy &workingCopy,
@@ -193,7 +193,7 @@ public:
future(future)
{ }
- QList<CPlusPlus::Usage> operator()(const Utils::FileName &fileName)
+ QList<CPlusPlus::Usage> operator()(const Utils::FilePath &fileName)
{
QList<CPlusPlus::Usage> usages;
if (future->isPaused())
@@ -210,7 +210,7 @@ public:
CPlusPlus::Document::Ptr doc;
const QByteArray unpreprocessedSource = getSource(fileName, workingCopy);
- if (symbolDocument && fileName == Utils::FileName::fromString(symbolDocument->fileName())) {
+ if (symbolDocument && fileName == Utils::FilePath::fromString(symbolDocument->fileName())) {
doc = symbolDocument;
} else {
doc = snapshot.preprocessedDocument(unpreprocessedSource, fileName);
@@ -282,9 +282,9 @@ static void find_helper(QFutureInterface<CPlusPlus::Usage> &future,
const CPlusPlus::Snapshot snapshot = context.snapshot();
- const Utils::FileName sourceFile = Utils::FileName::fromUtf8(symbol->fileName(),
+ const Utils::FilePath sourceFile = Utils::FilePath::fromUtf8(symbol->fileName(),
symbol->fileNameLength());
- Utils::FileNameList files{sourceFile};
+ Utils::FilePathList files{sourceFile};
if (symbol->isClass()
|| symbol->isForwardClassDeclaration()
@@ -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);
}
@@ -527,7 +527,7 @@ CPlusPlus::Symbol *CppFindReferences::findSymbol(const CppFindReferencesParamete
CPlusPlus::Document::Ptr newSymbolDocument = snapshot.document(symbolFile);
// document is not parsed and has no bindings yet, do it
- QByteArray source = getSource(Utils::FileName::fromString(newSymbolDocument->fileName()),
+ QByteArray source = getSource(Utils::FilePath::fromString(newSymbolDocument->fileName()),
m_modelManager->workingCopy());
CPlusPlus::Document::Ptr doc =
snapshot.preprocessedDocument(source, newSymbolDocument->fileName());
@@ -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)
@@ -607,7 +607,7 @@ class FindMacroUsesInFile
public:
// needed by QtConcurrent
- using argument_type = const Utils::FileName &;
+ using argument_type = const Utils::FilePath &;
using result_type = QList<CPlusPlus::Usage>;
FindMacroUsesInFile(const WorkingCopy &workingCopy,
@@ -617,7 +617,7 @@ public:
: workingCopy(workingCopy), snapshot(snapshot), macro(macro), future(future)
{ }
- QList<CPlusPlus::Usage> operator()(const Utils::FileName &fileName)
+ QList<CPlusPlus::Usage> operator()(const Utils::FilePath &fileName)
{
QList<CPlusPlus::Usage> usages;
CPlusPlus::Document::Ptr doc = snapshot.document(fileName);
@@ -688,8 +688,8 @@ static void findMacroUses_helper(QFutureInterface<CPlusPlus::Usage> &future,
const CPlusPlus::Snapshot snapshot,
const CPlusPlus::Macro macro)
{
- const Utils::FileName sourceFile = Utils::FileName::fromString(macro.fileName());
- Utils::FileNameList files{sourceFile};
+ const Utils::FilePath sourceFile = Utils::FilePath::fromString(macro.fileName());
+ Utils::FilePathList files{sourceFile};
files = Utils::filteredUnique(files + snapshot.filesDependingOn(sourceFile));
future.setProgressRange(0, files.size());
@@ -736,7 +736,7 @@ void CppFindReferences::findMacroUses(const CPlusPlus::Macro &macro, const QStri
// add the macro definition itself
{
- const QByteArray &source = getSource(Utils::FileName::fromString(macro.fileName()),
+ const QByteArray &source = getSource(Utils::FilePath::fromString(macro.fileName()),
workingCopy);
unsigned column;
const QString line = FindMacroUsesInFile::matchingLine(macro.bytesOffset(), source,
diff --git a/src/plugins/cpptools/cppfunctionsfilter.cpp b/src/plugins/cpptools/cppfunctionsfilter.cpp
index f2897215df..597e0f4d03 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();
@@ -53,7 +53,7 @@ Core::LocatorFilterEntry CppFunctionsFilter::filterEntryFromIndexItem(IndexItem:
if (extraInfo.isEmpty()) {
extraInfo = info->shortNativeFilePath();
} else {
- extraInfo.append(" (" + Utils::FileName::fromString(info->fileName()).fileName() + ')');
+ extraInfo.append(" (" + Utils::FilePath::fromString(info->fileName()).fileName() + ')');
}
Core::LocatorFilterEntry filterEntry(this, name + info->symbolType(), id, info->icon());
diff --git a/src/plugins/cpptools/cppheadersource_test.cpp b/src/plugins/cpptools/cppheadersource_test.cpp
index ba830cc491..46994ed1f7 100644
--- a/src/plugins/cpptools/cppheadersource_test.cpp
+++ b/src/plugins/cpptools/cppheadersource_test.cpp
@@ -99,7 +99,7 @@ void CppToolsPlugin::initTestCase()
void CppToolsPlugin::cleanupTestCase()
{
- Utils::FileUtils::removeRecursively(Utils::FileName::fromString(baseTestDir()));
+ Utils::FileUtils::removeRecursively(Utils::FilePath::fromString(baseTestDir()));
m_fileSettings->headerSearchPaths.removeLast();
m_fileSettings->headerSearchPaths.removeLast();
m_fileSettings->sourceSearchPaths.removeLast();
diff --git a/src/plugins/cpptools/cppincludesfilter.cpp b/src/plugins/cpptools/cppincludesfilter.cpp
index 8675a9747a..8a852fb7a5 100644
--- a/src/plugins/cpptools/cppincludesfilter.cpp
+++ b/src/plugins/cpptools/cppincludesfilter.cpp
@@ -160,8 +160,8 @@ void CppIncludesFilter::prepareSearch(const QString &entry)
m_needsUpdate = false;
QSet<QString> seedPaths;
for (Project *project : SessionManager::projects()) {
- const Utils::FileNameList allFiles = project->files(Project::AllFiles);
- for (const Utils::FileName &filePath : allFiles )
+ const Utils::FilePathList allFiles = project->files(Project::AllFiles);
+ for (const Utils::FilePath &filePath : allFiles )
seedPaths.insert(filePath.toString());
}
const QList<DocumentModel::Entry *> entries = DocumentModel::entries();
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..0dd3470826 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 = FilePath::fromString(testFile).shortNativePath();
+ const QString objTestFileShort = FilePath::fromString(objTestFile).shortNativePath();
QTest::newRow("CppFunctionsFilter")
<< testFile
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 5a43feb322..c82355b31b 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -62,6 +62,7 @@
#include <projectexplorer/projectmacro.h>
#include <projectexplorer/session.h>
#include <utils/fileutils.h>
+#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <QCoreApplication>
@@ -146,7 +147,7 @@ public:
mutable QMutex m_projectMutex;
QMap<ProjectExplorer::Project *, ProjectInfo> m_projectToProjectsInfo;
QHash<ProjectExplorer::Project *, bool> m_projectToIndexerCanceled;
- QMap<Utils::FileName, QList<ProjectPart::Ptr> > m_fileToProjectParts;
+ QMap<Utils::FilePath, QList<ProjectPart::Ptr> > m_fileToProjectParts;
QMap<QString, ProjectPart::Ptr> m_projectPartIdToProjectProjectPart;
// The members below are cached/(re)calculated from the projects and/or their project parts
bool m_dirty;
@@ -513,6 +514,10 @@ CppModelManager::CppModelManager()
d->m_indexingSupporter = nullptr;
d->m_enableGC = true;
+ // Visual C++ has 1MiB, macOSX has 512KiB
+ if (Utils::HostOsInfo::isWindowsHost() || Utils::HostOsInfo::isMacHost())
+ d->m_threadPool.setStackSize(2 * 1024 * 1024);
+
qRegisterMetaType<QSet<QString> >();
connect(this, &CppModelManager::sourceFilesRefreshed,
this, &CppModelManager::onSourceFilesRefreshed);
@@ -968,7 +973,7 @@ void CppModelManager::recalculateProjectPartMappings()
foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) {
d->m_projectPartIdToProjectProjectPart[projectPart->id()] = projectPart;
foreach (const ProjectFile &cxxFile, projectPart->files)
- d->m_fileToProjectParts[Utils::FileName::fromString(cxxFile.path)].append(
+ d->m_fileToProjectParts[Utils::FilePath::fromString(cxxFile.path)].append(
projectPart);
}
@@ -1132,20 +1137,20 @@ ProjectPart::Ptr CppModelManager::projectPartForId(const QString &projectPartId)
return d->m_projectPartIdToProjectProjectPart.value(projectPartId);
}
-QList<ProjectPart::Ptr> CppModelManager::projectPart(const Utils::FileName &fileName) const
+QList<ProjectPart::Ptr> CppModelManager::projectPart(const Utils::FilePath &fileName) const
{
QMutexLocker locker(&d->m_projectMutex);
return d->m_fileToProjectParts.value(fileName);
}
QList<ProjectPart::Ptr> CppModelManager::projectPartFromDependencies(
- const Utils::FileName &fileName) const
+ const Utils::FilePath &fileName) const
{
QSet<ProjectPart::Ptr> parts;
- const Utils::FileNameList deps = snapshot().filesDependingOn(fileName);
+ const Utils::FilePathList deps = snapshot().filesDependingOn(fileName);
QMutexLocker locker(&d->m_projectMutex);
- foreach (const Utils::FileName &dep, deps) {
+ foreach (const Utils::FilePath &dep, deps) {
parts.unite(QSet<ProjectPart::Ptr>::fromList(d->m_fileToProjectParts.value(dep)));
}
@@ -1338,7 +1343,7 @@ void CppModelManager::GC()
filesInEditorSupports << abstractEditorSupport->fileName();
Snapshot currentSnapshot = snapshot();
- QSet<Utils::FileName> reachableFiles;
+ QSet<Utils::FilePath> reachableFiles;
// The configuration file is part of the project files, which is just fine.
// If single files are open, without any project, then there is no need to
// keep the configuration file around.
@@ -1349,7 +1354,7 @@ void CppModelManager::GC()
const QString file = todo.last();
todo.removeLast();
- const Utils::FileName fileName = Utils::FileName::fromString(file);
+ const Utils::FilePath fileName = Utils::FilePath::fromString(file);
if (reachableFiles.contains(fileName))
continue;
reachableFiles.insert(fileName);
@@ -1362,7 +1367,7 @@ void CppModelManager::GC()
QStringList notReachableFiles;
Snapshot newSnapshot;
for (Snapshot::const_iterator it = currentSnapshot.begin(); it != currentSnapshot.end(); ++it) {
- const Utils::FileName &fileName = it.key();
+ const Utils::FilePath &fileName = it.key();
if (reachableFiles.contains(fileName))
newSnapshot.insert(it.value());
diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h
index 2c5fe960f2..9deaa2e392 100644
--- a/src/plugins/cpptools/cppmodelmanager.h
+++ b/src/plugins/cpptools/cppmodelmanager.h
@@ -121,12 +121,12 @@ public:
/// \return The project part with the given project file
ProjectPart::Ptr projectPartForId(const QString &projectPartId) const override;
/// \return All project parts that mention the given file name as one of the sources/headers.
- QList<ProjectPart::Ptr> projectPart(const Utils::FileName &fileName) const;
+ QList<ProjectPart::Ptr> projectPart(const Utils::FilePath &fileName) const;
QList<ProjectPart::Ptr> projectPart(const QString &fileName) const
- { return projectPart(Utils::FileName::fromString(fileName)); }
+ { return projectPart(Utils::FilePath::fromString(fileName)); }
/// This is a fall-back function: find all files that includes the file directly or indirectly,
/// and return its \c ProjectPart list for use with this file.
- QList<ProjectPart::Ptr> projectPartFromDependencies(const Utils::FileName &fileName) const;
+ QList<ProjectPart::Ptr> projectPartFromDependencies(const Utils::FilePath &fileName) const;
/// \return A synthetic \c ProjectPart which consists of all defines/includes/frameworks from
/// all loaded projects.
ProjectPart::Ptr fallbackProjectPart();
diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp
index aac046745b..ceab10028e 100644
--- a/src/plugins/cpptools/cppmodelmanager_test.cpp
+++ b/src/plugins/cpptools/cppmodelmanager_test.cpp
@@ -618,10 +618,10 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
QCOMPARE(workingCopy.size(), 2); // mm->configurationFileName() and "ui_*.h"
QStringList fileNamesInWorkinCopy;
- QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
+ QHashIterator<Utils::FilePath, QPair<QByteArray, unsigned> > it = workingCopy.iterator();
while (it.hasNext()) {
it.next();
- fileNamesInWorkinCopy << Utils::FileName::fromString(it.key().toString()).fileName();
+ fileNamesInWorkinCopy << Utils::FilePath::fromString(it.key().toString()).fileName();
}
fileNamesInWorkinCopy.sort();
const QString expectedUiHeaderFileName = _("ui_mainwindow.h");
@@ -639,8 +639,8 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles()
QVERIFY(document);
const QStringList includedFiles = document->includedFiles();
QCOMPARE(includedFiles.size(), 2);
- QCOMPARE(Utils::FileName::fromString(includedFiles.at(0)).fileName(), _("mainwindow.h"));
- QCOMPARE(Utils::FileName::fromString(includedFiles.at(1)).fileName(), _("ui_mainwindow.h"));
+ QCOMPARE(Utils::FilePath::fromString(includedFiles.at(0)).fileName(), _("mainwindow.h"));
+ QCOMPARE(Utils::FilePath::fromString(includedFiles.at(1)).fileName(), _("ui_mainwindow.h"));
}
/// QTCREATORBUG-9828: Locator shows symbols of closed files
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..4c283fc644 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::FilePath::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..be52ced3f1 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -130,9 +130,9 @@ void CppToolsPlugin::clearHeaderSourceCache()
m_headerSourceMapping.clear();
}
-Utils::FileName CppToolsPlugin::licenseTemplatePath()
+Utils::FilePath CppToolsPlugin::licenseTemplatePath()
{
- return Utils::FileName::fromString(m_instance->m_fileSettings->licenseTemplatePath);
+ return Utils::FilePath::fromString(m_instance->m_fileSettings->licenseTemplatePath);
}
QString CppToolsPlugin::licenseTemplate()
@@ -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);
@@ -256,7 +256,7 @@ static QStringList findFilesInProject(const QString &name,
QString pattern = QString(1, QLatin1Char('/'));
pattern += name;
const QStringList projectFiles
- = Utils::transform(project->files(ProjectExplorer::Project::AllFiles), &Utils::FileName::toString);
+ = Utils::transform(project->files(ProjectExplorer::Project::AllFiles), &Utils::FilePath::toString);
const QStringList::const_iterator pcend = projectFiles.constEnd();
QStringList candidateList;
for (QStringList::const_iterator it = projectFiles.constBegin(); it != pcend; ++it) {
diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h
index 84e43da383..d319c9eb1e 100644
--- a/src/plugins/cpptools/cpptoolsplugin.h
+++ b/src/plugins/cpptools/cpptoolsplugin.h
@@ -36,7 +36,7 @@ class QFileInfo;
class QDir;
QT_END_NAMESPACE
-namespace Utils { class FileName; }
+namespace Utils { class FilePath; }
namespace CppTools {
@@ -63,7 +63,7 @@ public:
static const QStringList &headerPrefixes();
static const QStringList &sourcePrefixes();
static void clearHeaderSourceCache();
- static Utils::FileName licenseTemplatePath();
+ static Utils::FilePath licenseTemplatePath();
static QString licenseTemplate();
static bool usePragmaOnce();
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp
index 9bcf806b7d..0d186f8421 100644
--- a/src/plugins/cpptools/cpptoolsreuse.cpp
+++ b/src/plugins/cpptools/cpptoolsreuse.cpp
@@ -323,20 +323,10 @@ 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/cpptoolstestcase.cpp b/src/plugins/cpptools/cpptoolstestcase.cpp
index 2b6d794955..5ed334b2e8 100644
--- a/src/plugins/cpptools/cpptoolstestcase.cpp
+++ b/src/plugins/cpptools/cpptoolstestcase.cpp
@@ -340,8 +340,8 @@ static bool copyRecursively(const QString &sourceDirPath,
return file.setPermissions(file.permissions() | QFile::WriteUser);
};
- return Utils::FileUtils::copyRecursively(Utils::FileName::fromString(sourceDirPath),
- Utils::FileName::fromString(targetDirPath),
+ return Utils::FileUtils::copyRecursively(Utils::FilePath::fromString(sourceDirPath),
+ Utils::FilePath::fromString(targetDirPath),
error,
copyHelper);
}
diff --git a/src/plugins/cpptools/cppworkingcopy.h b/src/plugins/cpptools/cppworkingcopy.h
index 6c9e74caa8..1477720553 100644
--- a/src/plugins/cpptools/cppworkingcopy.h
+++ b/src/plugins/cpptools/cppworkingcopy.h
@@ -41,43 +41,43 @@ public:
WorkingCopy();
void insert(const QString &fileName, const QByteArray &source, unsigned revision = 0)
- { insert(Utils::FileName::fromString(fileName), source, revision); }
+ { insert(Utils::FilePath::fromString(fileName), source, revision); }
- void insert(const Utils::FileName &fileName, const QByteArray &source, unsigned revision = 0)
+ void insert(const Utils::FilePath &fileName, const QByteArray &source, unsigned revision = 0)
{ _elements.insert(fileName, qMakePair(source, revision)); }
bool contains(const QString &fileName) const
- { return contains(Utils::FileName::fromString(fileName)); }
+ { return contains(Utils::FilePath::fromString(fileName)); }
- bool contains(const Utils::FileName &fileName) const
+ bool contains(const Utils::FilePath &fileName) const
{ return _elements.contains(fileName); }
QByteArray source(const QString &fileName) const
- { return source(Utils::FileName::fromString(fileName)); }
+ { return source(Utils::FilePath::fromString(fileName)); }
- QByteArray source(const Utils::FileName &fileName) const
+ QByteArray source(const Utils::FilePath &fileName) const
{ return _elements.value(fileName).first; }
unsigned revision(const QString &fileName) const
- { return revision(Utils::FileName::fromString(fileName)); }
+ { return revision(Utils::FilePath::fromString(fileName)); }
- unsigned revision(const Utils::FileName &fileName) const
+ unsigned revision(const Utils::FilePath &fileName) const
{ return _elements.value(fileName).second; }
QPair<QByteArray, unsigned> get(const QString &fileName) const
- { return get(Utils::FileName::fromString(fileName)); }
+ { return get(Utils::FilePath::fromString(fileName)); }
- QPair<QByteArray, unsigned> get(const Utils::FileName &fileName) const
+ QPair<QByteArray, unsigned> get(const Utils::FilePath &fileName) const
{ return _elements.value(fileName); }
- QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> > iterator() const
- { return QHashIterator<Utils::FileName, QPair<QByteArray, unsigned> >(_elements); }
+ QHashIterator<Utils::FilePath, QPair<QByteArray, unsigned> > iterator() const
+ { return QHashIterator<Utils::FilePath, QPair<QByteArray, unsigned> >(_elements); }
int size() const
{ return _elements.size(); }
private:
- using Table = QHash<Utils::FileName, QPair<QByteArray, unsigned> >;
+ using Table = QHash<Utils::FilePath, QPair<QByteArray, unsigned> >;
Table _elements;
};
diff --git a/src/plugins/cpptools/cursorineditor.h b/src/plugins/cpptools/cursorineditor.h
index 18097e5dbd..b84633d9bc 100644
--- a/src/plugins/cpptools/cursorineditor.h
+++ b/src/plugins/cpptools/cursorineditor.h
@@ -36,7 +36,7 @@ namespace CppTools {
class CursorInEditor
{
public:
- CursorInEditor(const QTextCursor &cursor, const Utils::FileName &filePath,
+ CursorInEditor(const QTextCursor &cursor, const Utils::FilePath &filePath,
CppEditorWidgetInterface *editorWidget = nullptr)
: m_cursor(cursor)
, m_filePath(filePath)
@@ -44,10 +44,10 @@ public:
{}
CppEditorWidgetInterface *editorWidget() const { return m_editorWidget; }
const QTextCursor &cursor() const { return m_cursor; }
- const Utils::FileName &filePath() const { return m_filePath; }
+ const Utils::FilePath &filePath() const { return m_filePath; }
private:
QTextCursor m_cursor;
- Utils::FileName m_filePath;
+ Utils::FilePath m_filePath;
CppEditorWidgetInterface *m_editorWidget = nullptr;
};
diff --git a/src/plugins/cpptools/doxygengenerator.cpp b/src/plugins/cpptools/doxygengenerator.cpp
index 764930cbc9..c11cb4d7cb 100644
--- a/src/plugins/cpptools/doxygengenerator.cpp
+++ b/src/plugins/cpptools/doxygengenerator.cpp
@@ -76,7 +76,7 @@ static int lineBeforeCursor(const QTextCursor &cursor)
QString DoxygenGenerator::generate(QTextCursor cursor,
const CPlusPlus::Snapshot &snapshot,
- const Utils::FileName &documentFilePath)
+ const Utils::FilePath &documentFilePath)
{
const QTextCursor initialCursor = cursor;
diff --git a/src/plugins/cpptools/doxygengenerator.h b/src/plugins/cpptools/doxygengenerator.h
index 780525b65e..7448b12345 100644
--- a/src/plugins/cpptools/doxygengenerator.h
+++ b/src/plugins/cpptools/doxygengenerator.h
@@ -33,7 +33,7 @@ QT_FORWARD_DECLARE_CLASS(QTextCursor)
namespace CPlusPlus { class DeclarationAST; }
namespace CPlusPlus { class Snapshot; }
-namespace Utils { class FileName; }
+namespace Utils { class FilePath; }
namespace CppTools {
@@ -56,7 +56,7 @@ public:
QString generate(QTextCursor cursor,
const CPlusPlus::Snapshot &snapshot,
- const Utils::FileName &documentFilePath);
+ const Utils::FilePath &documentFilePath);
QString generate(QTextCursor cursor, CPlusPlus::DeclarationAST *decl);
private:
diff --git a/src/plugins/cpptools/generatedcodemodelsupport.cpp b/src/plugins/cpptools/generatedcodemodelsupport.cpp
index a779e38718..85825ae9ef 100644
--- a/src/plugins/cpptools/generatedcodemodelsupport.cpp
+++ b/src/plugins/cpptools/generatedcodemodelsupport.cpp
@@ -69,7 +69,7 @@ private:
GeneratedCodeModelSupport::GeneratedCodeModelSupport(CppModelManager *modelmanager,
ProjectExplorer::ExtraCompiler *generator,
- const Utils::FileName &generatedFile) :
+ const Utils::FilePath &generatedFile) :
CppTools::AbstractEditorSupport(modelmanager, generator), m_generatedFileName(generatedFile),
m_generator(generator)
{
@@ -90,7 +90,7 @@ GeneratedCodeModelSupport::~GeneratedCodeModelSupport()
qCDebug(log) << "dtor ~generatedcodemodelsupport for" << m_generatedFileName;
}
-void GeneratedCodeModelSupport::onContentsChanged(const Utils::FileName &file)
+void GeneratedCodeModelSupport::onContentsChanged(const Utils::FilePath &file)
{
if (file == m_generatedFileName) {
notifyAboutUpdatedContents();
@@ -124,7 +124,7 @@ void GeneratedCodeModelSupport::update(const QList<ProjectExplorer::ExtraCompile
continue;
extraCompilerCache.insert(generator);
- generator->forEachTarget([mm, generator](const Utils::FileName &generatedFile) {
+ generator->forEachTarget([mm, generator](const Utils::FilePath &generatedFile) {
new GeneratedCodeModelSupport(mm, generator, generatedFile);
});
}
diff --git a/src/plugins/cpptools/generatedcodemodelsupport.h b/src/plugins/cpptools/generatedcodemodelsupport.h
index 818d84e47c..0b471a1268 100644
--- a/src/plugins/cpptools/generatedcodemodelsupport.h
+++ b/src/plugins/cpptools/generatedcodemodelsupport.h
@@ -48,7 +48,7 @@ class CPPTOOLS_EXPORT GeneratedCodeModelSupport : public AbstractEditorSupport
public:
GeneratedCodeModelSupport(CppModelManager *modelmanager,
ProjectExplorer::ExtraCompiler *generator,
- const Utils::FileName &generatedFile);
+ const Utils::FilePath &generatedFile);
~GeneratedCodeModelSupport() override;
/// \returns the contents encoded in UTF-8.
@@ -59,8 +59,8 @@ public:
static void update(const QList<ProjectExplorer::ExtraCompiler *> &generators);
private:
- void onContentsChanged(const Utils::FileName &file);
- Utils::FileName m_generatedFileName;
+ void onContentsChanged(const Utils::FilePath &file);
+ Utils::FilePath m_generatedFileName;
ProjectExplorer::ExtraCompiler *m_generator;
};
diff --git a/src/plugins/cpptools/headerpathfilter.cpp b/src/plugins/cpptools/headerpathfilter.cpp
index b514c468d7..e2d1e6a4ca 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::FilePath rootProjectDirectory = Utils::FilePath::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..161a7555cd 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::FilePath::fromString(m_fileName).shortNativePath();
}
void IndexItem::squeeze()
diff --git a/src/plugins/cpptools/modelmanagertesthelper.cpp b/src/plugins/cpptools/modelmanagertesthelper.cpp
index 83e27fb237..f1029be36b 100644
--- a/src/plugins/cpptools/modelmanagertesthelper.cpp
+++ b/src/plugins/cpptools/modelmanagertesthelper.cpp
@@ -37,7 +37,7 @@ using namespace CppTools::Internal;
using namespace CppTools::Tests;
TestProject::TestProject(const QString &name, QObject *parent) :
- ProjectExplorer::Project("x-binary/foo", Utils::FileName()),
+ ProjectExplorer::Project("x-binary/foo", Utils::FilePath()),
m_name(name)
{
setParent(parent);
diff --git a/src/plugins/cpptools/symbolsfindfilter.cpp b/src/plugins/cpptools/symbolsfindfilter.cpp
index f6bc1f52ba..93f4643587 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);
}
@@ -129,7 +129,7 @@ void SymbolsFindFilter::startSearch(SearchResult *search)
QSet<QString> projectFileNames;
if (parameters.scope == SymbolSearcher::SearchProjectsOnly) {
for (ProjectExplorer::Project *project : ProjectExplorer::SessionManager::projects())
- projectFileNames += Utils::transform(project->files(ProjectExplorer::Project::AllFiles), &Utils::FileName::toString).toSet();
+ projectFileNames += Utils::transform(project->files(ProjectExplorer::Project::AllFiles), &Utils::FilePath::toString).toSet();
}
auto watcher = new QFutureWatcher<SearchResultItem>;
diff --git a/src/plugins/cpptools/typehierarchybuilder.cpp b/src/plugins/cpptools/typehierarchybuilder.cpp
index e54b546068..aee41076d7 100644
--- a/src/plugins/cpptools/typehierarchybuilder.cpp
+++ b/src/plugins/cpptools/typehierarchybuilder.cpp
@@ -193,9 +193,9 @@ QStringList TypeHierarchyBuilder::filesDependingOn(CPlusPlus::Symbol *symbol) co
if (!symbol)
return deps;
- Utils::FileName file = Utils::FileName::fromUtf8(symbol->fileName(), symbol->fileNameLength());
+ Utils::FilePath file = Utils::FilePath::fromUtf8(symbol->fileName(), symbol->fileNameLength());
deps << file.toString();
- foreach (const Utils::FileName &fileName, _snapshot.filesDependingOn(file))
+ foreach (const Utils::FilePath &fileName, _snapshot.filesDependingOn(file))
deps.append(fileName.toString());
return deps;
}