.. title:: clang-tidy - llvm-redundant-casting
llvm-redundant-casting
======================
Points out uses of ``cast<>``, ``dyn_cast<>``, ``isa<>`` and their ``or_null``
variants that are unnecessary because the argument already is of the target
type, or a derived type thereof.
.. code-block:: c++
struct A {};
A a;
// Finds:
A x = cast(a);
// replaced by:
A x = a;
struct B : public A {};
B b;
// Finds:
A y = cast(b);
// replaced by:
A y = b;
struct C : public A {};
C c;
// Finds:
bool r1 = isa(a) // always true
bool r2 = isa(b) // always true
bool r3 = isa(c) // always true
Supported functions:
- ``llvm::cast``
- ``llvm::cast_or_null``
- ``llvm::cast_if_present``
- ``llvm::dyn_cast``
- ``llvm::dyn_cast_or_null``
- ``llvm::dyn_cast_if_present``
- ``llvm::isa``
- ``llvm::isa_and_nonnull``
- ``llvm::isa_and_present``