[PATCH] D93978: [clangd] Use dirty filesystem when performing cross file tweaks
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 14 00:44:09 PDT 2021
sammccall accepted this revision.
sammccall added a comment.
This revision is now accepted and ready to land.
Herald added a project: clang-tools-extra.
Sorry, I thought this had already gone in!
LG, sorry for the back and forth.
================
Comment at: clang-tools-extra/clangd/ClangdServer.cpp:575
return CB(InpAST.takeError());
- auto Selections = tweakSelection(Sel, *InpAST);
+ // FIXME: Should we use the dirty fs here?
+ auto FS = TFS.view(llvm::None);
----------------
njames93 wrote:
> Regarding this, Is it wise to set the contract so that Tweak::prepare isn't allowed to do IO so we should just pass a nullptr here, inline with how prepareRename works.
Yes, I think so.
================
Comment at: clang-tools-extra/clangd/refactor/Tweak.cpp:54
+ SelectionEnd(RangeEnd), ASTSelection(std::move(ASTSelection)),
+ FS(FS ? FS
+ : &AST.getSourceManager().getFileManager().getVirtualFileSystem()) {
----------------
I'm no longer convinced this fallback is a good idea.
We want prepare() to do no IO, ideally we'd assert if we do. But by falling back to the AST FS, we'll mask that problem.
There are only two callsites that need this fallback (TweakTesting & Check) - I think we should just inline what we mean there.
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/DefineOutline.cpp:67
+ const Tweak::Selection &Sel,
+ llvm::vfs::FileSystem *FS) {
+ if (auto Source = getCorrespondingHeaderOrSource(FileName, FS))
----------------
why take this as an explicit parameter rather than just accessing (and asserting) Sel.FS?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D93978/new/
https://reviews.llvm.org/D93978
More information about the cfe-commits
mailing list