@@ -920,6 +920,41 @@ TEST(CompletionTest, NoIncludeInsertionWhenDeclFoundInFile) {
920
920
AllOf (named (" Y" ), Not (insertInclude ()))));
921
921
}
922
922
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
+
923
958
TEST (CompletionTest, IndexSuppressesPreambleCompletions) {
924
959
Annotations Test (R"cpp(
925
960
#include "bar.h"
@@ -1138,8 +1173,8 @@ TEST(CodeCompleteTest, NoColonColonAtTheEnd) {
1138
1173
}
1139
1174
1140
1175
TEST (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(
1143
1178
int main() {
1144
1179
auto w = [&](auto &&f) { return f(f); };
1145
1180
auto f = w([&](auto &&f) {
@@ -1155,18 +1190,18 @@ TEST(CompletionTests, EmptySnippetDoesNotCrash) {
1155
1190
}
1156
1191
1157
1192
TEST (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(
1165
1200
auto f = []() {
1166
1201
1.0_^
1167
1202
};
1168
1203
)cpp" ,
1169
- {}, Opts);
1204
+ {}, Opts);
1170
1205
}
1171
1206
1172
1207
TEST (CompletionTest, BacktrackCrashes) {
0 commit comments