| // RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=optin.osx.OSObjectCStyleCast %s -verify |
| #include "os_object_base.h" |
| struct OSArray : public OSObject { |
| unsigned warn_on_explicit_downcast(OSObject * obj) { |
| OSArray *a = (OSArray *) obj; // expected-warning{{C-style cast of OSObject. Use OSDynamicCast instead}} |
| void no_warn_on_upcast(OSArray *arr) { |
| OSObject *obj = (OSObject *) arr; |
| unsigned no_warn_on_dynamic_cast(OSObject *obj) { |
| OSArray *a = OSDynamicCast(OSArray, obj); |
| __SIZE_TYPE__ no_warn_on_primitive_conversion(OSArray *arr) { |
| return (__SIZE_TYPE__) arr; |
| unsigned no_warn_on_other_type_cast(A *a) { |