Chandler Carruth | 34d4947 | 2011-02-21 00:56:56 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
| 2 | |
| 3 | int f() __attribute__((warn_unused_result)); |
| 4 | |
| 5 | struct S { |
| 6 | void t() const; |
| 7 | }; |
| 8 | S g1() __attribute__((warn_unused_result)); |
| 9 | S *g2() __attribute__((warn_unused_result)); |
| 10 | S &g3() __attribute__((warn_unused_result)); |
| 11 | |
| 12 | void test() { |
| 13 | f(); // expected-warning {{ignoring return value}} |
| 14 | g1(); // expected-warning {{ignoring return value}} |
| 15 | g2(); // expected-warning {{ignoring return value}} |
| 16 | g3(); // expected-warning {{ignoring return value}} |
| 17 | |
| 18 | (void)f(); |
| 19 | (void)g1(); |
| 20 | (void)g2(); |
| 21 | (void)g3(); |
| 22 | |
| 23 | if (f() == 0) return; |
| 24 | |
| 25 | g1().t(); |
| 26 | g2()->t(); |
| 27 | g3().t(); |
| 28 | |
| 29 | int i = f(); |
| 30 | S s1 = g1(); |
| 31 | S *s2 = g2(); |
| 32 | S &s3 = g3(); |
| 33 | const S &s4 = g1(); |
| 34 | } |
| 35 | |
| 36 | struct X { |
| 37 | int foo() __attribute__((warn_unused_result)); |
| 38 | }; |
| 39 | |
| 40 | void bah() { |
| 41 | X x, *x2; |
| 42 | x.foo(); // expected-warning {{ignoring return value}} |
| 43 | x2->foo(); // expected-warning {{ignoring return value}} |
| 44 | } |