1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 struct A
; // expected-note 15 {{forward declaration of 'A'}}
4 A
f(); // expected-note {{'f' declared here}}
5 template <typename T
> A
ft(T
); // expected-note {{'ft' declared here}}
8 A
f(); // expected-note {{'f' declared here}}
9 A
operator()(); // expected-note 2 {{'operator()' declared here}}
10 operator A(); // expected-note {{'operator A' declared here}}
11 A
operator!(); // expected-note 2 {{'operator!' declared here}}
12 A
operator++(int); // expected-note {{'operator++' declared here}}
13 A
operator[](int); // expected-note {{'operator[]' declared here}}
14 A
operator+(int); // expected-note {{'operator+' declared here}}
15 A
operator->(); // expected-note {{'operator->' declared here}}
19 f(); // expected-error {{calling 'f' with incomplete return type 'A'}}
23 fp(); // expected-error {{calling function with incomplete return type 'A'}}
24 ((Func
)0)(); // expected-error {{calling function with incomplete return type 'A'}}
27 b
.f(); // expected-error {{calling 'f' with incomplete return type 'A'}}
29 b
.operator()(); // expected-error {{calling 'operator()' with incomplete return type 'A'}}
30 b
.operator A(); // expected-error {{calling 'operator A' with incomplete return type 'A'}}
31 b
.operator!(); // expected-error {{calling 'operator!' with incomplete return type 'A'}}
33 !b
; // expected-error {{calling 'operator!' with incomplete return type 'A'}}
34 b(); // expected-error {{calling 'operator()' with incomplete return type 'A'}}
35 b
++; // expected-error {{calling 'operator++' with incomplete return type 'A'}}
36 b
[0]; // expected-error {{calling 'operator[]' with incomplete return type 'A'}}
37 b
+ 1; // expected-error {{calling 'operator+' with incomplete return type 'A'}}
38 b
->f(); // expected-error {{calling 'operator->' with incomplete return type 'A'}}
41 (b
.*mfp
)(); // expected-error {{calling function with incomplete return type 'A'}}
43 ft(42); // expected-error {{calling 'ft<int>' with incomplete return type 'A'}}
47 struct C
; // expected-note{{forward declaration}}
49 void test_incomplete_object_call(C
& c
) {
50 c(); // expected-error{{incomplete type in call to object of type}}
53 void test_incomplete_object_dtor(C
*p
) {
54 p
.~C(); // expected-error{{member reference type 'C *' is a pointer; did you mean to use '->'?}}
60 template<typename CharT
> class basic_istream
;
61 template<typename CharT
>
62 void basic_istream
<CharT
>::read() { // expected-error{{out-of-line definition of 'read' from class 'basic_istream<CharT>' without definition}}