13c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky// RUN: %clang_cc1 %s -verify -fexceptions
20f44b5a85e612e1644d688be93151b22f08604a7Anders Carlssonclass A {
3350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  void f() __attribute__((deprecated)); // expected-note 2 {{declared here}}
40f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson  void g(A* a);
5fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson  void h(A* a) __attribute__((deprecated));
60f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson
7350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  int b __attribute__((deprecated)); // expected-note 2 {{declared here}}
80f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson};
90f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson
100f44b5a85e612e1644d688be93151b22f08604a7Anders Carlssonvoid A::g(A* a)
110f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson{
120f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson  f(); // expected-warning{{'f' is deprecated}}
130f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson  a->f(); // expected-warning{{'f' is deprecated}}
140f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson
150f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson  (void)b; // expected-warning{{'b' is deprecated}}
160f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson  (void)a->b; // expected-warning{{'b' is deprecated}}
170f44b5a85e612e1644d688be93151b22f08604a7Anders Carlsson}
18fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson
19fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlssonvoid A::h(A* a)
20fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson{
21fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson  f();
22fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson  a->f();
23fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson
24fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson  (void)b;
25fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson  (void)a->b;
26fb7ef75a28af7b6a7f666df2a5db53cf90d957b1Anders Carlsson}
270f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson
280f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlssonstruct B {
29350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  virtual void f() __attribute__((deprecated)); // expected-note 4 {{declared here}}
30ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  void g();
310f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson};
320f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson
33ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlssonvoid B::g() {
34ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  f();
35ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  B::f(); // expected-warning{{'f' is deprecated}}
36ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson}
37ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson
380f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlssonstruct C : B {
390f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson  virtual void f();
40ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  void g();
410f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson};
420f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson
43ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlssonvoid C::g() {
44ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  f();
45ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  C::f();
46ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson  B::f(); // expected-warning{{'f' is deprecated}}
47ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson}
48ed90c4ee8cfed90be92741313e1715d308ed2fe3Anders Carlsson
490f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlssonvoid f(B* b, C *c) {
500f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson  b->f();
510f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson  b->B::f(); // expected-warning{{'f' is deprecated}}
520f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson
530f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson  c->f();
540f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson  c->C::f();
550f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson  c->B::f(); // expected-warning{{'f' is deprecated}}
560f728566b9fc1a013be3c0f3ca43a074307dc081Anders Carlsson}
578195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson
588195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlssonstruct D {
598195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson  virtual void f() __attribute__((deprecated));
608195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson};
618195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson
628195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlssonvoid D::f() { }
638195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson
648195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlssonvoid f(D* d) {
658195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson  d->f();
668195bc932d27e21be46b9a1f8ce268ebd419246bAnders Carlsson}
67b697e084341185a08b3946df032fbc75f76a66e0John McCall
68b697e084341185a08b3946df032fbc75f76a66e0John McCall
69b697e084341185a08b3946df032fbc75f76a66e0John McCall// Overloaded namespace members.
70b697e084341185a08b3946df032fbc75f76a66e0John McCallnamespace test1 {
71350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  void foo(int) __attribute__((deprecated)); // expected-note {{declared here}}
72b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test1() { foo(10); } // expected-warning {{deprecated}}
73350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  void foo(short) __attribute__((deprecated)); // expected-note {{declared here}}
74b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test2(short s) { foo(s); } // expected-warning {{deprecated}}
75b697e084341185a08b3946df032fbc75f76a66e0John McCall  void foo(long);
76b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test3(long l) { foo(l); }
77b697e084341185a08b3946df032fbc75f76a66e0John McCall  struct A {
78350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    friend void foo(A*) __attribute__((deprecated)); // expected-note {{declared here}}
79b697e084341185a08b3946df032fbc75f76a66e0John McCall  };
80b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test4(A *a) { foo(a); } // expected-warning {{deprecated}}
81b697e084341185a08b3946df032fbc75f76a66e0John McCall
82b697e084341185a08b3946df032fbc75f76a66e0John McCall  namespace ns {
83b697e084341185a08b3946df032fbc75f76a66e0John McCall    struct Foo {};
84350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    void foo(const Foo &f) __attribute__((deprecated)); // expected-note {{declared here}}
85b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
86b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test5() {
87b697e084341185a08b3946df032fbc75f76a66e0John McCall    foo(ns::Foo()); // expected-warning {{deprecated}}
88b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
89b697e084341185a08b3946df032fbc75f76a66e0John McCall}
90b697e084341185a08b3946df032fbc75f76a66e0John McCall
91b697e084341185a08b3946df032fbc75f76a66e0John McCall// Overloaded class members.
92b697e084341185a08b3946df032fbc75f76a66e0John McCallnamespace test2 {
93b697e084341185a08b3946df032fbc75f76a66e0John McCall  struct A {
94350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    void foo(int) __attribute__((deprecated)); // expected-note 2 {{declared here}}
95b697e084341185a08b3946df032fbc75f76a66e0John McCall    void foo(long);
96350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    static void bar(int) __attribute__((deprecated)); // expected-note 3 {{declared here}}
97b697e084341185a08b3946df032fbc75f76a66e0John McCall    static void bar(long);
98b697e084341185a08b3946df032fbc75f76a66e0John McCall
99b697e084341185a08b3946df032fbc75f76a66e0John McCall    void test2(int i, long l);
100b697e084341185a08b3946df032fbc75f76a66e0John McCall  };
101b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test1(int i, long l) {
102b697e084341185a08b3946df032fbc75f76a66e0John McCall    A a;
103b697e084341185a08b3946df032fbc75f76a66e0John McCall    a.foo(i); // expected-warning {{deprecated}}
104b697e084341185a08b3946df032fbc75f76a66e0John McCall    a.foo(l);
105b697e084341185a08b3946df032fbc75f76a66e0John McCall    a.bar(i); // expected-warning {{deprecated}}
106b697e084341185a08b3946df032fbc75f76a66e0John McCall    a.bar(l);
107b697e084341185a08b3946df032fbc75f76a66e0John McCall    A::bar(i); // expected-warning {{deprecated}}
108b697e084341185a08b3946df032fbc75f76a66e0John McCall    A::bar(l);
109b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
110b697e084341185a08b3946df032fbc75f76a66e0John McCall
111b697e084341185a08b3946df032fbc75f76a66e0John McCall  void A::test2(int i, long l) {
112b697e084341185a08b3946df032fbc75f76a66e0John McCall    foo(i); // expected-warning {{deprecated}}
113b697e084341185a08b3946df032fbc75f76a66e0John McCall    foo(l);
114b697e084341185a08b3946df032fbc75f76a66e0John McCall    bar(i); // expected-warning {{deprecated}}
115b697e084341185a08b3946df032fbc75f76a66e0John McCall    bar(l);
116b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
117b697e084341185a08b3946df032fbc75f76a66e0John McCall}
118b697e084341185a08b3946df032fbc75f76a66e0John McCall
119b697e084341185a08b3946df032fbc75f76a66e0John McCall// Overloaded operators.
120b697e084341185a08b3946df032fbc75f76a66e0John McCallnamespace test3 {
121b697e084341185a08b3946df032fbc75f76a66e0John McCall  struct A {
122b697e084341185a08b3946df032fbc75f76a66e0John McCall    void operator*(const A &);
123350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    void operator*(int) __attribute__((deprecated)); // expected-note {{declared here}}
124b697e084341185a08b3946df032fbc75f76a66e0John McCall    void operator-(const A &) const;
125b697e084341185a08b3946df032fbc75f76a66e0John McCall  };
126b697e084341185a08b3946df032fbc75f76a66e0John McCall  void operator+(const A &, const A &);
127350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  void operator+(const A &, int) __attribute__((deprecated)); // expected-note {{declared here}}
128350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  void operator-(const A &, int) __attribute__((deprecated)); // expected-note {{declared here}}
129b697e084341185a08b3946df032fbc75f76a66e0John McCall
130b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test() {
131b697e084341185a08b3946df032fbc75f76a66e0John McCall    A a, b;
132b697e084341185a08b3946df032fbc75f76a66e0John McCall    a + b;
133b697e084341185a08b3946df032fbc75f76a66e0John McCall    a + 1; // expected-warning {{deprecated}}
134b697e084341185a08b3946df032fbc75f76a66e0John McCall    a - b;
135b697e084341185a08b3946df032fbc75f76a66e0John McCall    a - 1; // expected-warning {{deprecated}}
136b697e084341185a08b3946df032fbc75f76a66e0John McCall    a * b;
137b697e084341185a08b3946df032fbc75f76a66e0John McCall    a * 1; // expected-warning {{deprecated}}
138b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
139b697e084341185a08b3946df032fbc75f76a66e0John McCall}
140b697e084341185a08b3946df032fbc75f76a66e0John McCall
141b697e084341185a08b3946df032fbc75f76a66e0John McCall// Overloaded operator call.
142b697e084341185a08b3946df032fbc75f76a66e0John McCallnamespace test4 {
143b697e084341185a08b3946df032fbc75f76a66e0John McCall  struct A {
144b697e084341185a08b3946df032fbc75f76a66e0John McCall    typedef void (*intfn)(int);
145b697e084341185a08b3946df032fbc75f76a66e0John McCall    typedef void (*unintfn)(unsigned);
146350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    operator intfn() __attribute__((deprecated)); // expected-note {{declared here}}
147b697e084341185a08b3946df032fbc75f76a66e0John McCall    operator unintfn();
148350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    void operator ()(A &) __attribute__((deprecated)); // expected-note {{declared here}}
149b697e084341185a08b3946df032fbc75f76a66e0John McCall    void operator ()(const A &);
150b697e084341185a08b3946df032fbc75f76a66e0John McCall  };
151b697e084341185a08b3946df032fbc75f76a66e0John McCall
152b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test() {
153b697e084341185a08b3946df032fbc75f76a66e0John McCall    A a;
154b697e084341185a08b3946df032fbc75f76a66e0John McCall    a(1); // expected-warning {{deprecated}}
155b697e084341185a08b3946df032fbc75f76a66e0John McCall    a(1U);
156b697e084341185a08b3946df032fbc75f76a66e0John McCall
157b697e084341185a08b3946df032fbc75f76a66e0John McCall    A &b = a;
158b697e084341185a08b3946df032fbc75f76a66e0John McCall    const A &c = a;
159b697e084341185a08b3946df032fbc75f76a66e0John McCall    a(b); // expected-warning {{deprecated}}
160b697e084341185a08b3946df032fbc75f76a66e0John McCall    a(c);
161b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
162b697e084341185a08b3946df032fbc75f76a66e0John McCall}
163b697e084341185a08b3946df032fbc75f76a66e0John McCall
164b697e084341185a08b3946df032fbc75f76a66e0John McCallnamespace test5 {
165b697e084341185a08b3946df032fbc75f76a66e0John McCall  struct A {
166c3b2308f66fe8abd2c1a911b500c0b989c295819Eli Friedman    operator int() __attribute__((deprecated)); // expected-note 3 {{declared here}}
167b697e084341185a08b3946df032fbc75f76a66e0John McCall    operator long();
168b697e084341185a08b3946df032fbc75f76a66e0John McCall  };
169b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test1(A a) {
170b697e084341185a08b3946df032fbc75f76a66e0John McCall    int i = a; // expected-warning {{deprecated}}
171b697e084341185a08b3946df032fbc75f76a66e0John McCall    long l = a;
172b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
173b697e084341185a08b3946df032fbc75f76a66e0John McCall
174b697e084341185a08b3946df032fbc75f76a66e0John McCall  void foo(int);
175b697e084341185a08b3946df032fbc75f76a66e0John McCall  void foo(void*);
176b697e084341185a08b3946df032fbc75f76a66e0John McCall  void bar(long);
177b697e084341185a08b3946df032fbc75f76a66e0John McCall  void bar(void*);
178b697e084341185a08b3946df032fbc75f76a66e0John McCall  void test2(A a) {
179b697e084341185a08b3946df032fbc75f76a66e0John McCall    foo(a); // expected-warning {{deprecated}}
180b697e084341185a08b3946df032fbc75f76a66e0John McCall    bar(a);
181b697e084341185a08b3946df032fbc75f76a66e0John McCall  }
182b697e084341185a08b3946df032fbc75f76a66e0John McCall
183b697e084341185a08b3946df032fbc75f76a66e0John McCall  struct B {
184b697e084341185a08b3946df032fbc75f76a66e0John McCall    int myInt;
185b697e084341185a08b3946df032fbc75f76a66e0John McCall    long myLong;
186b697e084341185a08b3946df032fbc75f76a66e0John McCall
187b697e084341185a08b3946df032fbc75f76a66e0John McCall    B(A &a) :
188b697e084341185a08b3946df032fbc75f76a66e0John McCall      myInt(a), // expected-warning {{deprecated}}
189b697e084341185a08b3946df032fbc75f76a66e0John McCall      myLong(a)
190b697e084341185a08b3946df032fbc75f76a66e0John McCall    {}
191b697e084341185a08b3946df032fbc75f76a66e0John McCall  };
192b697e084341185a08b3946df032fbc75f76a66e0John McCall}
1935b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall
1945b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall// rdar://problem/8518751
1955b629aa86c987f276d00453b6c9ab8424f7903feJohn McCallnamespace test6 {
196350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian  enum __attribute__((deprecated)) A { // expected-note {{declared here}}
197350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    a0 // expected-note {{declared here}}
1985b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  };
1995b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  void testA() {
2005b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    A x; // expected-warning {{'A' is deprecated}}
20139b4fc888d2b9b8fe1a9c982964b5054ba1c3c73Fariborz Jahanian    x = a0; // expected-warning {{'a0' is deprecated}}
2025b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  }
2035b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall
2045b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  enum B {
205350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    b0 __attribute__((deprecated)), // expected-note {{declared here}}
2065b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    b1
2075b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  };
2085b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  void testB() {
2095b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    B x;
2105b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    x = b0; // expected-warning {{'b0' is deprecated}}
2115b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    x = b1;
2125b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  }
2135b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall
2145b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  template <class T> struct C {
215350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian    enum __attribute__((deprecated)) Enum { // expected-note {{declared here}}
216350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian      c0 // expected-note {{declared here}}
2175b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    };
2185b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  };
2195b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  void testC() {
2205b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    C<int>::Enum x; // expected-warning {{'Enum' is deprecated}}
22139b4fc888d2b9b8fe1a9c982964b5054ba1c3c73Fariborz Jahanian    x = C<int>::c0; // expected-warning {{'c0' is deprecated}}
2225b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  }
2235b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall
2245b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  template <class T> struct D {
2255b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    enum Enum {
2265b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall      d0,
227350e956532d99ce2e804a478df5b6f1f5e096d88Fariborz Jahanian      d1 __attribute__((deprecated)), // expected-note {{declared here}}
2285b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    };
2295b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  };
2305b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  void testD() {
2315b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    D<int>::Enum x;
2325b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    x = D<int>::d0;
2335b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall    x = D<int>::d1; // expected-warning {{'d1' is deprecated}}
2345b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall  }
2355b629aa86c987f276d00453b6c9ab8424f7903feJohn McCall}
2363c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky
2373c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewyckynamespace test7 {
2383c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky  struct X {
2399efe057ac090ed0d45a64b82e68c74e52c67ed91Nick Lewycky    void* operator new(typeof(sizeof(void*))) __attribute__((deprecated));  // expected-note{{'operator new' declared here}}
2403c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky    void operator delete(void *) __attribute__((deprecated));  // expected-note{{'operator delete' declared here}}
2413c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky  };
2423c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky
2433c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky  void test() {
2443c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky    X *x = new X;  // expected-warning{{'operator new' is deprecated}} expected-warning{{'operator delete' is deprecated}}
2453c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky  }
2463c86a5c2f60d4f68afde96e2138b6933b30d6aa8Nick Lewycky}
247