Skip to content

Commit 5549b01

Browse files
[clangd] Make all calls to format::getStyle() go through getFormatStyleForFile() (#82948)
1 parent 0f3628a commit 5549b01

File tree

5 files changed

+19
-27
lines changed

5 files changed

+19
-27
lines changed

clang-tools-extra/clangd/ClangdServer.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -551,15 +551,10 @@ void ClangdServer::formatOnType(PathRef File, Position Pos,
551551
auto Action = [File = File.str(), Code = std::move(*Code),
552552
TriggerText = TriggerText.str(), CursorPos = *CursorPos,
553553
CB = std::move(CB), this]() mutable {
554-
auto Style = format::getStyle(format::DefaultFormatStyle, File,
555-
format::DefaultFallbackStyle, Code,
556-
TFS.view(/*CWD=*/std::nullopt).get());
557-
if (!Style)
558-
return CB(Style.takeError());
559-
554+
auto Style = getFormatStyleForFile(File, Code, TFS);
560555
std::vector<TextEdit> Result;
561556
for (const tooling::Replacement &R :
562-
formatIncremental(Code, CursorPos, TriggerText, *Style))
557+
formatIncremental(Code, CursorPos, TriggerText, Style))
563558
Result.push_back(replacementToEdit(Code, R));
564559
return CB(Result);
565560
};

clang-tools-extra/clangd/IncludeCleaner.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -111,21 +111,15 @@ bool mayConsiderUnused(const Inclusion &Inc, ParsedAST &AST,
111111

112112
std::vector<Diag> generateMissingIncludeDiagnostics(
113113
ParsedAST &AST, llvm::ArrayRef<MissingIncludeDiagInfo> MissingIncludes,
114-
llvm::StringRef Code, HeaderFilter IgnoreHeaders) {
114+
llvm::StringRef Code, HeaderFilter IgnoreHeaders, const ThreadsafeFS &TFS) {
115115
std::vector<Diag> Result;
116116
const SourceManager &SM = AST.getSourceManager();
117117
const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID());
118118

119-
auto FileStyle = format::getStyle(
120-
format::DefaultFormatStyle, AST.tuPath(), format::DefaultFallbackStyle,
121-
Code, &SM.getFileManager().getVirtualFileSystem());
122-
if (!FileStyle) {
123-
elog("Couldn't infer style", FileStyle.takeError());
124-
FileStyle = format::getLLVMStyle();
125-
}
119+
auto FileStyle = getFormatStyleForFile(AST.tuPath(), Code, TFS);
126120

127121
tooling::HeaderIncludes HeaderIncludes(AST.tuPath(), Code,
128-
FileStyle->IncludeStyle);
122+
FileStyle.IncludeStyle);
129123
for (const auto &SymbolWithMissingInclude : MissingIncludes) {
130124
llvm::StringRef ResolvedPath =
131125
SymbolWithMissingInclude.Providers.front().resolvedPath();
@@ -459,14 +453,15 @@ bool isPreferredProvider(const Inclusion &Inc,
459453
std::vector<Diag>
460454
issueIncludeCleanerDiagnostics(ParsedAST &AST, llvm::StringRef Code,
461455
const IncludeCleanerFindings &Findings,
456+
const ThreadsafeFS &TFS,
462457
HeaderFilter IgnoreHeaders) {
463458
trace::Span Tracer("IncludeCleaner::issueIncludeCleanerDiagnostics");
464459
std::vector<Diag> UnusedIncludes = generateUnusedIncludeDiagnostics(
465460
AST.tuPath(), Findings.UnusedIncludes, Code, IgnoreHeaders);
466461
std::optional<Fix> RemoveAllUnused = removeAllUnusedIncludes(UnusedIncludes);
467462

468463
std::vector<Diag> MissingIncludeDiags = generateMissingIncludeDiagnostics(
469-
AST, Findings.MissingIncludes, Code, IgnoreHeaders);
464+
AST, Findings.MissingIncludes, Code, IgnoreHeaders, TFS);
470465
std::optional<Fix> AddAllMissing = addAllMissingIncludes(MissingIncludeDiags);
471466

472467
std::optional<Fix> FixAll;

clang-tools-extra/clangd/IncludeCleaner.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ using HeaderFilter = llvm::ArrayRef<std::function<bool(llvm::StringRef)>>;
5959
std::vector<Diag>
6060
issueIncludeCleanerDiagnostics(ParsedAST &AST, llvm::StringRef Code,
6161
const IncludeCleanerFindings &Findings,
62+
const ThreadsafeFS &TFS,
6263
HeaderFilter IgnoreHeader = {});
6364

6465
/// Affects whether standard library includes should be considered for

clang-tools-extra/clangd/ParsedAST.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ void applyWarningOptions(llvm::ArrayRef<std::string> ExtraArgs,
360360
}
361361
}
362362

363-
std::vector<Diag> getIncludeCleanerDiags(ParsedAST &AST, llvm::StringRef Code) {
363+
std::vector<Diag> getIncludeCleanerDiags(ParsedAST &AST, llvm::StringRef Code,
364+
const ThreadsafeFS &TFS) {
364365
auto &Cfg = Config::current();
365366
if (Cfg.Diagnostics.SuppressAll)
366367
return {};
@@ -377,7 +378,7 @@ std::vector<Diag> getIncludeCleanerDiags(ParsedAST &AST, llvm::StringRef Code) {
377378
Findings.MissingIncludes.clear();
378379
if (SuppressUnused)
379380
Findings.UnusedIncludes.clear();
380-
return issueIncludeCleanerDiagnostics(AST, Code, Findings,
381+
return issueIncludeCleanerDiagnostics(AST, Code, Findings, TFS,
381382
Cfg.Diagnostics.Includes.IgnoreHeader);
382383
}
383384

@@ -741,7 +742,7 @@ ParsedAST::build(llvm::StringRef Filename, const ParseInputs &Inputs,
741742
std::move(Clang), std::move(Action), std::move(Tokens),
742743
std::move(Macros), std::move(Marks), std::move(ParsedDecls),
743744
std::move(Diags), std::move(Includes), std::move(PI));
744-
llvm::move(getIncludeCleanerDiags(Result, Inputs.Contents),
745+
llvm::move(getIncludeCleanerDiags(Result, Inputs.Contents, *Inputs.TFS),
745746
std::back_inserter(Result.Diags));
746747
return std::move(Result);
747748
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ TEST(IncludeCleaner, GenerateMissingHeaderDiags) {
252252
auto Findings = computeIncludeCleanerFindings(AST);
253253
Findings.UnusedIncludes.clear();
254254
std::vector<clangd::Diag> Diags = issueIncludeCleanerDiagnostics(
255-
AST, TU.Code, Findings,
255+
AST, TU.Code, Findings, MockFS(),
256256
{[](llvm::StringRef Header) { return Header.ends_with("buzz.h"); }});
257257
EXPECT_THAT(
258258
Diags,
@@ -505,8 +505,8 @@ TEST(IncludeCleaner, BatchFix) {
505505
)cpp";
506506
auto AST = TU.build();
507507
EXPECT_THAT(
508-
issueIncludeCleanerDiagnostics(AST, TU.Code,
509-
computeIncludeCleanerFindings(AST)),
508+
issueIncludeCleanerDiagnostics(
509+
AST, TU.Code, computeIncludeCleanerFindings(AST), MockFS()),
510510
UnorderedElementsAre(withFix({FixMessage("#include \"foo.h\""),
511511
FixMessage("fix all includes")}),
512512
withFix({FixMessage("remove #include directive"),
@@ -520,8 +520,8 @@ TEST(IncludeCleaner, BatchFix) {
520520
)cpp";
521521
AST = TU.build();
522522
EXPECT_THAT(
523-
issueIncludeCleanerDiagnostics(AST, TU.Code,
524-
computeIncludeCleanerFindings(AST)),
523+
issueIncludeCleanerDiagnostics(
524+
AST, TU.Code, computeIncludeCleanerFindings(AST), MockFS()),
525525
UnorderedElementsAre(withFix({FixMessage("#include \"foo.h\""),
526526
FixMessage("fix all includes")}),
527527
withFix({FixMessage("remove #include directive"),
@@ -539,8 +539,8 @@ TEST(IncludeCleaner, BatchFix) {
539539
)cpp";
540540
AST = TU.build();
541541
EXPECT_THAT(
542-
issueIncludeCleanerDiagnostics(AST, TU.Code,
543-
computeIncludeCleanerFindings(AST)),
542+
issueIncludeCleanerDiagnostics(
543+
AST, TU.Code, computeIncludeCleanerFindings(AST), MockFS()),
544544
UnorderedElementsAre(withFix({FixMessage("#include \"foo.h\""),
545545
FixMessage("add all missing includes"),
546546
FixMessage("fix all includes")}),

0 commit comments

Comments
 (0)