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