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
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to