blob: 54f8b5b57fcdcfe2dde15b01be527ec302dccd6e [file] [log] [blame]
Anders Carlsson0f44b5a2009-08-08 16:55:18 +00001// RUN: clang-cc %s -verify -fsyntax-only
2class A {
3 void f() __attribute__((deprecated));
4 void g(A* a);
Anders Carlssonfb7ef752009-08-08 17:48:49 +00005 void h(A* a) __attribute__((deprecated));
Anders Carlsson0f44b5a2009-08-08 16:55:18 +00006
7 int b __attribute__((deprecated));
8};
9
10void A::g(A* a)
11{
12 f(); // expected-warning{{'f' is deprecated}}
13 a->f(); // expected-warning{{'f' is deprecated}}
14
15 (void)b; // expected-warning{{'b' is deprecated}}
16 (void)a->b; // expected-warning{{'b' is deprecated}}
17}
Anders Carlssonfb7ef752009-08-08 17:48:49 +000018
19void A::h(A* a)
20{
21 f();
22 a->f();
23
24 (void)b;
25 (void)a->b;
26}
Anders Carlsson0f728562009-09-10 20:48:14 +000027
28struct B {
29 virtual void f() __attribute__((deprecated));
Anders Carlssoned90c4e2009-09-11 05:54:14 +000030 void g();
Anders Carlsson0f728562009-09-10 20:48:14 +000031};
32
Anders Carlssoned90c4e2009-09-11 05:54:14 +000033void B::g() {
34 f();
35 B::f(); // expected-warning{{'f' is deprecated}}
36}
37
Anders Carlsson0f728562009-09-10 20:48:14 +000038struct C : B {
39 virtual void f();
Anders Carlssoned90c4e2009-09-11 05:54:14 +000040 void g();
Anders Carlsson0f728562009-09-10 20:48:14 +000041};
42
Anders Carlssoned90c4e2009-09-11 05:54:14 +000043void C::g() {
44 f();
45 C::f();
46 B::f(); // expected-warning{{'f' is deprecated}}
47}
48
Anders Carlsson0f728562009-09-10 20:48:14 +000049void f(B* b, C *c) {
50 b->f();
51 b->B::f(); // expected-warning{{'f' is deprecated}}
52
53 c->f();
54 c->C::f();
55 c->B::f(); // expected-warning{{'f' is deprecated}}
56}
Anders Carlsson8195bc92009-09-13 21:01:57 +000057
58struct D {
59 virtual void f() __attribute__((deprecated));
60};
61
62void D::f() { }
63
64void f(D* d) {
65 d->f();
66}