24 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=webkit.RefCntblBaseVirtualDtor -verify %s2 3struct RefCountedBase {4 void ref() {}5};6 7template<typename T> struct RefCounted : RefCountedBase {8public:9 void deref() const { }10};11 12struct Base : RefCounted<Base> {13// expected-warning@-1{{Struct 'RefCounted<Base>' is used as a base of struct 'Base' but doesn't have virtual destructor}}14 virtual void foo() { }15};16 17struct Derived : Base { };18// expected-warning@-1{{Struct 'Base' is used as a base of struct 'Derived' but doesn't have virtual destructor}}19 20void foo () {21 Derived d;22 d.deref();23}24