Anders Carlsson | 11582f5 | 2009-10-09 23:58:25 +0000 | [diff] [blame] | 1 | // RUN: clang-cc -fsyntax-only -verify %s |
Anders Carlsson | eed3e69 | 2009-10-10 00:06:20 +0000 | [diff] [blame^] | 2 | struct A; // expected-note 4 {{forward declaration of 'struct A'}} |
Anders Carlsson | 11582f5 | 2009-10-09 23:58:25 +0000 | [diff] [blame] | 3 | |
| 4 | A f(); // expected-note {{note: 'f' declared here}} |
| 5 | |
| 6 | struct B { |
Anders Carlsson | eed3e69 | 2009-10-10 00:06:20 +0000 | [diff] [blame^] | 7 | A f(); // expected-note {{'f' declared here}} |
Anders Carlsson | 11582f5 | 2009-10-09 23:58:25 +0000 | [diff] [blame] | 8 | }; |
| 9 | |
| 10 | void g() { |
| 11 | f(); // expected-error {{calling 'f' with incomplete return type 'struct A'}} |
| 12 | |
| 13 | typedef A (*Func)(); |
| 14 | Func fp; |
| 15 | fp(); // expected-error {{calling function with incomplete return type 'struct A'}} |
| 16 | ((Func)0)(); // expected-error {{calling function with incomplete return type 'struct A'}} |
Anders Carlsson | eed3e69 | 2009-10-10 00:06:20 +0000 | [diff] [blame^] | 17 | |
| 18 | B b; |
| 19 | b.f(); // expected-error {{calling 'f' with incomplete return type 'struct A'}} |
Anders Carlsson | 11582f5 | 2009-10-09 23:58:25 +0000 | [diff] [blame] | 20 | } |