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