sammccall accepted this revision.
sammccall added a comment.
This revision is now accepted and ready to land.
LG from my side. It won't catch all cases, but I think it gets the common ones.
Up to you/Louis how best to describe the libc++ behavior.
================
Comment at:
clang-tools-extra/test/clang-tidy/checkers/portability-std-allocator-const.cpp:65
+ // CHECK-MESSAGES: [[#@LINE-1]]:26: warning: container
+ my_vector v1;
+
----------------
maybe `using my_vector2 = my_vector;`, with no extra diagnostics
================
Comment at:
clang-tools-extra/test/clang-tidy/checkers/portability-std-allocator-const.cpp:76
+void temp() {
+ std::vector<const T> v;
+ // CHECK-MESSAGES: [[#@LINE-1]]:8: warning: container
----------------
This case will always be an error, but isn't diagnosed until you see an
instantiation.
If it's important to catch these standalone e.g. when analyzing headers, you
could adapt the matcher like:
```
hasUnqualifiedDesugaredType(anyOf(
recordDecl(...), // current case
templateSpecializationType( // when dependent, TST is canonical
templateArgumentCountIs(1), // std::vector<const dependent>
hasTemplateArgument(0, refersToType(qualType(isConstQualified())))
)
))
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D123655/new/
https://reviews.llvm.org/D123655
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits