From: Kadir Cetinkaya Date: Fri, 6 May 2022 12:32:04 +0000 (+0200) Subject: [clangd] Add parsing for IgnoreHeaders config option X-Git-Tag: upstream/15.0.7~8429 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9fe89a1f0fa6d88aa4786580b89e81dc906fcc52;p=platform%2Fupstream%2Fllvm.git [clangd] Add parsing for IgnoreHeaders config option --- diff --git a/clang-tools-extra/clangd/ConfigYAML.cpp b/clang-tools-extra/clangd/ConfigYAML.cpp index 9e4a4e0..ec39bb9 100644 --- a/clang-tools-extra/clangd/ConfigYAML.cpp +++ b/clang-tools-extra/clangd/ConfigYAML.cpp @@ -128,6 +128,7 @@ private: Dict.handle("UnusedIncludes", [&](Node &N) { F.UnusedIncludes = scalarValue(N, "UnusedIncludes"); }); + Dict.handle("Includes", [&](Node &N) { parse(F.Includes, N); }); Dict.handle("ClangTidy", [&](Node &N) { parse(F.ClangTidy, N); }); Dict.parse(N); } @@ -154,6 +155,15 @@ private: Dict.parse(N); } + void parse(Fragment::DiagnosticsBlock::IncludesBlock &F, Node &N) { + DictParser Dict("Includes", this); + Dict.handle("IgnoreHeader", [&](Node &N) { + if (auto Values = scalarValues(N)) + F.IgnoreHeader = std::move(*Values); + }); + Dict.parse(N); + } + void parse(Fragment::IndexBlock &F, Node &N) { DictParser Dict("Index", this); Dict.handle("Background", diff --git a/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp b/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp index d4be2e9..143bcf9 100644 --- a/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp +++ b/clang-tools-extra/clangd/unittests/ConfigYAMLTests.cpp @@ -247,6 +247,20 @@ InlayHints: EXPECT_EQ(Results[0].InlayHints.DeducedTypes, llvm::None); } +TEST(ParseYAML, IncludesIgnoreHeader) { + CapturedDiags Diags; + Annotations YAML(R"yaml( +Diagnostics: + Includes: + IgnoreHeader: [foo, bar] + )yaml"); + auto Results = + Fragment::parseYAML(YAML.code(), "config.yaml", Diags.callback()); + ASSERT_THAT(Diags.Diagnostics, IsEmpty()); + ASSERT_EQ(Results.size(), 1u); + EXPECT_THAT(Results[0].Diagnostics.Includes.IgnoreHeader, + ElementsAre(val("foo"), val("bar"))); +} } // namespace } // namespace config } // namespace clangd