// RUN: %clang_analyze_cc1 -analyzer-checker=alpha.webkit.NoUncheckedPtrMemberChecker -verify %s #include "mock-types.h" namespace members { struct Foo { private: CheckedObj* a = nullptr; // expected-warning@-1{{Member variable 'a' in 'members::Foo' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} CheckedObj& b; // expected-warning@-1{{Member variable 'b' in 'members::Foo' is a reference to CheckedPtr capable type 'CheckedObj'}} [[clang::suppress]] CheckedObj* a_suppressed = nullptr; [[clang::suppress]] CheckedObj& b_suppressed; CheckedPtr c; CheckedRef d; public: Foo(); }; template struct FooTmpl { S* e; // expected-warning@-1{{Member variable 'e' in 'members::FooTmpl' is a raw pointer to CheckedPtr capable type 'CheckedObj'}} }; void forceTmplToInstantiate(FooTmpl) { } } // namespace members namespace ignore_unions { union Foo { CheckedObj* a; CheckedPtr c; CheckedRef d; }; template union FooTmpl { T* a; }; void forceTmplToInstantiate(FooTmpl) { } } // namespace ignore_unions