================ @@ -0,0 +1,96 @@ +// RUN: %check_clang_tidy %s bugprone-casting-through-void %t + +using V = void*; +using CV = const void*; + +int i = 100; +double d = 100; +const int ci = 100; +const double cd = 100; + +void normal_test() { + static_cast<int *>(static_cast<void *>(&d)); + // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: do not cast 'double *' to 'int *' through 'void*' [bugprone-casting-through-void] + + static_cast<int *>(static_cast<V>(&d)); + // CHECK-MESSAGES: :[[@LINE-1]]:22: 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)); +} + +void const_pointer_test() { + static_cast<int *const>(static_cast<void *>(&d)); + // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *const' through 'void*' [bugprone-casting-through-void] + + static_cast<int *const>(static_cast<V>(&d)); + // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: do not cast 'double *' to 'int *const' through 'void*' [bugprone-casting-through-void] + + static_cast<int *const>(static_cast<void *>(&i)); + static_cast<void *const>(static_cast<void *>(&i)); +} + +void const_test() { + static_cast<const int *>(static_cast<const void *>(&d)); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'double *' to 'const int *' through 'void*' [bugprone-casting-through-void] + + static_cast<const int *>(static_cast<const V>(&d)); + // CHECK-MESSAGES: :[[@LINE-1]]:28: warning: do not cast 'double *' to 'const int *' through 'void*' [bugprone-casting-through-void] + + static_cast<const int *>(static_cast<const void *>(&i)); ---------------- PiotrZSL wrote:
this also should be detected 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