[PATCH] D68562: [clangd] Add RemoveUsingNamespace tweak.
Ilya Biryukov via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 7 04:18:45 PDT 2019
ilya-biryukov added a comment.
The main comment is about limiting this only to global namespace. PTAL.
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp:79
+}
+} // namespace
+
----------------
continue rest of the file in the anonymous namespace
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp:110
+
+ // FIXME: if this is not coming from a macro argument, remove.
+ for (auto *T : Ref.Targets) {
----------------
I think I had this FIXME in some of the versions, but TBF I don't remember why I added it.
Maybe remove?
================
Comment at: clang-tools-extra/clangd/refactor/tweaks/RemoveUsingNamespace.cpp:146
+ for (auto Loc : IdentsToQualify) {
+ if (auto Err = R.add(tooling::Replacement(Ctx.getSourceManager(), Loc,
+ /*Length=*/0, Qualifier)))
----------------
Qualifying identifiers and removing using namespaces might actually conflict.
Could you add a (commented-out) test with an example that fails and a FIXME?
```
namespace a::b { struct foo {}; }
using namespace a::b;
using namespace b; // we'll try to both qualify this 'b' and remove this line.
```
================
Comment at: clang-tools-extra/clangd/unittests/TweakTests.cpp:774
+ )cpp"},
+ {// FIXME: Unable to qualify ident from inner ns.
+ R"cpp(
----------------
Could we disallow the action outside global namespace for now to make sure it's always correct.
```
#include <vector>
using namespace std;
```
is a very common pattern anyway, supporting only it in the first version looks ok.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68562/new/
https://reviews.llvm.org/D68562
More information about the cfe-commits
mailing list