From b6adaab3ea7c318af2ca52eaa6770661dae6fd01 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 15 Jun 2022 17:18:01 +0200 Subject: [PATCH] CompilationDatabaseProjectManager: Fix flags extraction The code would blindly remove all "options" starting with /, which meant that all file paths arguments got lost on Unix-like hosts. Fixes: QTCREATORBUG-22949 Change-Id: I43e2b1e57ed0e9ced9da8fa46d98d9ac25f83d13 Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger --- .../compilationdatabasetests.cpp | 17 ++++++++++------- .../compilationdatabaseutils.cpp | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp index 113e60ad740..17840e92544 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabasetests.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -239,13 +240,15 @@ void CompilationDatabaseTests::testFilterCommand() "SemaCodeComplete"); testData.getFilteredFlags(); - QCOMPARE(testData.flags, - (QStringList{"/Zc:inline", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zi"})); - QCOMPARE(testData.headerPaths, - toUserHeaderPaths(QStringList{"C:/build-qt_llvm-msvc2017_64bit-Debug/tools\\clang\\lib\\Sema"})); - QCOMPARE(testData.macros, (Macros{{"UNICODE", "1"}, {"_HAS_EXCEPTIONS", "0"}, {"WIN32", "1"}, - {"_WINDOWS", "1"}})); - QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource); + if (Utils::HostOsInfo::isWindowsHost()) { + QCOMPARE(testData.flags, + (QStringList{"/Zc:inline", "/Zc:strictStrings", "/Zc:rvalueCast", "/Zi"})); + QCOMPARE(testData.headerPaths, + toUserHeaderPaths(QStringList{"C:/build-qt_llvm-msvc2017_64bit-Debug/tools\\clang\\lib\\Sema"})); + QCOMPARE(testData.macros, (Macros{{"UNICODE", "1"}, {"_HAS_EXCEPTIONS", "0"}, {"WIN32", "1"}, + {"_WINDOWS", "1"}})); + QCOMPARE(testData.fileKind, CppEditor::ProjectFile::Kind::CXXSource); + } } void CompilationDatabaseTests::testFileKindDifferentFromExtension() diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp index b17b2c3a0e5..632db825562 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp @@ -206,7 +206,7 @@ void filteredFlags(const QString &fileName, } // Skip all remaining Windows flags except feature flags. - if (flag.startsWith("/") && !flag.startsWith("/Z")) + if (Utils::HostOsInfo::isWindowsHost() && flag.startsWith("/") && !flag.startsWith("/Z")) continue; filtered.push_back(flag);