@@ -920,6 +920,41 @@ TEST(CompletionTest, NoIncludeInsertionWhenDeclFoundInFile) {
920920 AllOf (named (" Y" ), Not (insertInclude ()))));
921921}
922922
923+ TEST (CompletionTest, IncludeInsertionRespectsQuotedAngledConfig) {
924+ TestTU TU;
925+ TU.ExtraArgs .push_back (" -I" + testPath (" sub" ));
926+ TU.AdditionalFiles [" sub/bar.h" ] = " " ;
927+ auto BarURI = URI::create (testPath (" sub/bar.h" )).toString ();
928+
929+ Symbol Sym = cls (" ns::X" );
930+ Sym.CanonicalDeclaration .FileURI = BarURI.c_str ();
931+ Sym.IncludeHeaders .emplace_back (BarURI, 1 , Symbol::Include);
932+ Annotations Test (" int main() { ns::^ }" );
933+ TU.Code = Test.code ().str ();
934+ auto Results = completions (TU, Test.point (), {Sym});
935+ // Default for a local path is quoted include
936+ EXPECT_THAT (Results.Completions ,
937+ ElementsAre (AllOf (named (" X" ), insertInclude (" \" bar.h\" " ))));
938+ {
939+ Config C;
940+ C.Style .AngledHeaders .push_back (
941+ [](auto header) { return header == " bar.h" ; });
942+ WithContextValue WithCfg (Config::Key, std::move (C));
943+ Results = completions (TU, Test.point (), {Sym});
944+ EXPECT_THAT (Results.Completions ,
945+ ElementsAre (AllOf (named (" X" ), insertInclude (" <bar.h>" ))));
946+ }
947+ {
948+ Config C;
949+ C.Style .QuotedHeaders .push_back (
950+ [](auto header) { return header == " bar.h" ; });
951+ WithContextValue WithCfg (Config::Key, std::move (C));
952+ Results = completions (TU, Test.point (), {Sym});
953+ EXPECT_THAT (Results.Completions ,
954+ ElementsAre (AllOf (named (" X" ), insertInclude (" \" bar.h\" " ))));
955+ }
956+ }
957+
923958TEST (CompletionTest, IndexSuppressesPreambleCompletions) {
924959 Annotations Test (R"cpp(
925960 #include "bar.h"
@@ -1138,8 +1173,8 @@ TEST(CodeCompleteTest, NoColonColonAtTheEnd) {
11381173}
11391174
11401175TEST (CompletionTests, EmptySnippetDoesNotCrash) {
1141- // See https://github.com/clangd/clangd/issues/1216
1142- auto Results = completions (R"cpp(
1176+ // See https://github.com/clangd/clangd/issues/1216
1177+ auto Results = completions (R"cpp(
11431178 int main() {
11441179 auto w = [&](auto &&f) { return f(f); };
11451180 auto f = w([&](auto &&f) {
@@ -1155,18 +1190,18 @@ TEST(CompletionTests, EmptySnippetDoesNotCrash) {
11551190}
11561191
11571192TEST (CompletionTest, Issue1427Crash) {
1158- // Need to provide main file signals to ensure that the branch in
1159- // SymbolRelevanceSignals::computeASTSignals() that tries to
1160- // compute a symbol ID is taken.
1161- ASTSignals MainFileSignals;
1162- CodeCompleteOptions Opts;
1163- Opts.MainFileSignals = &MainFileSignals;
1164- completions (R"cpp(
1193+ // Need to provide main file signals to ensure that the branch in
1194+ // SymbolRelevanceSignals::computeASTSignals() that tries to
1195+ // compute a symbol ID is taken.
1196+ ASTSignals MainFileSignals;
1197+ CodeCompleteOptions Opts;
1198+ Opts.MainFileSignals = &MainFileSignals;
1199+ completions (R"cpp(
11651200 auto f = []() {
11661201 1.0_^
11671202 };
11681203 )cpp" ,
1169- {}, Opts);
1204+ {}, Opts);
11701205}
11711206
11721207TEST (CompletionTest, BacktrackCrashes) {
0 commit comments