// RUN: clang-cc %s -verify -fsyntax-only class A { void f() __attribute__((deprecated)); void g(A* a); void h(A* a) __attribute__((deprecated)); int b __attribute__((deprecated)); }; void A::g(A* a) { f(); // expected-warning{{'f' is deprecated}} a->f(); // expected-warning{{'f' is deprecated}} (void)b; // expected-warning{{'b' is deprecated}} (void)a->b; // expected-warning{{'b' is deprecated}} } void A::h(A* a) { f(); a->f(); (void)b; (void)a->b; } struct B { virtual void f() __attribute__((deprecated)); void g(); }; void B::g() { f(); B::f(); // expected-warning{{'f' is deprecated}} } struct C : B { virtual void f(); void g(); }; void C::g() { f(); C::f(); B::f(); // expected-warning{{'f' is deprecated}} } void f(B* b, C *c) { b->f(); b->B::f(); // expected-warning{{'f' is deprecated}} c->f(); c->C::f(); c->B::f(); // expected-warning{{'f' is deprecated}} } struct D { virtual void f() __attribute__((deprecated)); }; void D::f() { } void f(D* d) { d->f(); }