https://github.com/5chmidti commented:

I noticed a problem with your matcher, so I reviewed the rest of it while I was 
at it.

The problem is that you do not consider a type-dependent `std::shared_ptr<T>` 
and the following test case fails:

```c++
template <typename T>
void dependentType() {
  std::shared_ptr<T> p;
  T y = std::move(*p);
  // CHECK-FIXES: *std::move(p)
}
// CHECK-MESSAGES: :[[@LINE-3]]:11: warning: don't move the contents out of a 
shared pointer, as other accessors expect them to remain in a determinate state 
[bugprone-move-shared-pointer-contents]
```

In this case, your `callee` is no longer a `functionDecl` but an 
`unresolvedLookupExpr` and the `*` operator is a `UnaryOperator` instead of a 
`cxxOperatorCallExpr`.

Otherwise, looks like a good check to have.

https://github.com/llvm/llvm-project/pull/67467
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to