[PATCH] D138583: Create unused non-trivially-destructible check in clang-tidy
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 24 07:54:44 PST 2022
sammccall added a comment.
In D138583#3949604 <https://reviews.llvm.org/D138583#3949604>, @ankineri wrote:
> I do agree that having it as part of `-Wunused-variable` is better on many aspects, but I have a few concerns about it.
> The proposed check can be applied to any type including STL ones such as `std::string`, all as per codebase owner's choice. Adding this attribute to STL classes will probably be really hard as it will break many builds.
> Having `warn_unused absl::Status` (and a couple of others) is probably a good idea anyway, but is it feasible to apply it to STL?
My guess is that libc++ and libstdc++ would accept such a patch *where it's safe*, since clang and gcc respectively support the attribute, but you'd have to check with them.
---
Since the standard library is mostly templates, one issue you're going to run into with say `std::vector<int>` is that it's only `warn_unused` because `int` is `warn_unused`, and this is hard to express with attributes.
`std::string` is actually the same since it's an alias for `std::basic_string<char, ...>`. While maybe nobody uses `std::basic_string<std::mutex>`, it's a bit of a grey area.
Fundamentally this is all stuff that such a clang-tidy check would have to address as well, and IMO the tools you have to address it with clang + attributes are much better than in a clang-tidy check.
(If it solves std::string and std::vector, then that might even be enough to provide some hacky `warn_unused_recursive` attribute that is equivalent to `warn_unused` if all type template parameters are warn-unused).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D138583/new/
https://reviews.llvm.org/D138583
More information about the cfe-commits
mailing list