summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-11-06 09:20:00 +0100
committerEike Ziller <eike.ziller@qt.io>2018-11-06 09:20:00 +0100
commit1473bc5891cc06ff7f0a431fe0212b4321e266de (patch)
tree188c5862ef56c1ee7b06439b5423ea650dfc125a /src/plugins/cpptools
parent9d296cf1f12e95f55f25a8ca11608df29b11dfce (diff)
parente18cbad28592eb911b8c82b7f71b8ee0382a19f9 (diff)
downloadqt-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.cpp2
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp17
-rw-r--r--src/plugins/cpptools/cpplocatorfilter.cpp19
-rw-r--r--src/plugins/cpptools/cpplocatorfilter_test.cpp22
-rw-r--r--src/plugins/cpptools/cppprojectinfogenerator.cpp3
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);