From: Haojian Wu Date: Wed, 11 Apr 2018 09:18:18 +0000 (+0000) Subject: [Tooling] Correct the "-std" compile command option. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=45c3242e808b48e6c017f00eb64cc0a58b52d8ad;p=clang [Tooling] Correct the "-std" compile command option. Summary: "-std c++11" is not valid in compiler, we have to use "-std=c++11". Test in vscode with this patch, code completion for header works as expected. Reviewers: sammccall Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D45512 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329786 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Tooling/InterpolatingCompilationDatabase.cpp b/lib/Tooling/InterpolatingCompilationDatabase.cpp index cf29744f30..bc564584bd 100644 --- a/lib/Tooling/InterpolatingCompilationDatabase.cpp +++ b/lib/Tooling/InterpolatingCompilationDatabase.cpp @@ -191,9 +191,9 @@ struct TransferableCommand { // --std flag may only be transferred if the language is the same. // We may consider "translating" these, e.g. c++11 -> c11. if (Std != LangStandard::lang_unspecified && foldType(TargetType) == Type) { - Result.CommandLine.push_back("-std"); Result.CommandLine.push_back( - LangStandard::getLangStandardForKind(Std).getName()); + "-std=" + + std::string(LangStandard::getLangStandardForKind(Std).getName())); } Result.CommandLine.push_back(Filename); return Result; diff --git a/unittests/Tooling/CompilationDatabaseTest.cpp b/unittests/Tooling/CompilationDatabaseTest.cpp index 948090208c..42497f7069 100644 --- a/unittests/Tooling/CompilationDatabaseTest.cpp +++ b/unittests/Tooling/CompilationDatabaseTest.cpp @@ -711,9 +711,9 @@ TEST_F(InterpolateTest, Language) { // .h is ambiguous, so we add explicit language flags EXPECT_EQ(getCommand("foo.h"), - "clang -D dir/foo.cpp -x c++-header -std c++17"); + "clang -D dir/foo.cpp -x c++-header -std=c++17"); // and don't add -x if the inferred language is correct. - EXPECT_EQ(getCommand("foo.hpp"), "clang -D dir/foo.cpp -std c++17"); + EXPECT_EQ(getCommand("foo.hpp"), "clang -D dir/foo.cpp -std=c++17"); // respect -x if it's already there. EXPECT_EQ(getCommand("baz.h"), "clang -D dir/baz.cee -x c-header"); // prefer a worse match with the right language