Skip to content

Commit eaedbef

Browse files
committed
Fix message when angled becomes quoted
1 parent 4043fe9 commit eaedbef

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

clang-tools-extra/clangd/IncludeCleaner.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ std::vector<Diag> generateMissingIncludeDiagnostics(
164164
if (!Replacement.has_value())
165165
continue;
166166

167-
if (Angled && Spelling.front() == '\"') {
168-
Spelling.front() = '<';
169-
Spelling.back() = '>';
167+
if (Angled != (Spelling.front() == '<')) {
168+
Spelling.front() = Angled ? '<' : '"';
169+
Spelling.back() = Angled ? '>' : '"';
170170
}
171171

172172
Diag &D = Result.emplace_back();

clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,10 @@ TEST(IncludeCleaner, GenerateMissingHeaderDiags) {
226226
#include "dir/c.h"
227227
$insert_d[[]]$insert_foo[[]]#include "fuzz.h"
228228
#include "header.h"
229-
$insert_foobar[[]]$insert_quoted[[]]#include "quoted_wrapper.h"
229+
$insert_foobar[[]]$insert_quoted[[]]$insert_quoted2[[]]#include "quoted_wrapper.h"
230230
$insert_angled[[]]#include <e.h>
231-
$insert_f[[]]$insert_vector[[]]
231+
$insert_f[[]]#include <quoted2_wrapper.h>
232+
$insert_vector[[]]
232233
233234
#define DEF(X) const Foo *X;
234235
#define BAZ(X) const X x
@@ -241,6 +242,7 @@ TEST(IncludeCleaner, GenerateMissingHeaderDiags) {
241242
$b[[b]]();
242243
$angled[[angled]]();
243244
$quoted[[quoted]]();
245+
$quoted2[[quoted2]]();
244246
245247
ns::$bar[[Bar]] bar;
246248
bar.d();
@@ -280,6 +282,8 @@ TEST(IncludeCleaner, GenerateMissingHeaderDiags) {
280282

281283
TU.AdditionalFiles["system/e.h"] = guard("#include <f.h>");
282284
TU.AdditionalFiles["system/f.h"] = guard("void f();");
285+
TU.AdditionalFiles["system/quoted2_wrapper.h"] = guard("#include <system/quoted2.h>");
286+
TU.AdditionalFiles["system/quoted2.h"] = guard("void quoted2();");
283287
TU.ExtraArgs.push_back("-isystem" + testPath("system"));
284288

285289
TU.AdditionalFiles["fuzz.h"] = guard("#include \"buzz.h\"");
@@ -315,7 +319,7 @@ TEST(IncludeCleaner, GenerateMissingHeaderDiags) {
315319
return Header.contains("angled.h");
316320
}},
317321
/*QuotedHeaders=*/{[](llvm::StringRef Header) {
318-
return Header.contains("quoted.h");
322+
return Header.contains("quoted.h") || Header.contains("quoted2.h");
319323
}});
320324
EXPECT_THAT(
321325
Diags,
@@ -336,6 +340,12 @@ TEST(IncludeCleaner, GenerateMissingHeaderDiags) {
336340
withFix({Fix(MainFile.range("insert_quoted"),
337341
"#include \"quoted.h\"\n", "#include \"quoted.h\""),
338342
FixMessage("add all missing includes")})),
343+
AllOf(
344+
Diag(MainFile.range("quoted2"),
345+
"No header providing \"quoted2\" is directly included"),
346+
withFix({Fix(MainFile.range("insert_quoted2"),
347+
"#include \"quoted2.h\"\n", "#include \"quoted2.h\""),
348+
FixMessage("add all missing includes")})),
339349
AllOf(Diag(MainFile.range("bar"),
340350
"No header providing \"ns::Bar\" is directly included"),
341351
withFix({Fix(MainFile.range("insert_d"),

0 commit comments

Comments
 (0)