diff options
author | Eike Ziller <eike.ziller@qt.io> | 2018-11-06 09:20:00 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2018-11-06 09:20:00 +0100 |
commit | 1473bc5891cc06ff7f0a431fe0212b4321e266de (patch) | |
tree | 188c5862ef56c1ee7b06439b5423ea650dfc125a /src/plugins/cpptools | |
parent | 9d296cf1f12e95f55f25a8ca11608df29b11dfce (diff) | |
parent | e18cbad28592eb911b8c82b7f71b8ee0382a19f9 (diff) | |
download | qt-creator-1473bc5891cc06ff7f0a431fe0212b4321e266de.tar.gz |
Merge remote-tracking branch 'origin/4.8'
Conflicts:
src/plugins/debugger/debuggermainwindow.cpp
src/plugins/qbsprojectmanager/qbsbuildstep.cpp
src/plugins/winrt/winrtdevicefactory.cpp
tests/unit/unittest/gtest-creator-printing.cpp
tests/unit/unittest/gtest-creator-printing.h
tests/unit/unittest/unittest.pro
Change-Id: Ie9b80b87a8a4fa81baf72a2daa7919b21371c15e
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 17 | ||||
-rw-r--r-- | src/plugins/cpptools/cpplocatorfilter.cpp | 19 | ||||
-rw-r--r-- | src/plugins/cpptools/cpplocatorfilter_test.cpp | 22 | ||||
-rw-r--r-- | src/plugins/cpptools/cppprojectinfogenerator.cpp | 3 |
5 files changed, 39 insertions, 24 deletions
diff --git a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp index e7d6846578..70432047cf 100644 --- a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp +++ b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp @@ -112,7 +112,7 @@ void ClangDiagnosticConfigsSelectionWidget::connectToClangDiagnosticConfigsDialo ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget(currentConfigId()); widget->layout()->setMargin(0); QDialog dialog; - dialog.setWindowTitle(widget->tr("Diagnostic Configurations")); + dialog.setWindowTitle(ClangDiagnosticConfigsWidget::tr("Diagnostic Configurations")); dialog.setLayout(new QVBoxLayout); dialog.layout()->addWidget(widget); auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 1dbcff2e03..4857e20c2e 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -65,19 +65,17 @@ QStringList CompilerOptionsBuilder::build(CppTools::ProjectFile::Kind fileKind, return QStringList();); } + if (fileKind == ProjectFile::CXXHeader || fileKind == ProjectFile::CXXSource) { + QTC_ASSERT(m_projectPart.languageVersion > ProjectExplorer::LanguageVersion::LatestC, + return QStringList();); + } + add("-c"); addWordWidth(); addTargetTriple(); addExtraCodeModelFlags(); - if (m_projectPart.toolchainType - == ProjectExplorer::Constants::COMPILATION_DATABASE_TOOLCHAIN_TYPEID) { - addHeaderPathOptions(); - insertWrappedQtHeaders(); - return options(); - } - updateLanguageOption(fileKind); addOptionsForLanguage(/*checkForBorlandExtensions*/ true); enableExceptions(); @@ -258,6 +256,9 @@ static int includeIndexForResourceDirectory(const QStringList &options, bool isM void CompilerOptionsBuilder::insertWrappedQtHeaders() { + if (m_skipBuiltInHeaderPathsAndDefines == SkipBuiltIn::Yes) + return; + QStringList wrappedQtHeaders; addWrappedQtHeadersIncludePath(wrappedQtHeaders); @@ -503,6 +504,7 @@ static QStringList languageFeatureMacros() QLatin1String("__cpp_exceptions"), QLatin1String("__cpp_fold_expressions"), QLatin1String("__cpp_generic_lambdas"), + QLatin1String("__cpp_guaranteed_copy_elision"), QLatin1String("__cpp_hex_float"), QLatin1String("__cpp_if_constexpr"), QLatin1String("__cpp_inheriting_constructors"), @@ -514,6 +516,7 @@ static QStringList languageFeatureMacros() QLatin1String("__cpp_nested_namespace_definitions"), QLatin1String("__cpp_noexcept_function_type"), QLatin1String("__cpp_nontype_template_args"), + QLatin1String("__cpp_nontype_template_parameter_auto"), QLatin1String("__cpp_nsdmi"), QLatin1String("__cpp_range_based_for"), QLatin1String("__cpp_raw_strings"), diff --git a/src/plugins/cpptools/cpplocatorfilter.cpp b/src/plugins/cpptools/cpplocatorfilter.cpp index 109e999b23..ee2a2db395 100644 --- a/src/plugins/cpptools/cpplocatorfilter.cpp +++ b/src/plugins/cpptools/cpplocatorfilter.cpp @@ -70,6 +70,7 @@ void CppLocatorFilter::refresh(QFutureInterface<void> &future) QList<Core::LocatorFilterEntry> CppLocatorFilter::matchesFor( QFutureInterface<Core::LocatorFilterEntry> &future, const QString &entry) { + QList<Core::LocatorFilterEntry> normalEntries; QList<Core::LocatorFilterEntry> goodEntries; QList<Core::LocatorFilterEntry> betterEntries; QList<Core::LocatorFilterEntry> bestEntries; @@ -91,9 +92,14 @@ QList<Core::LocatorFilterEntry> CppLocatorFilter::matchesFor( const QString symbolName = info->symbolName(); QString matchString = hasColonColon ? info->scopedSymbolName() : symbolName; int matchOffset = hasColonColon ? matchString.size() - symbolName.size() : 0; - if (type == IndexItem::Function) - matchString += info->symbolType(); QRegularExpressionMatch match = regexp.match(matchString); + bool matchInParameterList = false; + if (!match.hasMatch() && (type == IndexItem::Function)) { + matchString += info->symbolType(); + match = regexp.match(matchString); + matchInParameterList = true; + } + if (match.hasMatch()) { Core::LocatorFilterEntry filterEntry = filterEntryFromIndexItem(info); @@ -109,9 +115,11 @@ QList<Core::LocatorFilterEntry> CppLocatorFilter::matchesFor( start -= matchOffset; } - if (matchString.startsWith(entry, caseSensitivityForPrefix)) + if (matchInParameterList) + normalEntries.append(filterEntry); + else if (filterEntry.displayName.startsWith(entry, caseSensitivityForPrefix)) bestEntries.append(filterEntry); - else if (matchString.contains(entry, caseSensitivityForPrefix)) + else if (filterEntry.displayName.contains(entry, caseSensitivityForPrefix)) betterEntries.append(filterEntry); else goodEntries.append(filterEntry); @@ -124,6 +132,8 @@ QList<Core::LocatorFilterEntry> CppLocatorFilter::matchesFor( return IndexItem::Recurse; }); + if (normalEntries.size() < 1000) + Utils::sort(normalEntries, Core::LocatorFilterEntry::compareLexigraphically); if (goodEntries.size() < 1000) Utils::sort(goodEntries, Core::LocatorFilterEntry::compareLexigraphically); if (betterEntries.size() < 1000) @@ -133,6 +143,7 @@ QList<Core::LocatorFilterEntry> CppLocatorFilter::matchesFor( bestEntries += betterEntries; bestEntries += goodEntries; + bestEntries += normalEntries; return bestEntries; } diff --git a/src/plugins/cpptools/cpplocatorfilter_test.cpp b/src/plugins/cpptools/cpplocatorfilter_test.cpp index a9fc6e3405..e7a1775fd7 100644 --- a/src/plugins/cpptools/cpplocatorfilter_test.cpp +++ b/src/plugins/cpptools/cpplocatorfilter_test.cpp @@ -198,8 +198,9 @@ void CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter_data() << _("pos") << (QList<ResultData>() << ResultData(_("positiveNumber()"), testFileShort) - << ResultData(_("matchArgument(Pos)"), testFileShort) + << ResultData(_("somePositionWithin()"), testFileShort) << ResultData(_("pointOfService()"), testFileShort) + << ResultData(_("matchArgument(Pos)"), testFileShort) ); QTest::newRow("CppFunctionsFilter-arguments") @@ -238,13 +239,15 @@ void CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter_data() << cppFunctionsFilter << _("MyClass::func") << (QList<ResultData>() - << ResultData(_("functionDefinedInClass(bool, int)"), _("MyClass (file1.cpp)")) - << ResultData(_("functionDefinedOutSideClass(char)"), _("MyClass (file1.cpp)")) + << ResultData(_("functionDefinedInClass(bool, int)"), + _("MyClass (file1.cpp)")) << ResultData(_("functionDefinedInClass(bool, int)"), _("MyNamespace::MyClass (file1.cpp)")) << ResultData(_("functionDefinedInClass(bool, int)"), _("<anonymous namespace>::MyClass (file1.cpp)")) << ResultData(_("functionDefinedOutSideClass(char)"), + _("MyClass (file1.cpp)")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyNamespace::MyClass (file1.cpp)")) << ResultData(_("functionDefinedOutSideClass(char)"), _("<anonymous namespace>::MyClass (file1.cpp)")) @@ -276,12 +279,6 @@ void CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter_data() << cppLocatorFilter << _("my") << (QList<ResultData>() - << ResultData(_("<anonymous namespace>::MyClass"), testFileShort) - << ResultData(_("<anonymous namespace>::MyClass::MyClass"), _("()")) - << ResultData(_("<anonymous namespace>::MyClass::functionDefinedOutSideClass"), - _("(char)")) - << ResultData(_("<anonymous namespace>::MyEnum"), testFileShort) - << ResultData(_("<anonymous namespace>::myFunction"), _("(bool, int)")) << ResultData(_("MyClass"), testFileShort) << ResultData(_("MyClass::MyClass"), _("()")) << ResultData(_("MyClass::functionDefinedOutSideClass"), _("(char)")) @@ -295,6 +292,12 @@ void CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter_data() << ResultData(_("MyNamespace::MyEnum"), testFileShort) << ResultData(_("MyNamespace::myFunction"), _("(bool, int)")) << ResultData(_("myFunction"), _("(bool, int)")) + << ResultData(_("<anonymous namespace>::MyClass"), testFileShort) + << ResultData(_("<anonymous namespace>::MyClass::MyClass"), _("()")) + << ResultData(_("<anonymous namespace>::MyClass::functionDefinedOutSideClass"), + _("(char)")) + << ResultData(_("<anonymous namespace>::MyEnum"), testFileShort) + << ResultData(_("<anonymous namespace>::myFunction"), _("(bool, int)")) ); QTest::newRow("CppClassesFilter-ObjC") @@ -328,6 +331,7 @@ void CppToolsPlugin::test_cpplocatorfilters_CppCurrentDocumentFilter() << ResultData(_("int myVariable"), _("")) << ResultData(_("myFunction(bool, int)"), _("")) << ResultData(_("Pos"), _("")) + << ResultData(_("somePositionWithin()"), _("")) << ResultData(_("pointOfService()"), _("")) << ResultData(_("matchArgument(Pos)"), _("")) << ResultData(_("positiveNumber()"), _("")) diff --git a/src/plugins/cpptools/cppprojectinfogenerator.cpp b/src/plugins/cpptools/cppprojectinfogenerator.cpp index 0eb1af9c6e..9fae0db017 100644 --- a/src/plugins/cpptools/cppprojectinfogenerator.cpp +++ b/src/plugins/cpptools/cppprojectinfogenerator.cpp @@ -165,9 +165,6 @@ ProjectPart::Ptr ProjectInfoGenerator::createProjectPart( part->warningFlags = flags.warningFlags; part->languageExtensions = flags.languageExtensions; - if (part->toolchainType == ProjectExplorer::Constants::COMPILATION_DATABASE_TOOLCHAIN_TYPEID) - part->extraCodeModelFlags = flags.commandLineFlags; - // Toolchain macros and language version if (tcInfo.macroInspectionRunner) { auto macroInspectionReport = tcInfo.macroInspectionRunner(flags.commandLineFlags); |