[all-commits] [llvm/llvm-project] b9ca97: [clang-tidy] Add portability-std-allocator-const c...
Fangrui Song via All-commits
all-commits at lists.llvm.org
Thu Apr 14 11:13:54 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: b9ca972b1ff0548a831fe416cec8d39f7e569c94
https://github.com/llvm/llvm-project/commit/b9ca972b1ff0548a831fe416cec8d39f7e569c94
Author: Fangrui Song <i at maskray.me>
Date: 2022-04-14 (Thu, 14 Apr 2022)
Changed paths:
M clang-tools-extra/clang-tidy/portability/CMakeLists.txt
M clang-tools-extra/clang-tidy/portability/PortabilityTidyModule.cpp
A clang-tools-extra/clang-tidy/portability/StdAllocatorConstCheck.cpp
A clang-tools-extra/clang-tidy/portability/StdAllocatorConstCheck.h
M clang-tools-extra/docs/ReleaseNotes.rst
M clang-tools-extra/docs/clang-tidy/checks/list.rst
A clang-tools-extra/docs/clang-tidy/checks/portability-std-allocator-const.rst
A clang-tools-extra/test/clang-tidy/checkers/portability-std-allocator-const.cpp
Log Message:
-----------
[clang-tidy] Add portability-std-allocator-const check
Report use of `std::vector<const T>` (and similar containers of const
elements). These are now allowed in standard C++ due to undefined
`std::allocator<const T>`. They do not compile with libstdc++ or MSVC.
Future libc++ will remove the extension (D120996).
See docs/clang-tidy/checks/portability-std-allocator-const.rst for detail.
I have attempted clean-up in a large code base. Here are some statistics:
* 98% are related to the container `std::vector`, among `deque/forward_list/list/multiset/queue/set/stack/vector`.
* 24% are related to `std::vector<const std::string>`.
* Both `std::vector<const absl::string_view>` and `std::vector<const int>` contribute 2%. The other contributors spread over various class types.
The check can be useful to other large code bases and may serve as an example
for future libc++ strictness improvement.
Note: on MSVC where -fdelayed-template-parsing is the default, the check cannot
catch cases in uninstantiated templates.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D123655
More information about the All-commits
mailing list