================
@@ -0,0 +1,18 @@
+// RUN: %check_clang_tidy %s bugprone-casting-through-void %t
+
+using T = void*;
+
+void test() {
+  int i = 100;
+  double d = 100;
+
+  static_cast<int *>(static_cast<void *>(&d));
+  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not cast double * to int * 
through void * [bugprone-casting-through-void]
+
+  static_cast<int *>(static_cast<T>(&d));
+  // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not cast double * to int * 
through void * [bugprone-casting-through-void]
+
+  static_cast<int *>(static_cast<void *>(&i));
+
+  static_cast<void *>(static_cast<void *>(&i));
+}
----------------
PiotrZSL wrote:

add more mixed tests, with c-cast, reinterpret cast, const_cast.

Add test with cast to `const void*`, and also test with functional cast would 
be needed like:

```
struct A
{
   A(void*);
};

return A(static_cast<void*>(ptr)); // need to be checked if this trigger 
CXXFunctinalCast with ConstructorConversion kind.
```

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

Reply via email to