Up until now, we relied on matching the filename.
This depends on unstable details of libstdc++ and doesn't work well on other
stdlibs. Also we'd like to remove it (see D88204).
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang-tools-extra/clangd/index/SymbolCollector.cpp | ||
---|---|---|
561 | i think this should live inside CanonicalIncludes. What about changing mapHeader to take in an llvm::Optional<size_t> NumParams or llvm::Optional<llvm::StringRef> Signature ? That way we can actually get rid of the ambiguity caused by all of the overloads. I am not sure if number of parameters is always going to be enough tho so Signature might be a safer bet with some canonicalization so that we can match the version in cppreference. (I would prefer the solution above, but I am also fine with moving this into SymbolCollector::getIncludeHeader with a FIXME.) |
clang-tools-extra/clangd/index/SymbolCollector.cpp | ||
---|---|---|
561 | That's kind of the point of this patch, I think this one special case isn't worth making that library more complicated. Would also be happy with just always suggesting <utility>, or never suggesting anything, though. |
Thanks, LGTM! As you mentioned I believe std::move is common enough to deserve the special casing.
clang-tools-extra/clangd/index/SymbolCollector.cpp | ||
---|---|---|
561 | Makes sense, I was suggesting SymbolCollector::getIncludeHeader rather than SymbolCollector::finish to keep the logic in here less complicated. But I am fine if you don't want to make changes to the singature. (It is unfortunate that getIncludeHeader is a private member instead of a free helper in here anyways.) |
Common enough and also literally the only case AFAIK (hopefully the committee is friendly enough not to add more in future).
That combination pushes me towards preferring this hack at least for now...
clang-tools-extra/clangd/index/SymbolCollector.cpp | ||
---|---|---|
561 | Oh right, of course. Done. Yeah it's unfortunate, it's because isSelfContainedHeader is an expensive check that we have to cache, so there's a bunch of state it needs access to. |
clang-tools-extra/clangd/index/SymbolCollector.cpp | ||
---|---|---|
557 | this one is no longer needed. |
clang-tools-extra/clangd/index/SymbolCollector.cpp | ||
---|---|---|
557 | whoops, fixed in 6ee47f552ba7654a0997c8deb71f65d0d91f4a28 |
this one is no longer needed.