diff --git a/plugins/clang/duchain/parsesession.cpp b/plugins/clang/duchain/parsesession.cpp --- a/plugins/clang/duchain/parsesession.cpp +++ b/plugins/clang/duchain/parsesession.cpp @@ -65,6 +65,23 @@ return result; } +void sanitizeArguments(QVector& arguments) +{ + arguments.erase(std::remove_if( + arguments.begin(), + arguments.end(), + [](QByteArray& argument) { + if (argument == "-Werror") { + return true; + } + + argument.replace("-Werror=", "-W"); + + return false; + } + ), arguments.end()); +} + QVector argsForSession(const QString& path, ParseSessionData::Options options, const ParserSettings& parserSettings) { QMimeDatabase db; @@ -87,9 +104,12 @@ if (parserSettings.parserOptions.isEmpty()) { // The parserOptions can be empty for some unit tests that use ParseSession directly auto defaultArguments = ClangSettingsManager::self()->parserSettings(path).toClangAPI(); + defaultArguments.append(QByteArrayLiteral("-nostdinc")); defaultArguments.append(QByteArrayLiteral("-nostdinc++")); defaultArguments.append(QByteArrayLiteral("-xc++")); + + sanitizeArguments(defaultArguments); return defaultArguments; } @@ -101,10 +121,14 @@ if (options & ParseSessionData::PrecompiledHeader) { result.append(parserSettings.isCpp() ? QByteArrayLiteral("-xc++-header") : QByteArrayLiteral("-xc-header")); + + sanitizeArguments(result); return result; } result.append(parserSettings.isCpp() ? QByteArrayLiteral("-xc++") : QByteArrayLiteral("-xc")); + + sanitizeArguments(result); return result; }