1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct A {
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   A() : value(), cvalue() { } // expected-error {{reference to type 'int' requires an initializer}}
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   int &value;
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   const int cvalue;
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct B {
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct X {
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   X() { }      // expected-error {{constructor for 'X' must explicitly initialize the reference member 'value'}} \
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao                // expected-error {{constructor for 'X' must explicitly initialize the const member 'cvalue'}} \
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao                // expected-error {{constructor for 'X' must explicitly initialize the reference member 'b'}} \
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao                // expected-error {{constructor for 'X' must explicitly initialize the const member 'cb'}}
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   int &value; // expected-note{{declared here}}
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   const int cvalue; // expected-note{{declared here}}
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   B& b; // expected-note{{declared here}}
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   const B cb; // expected-note{{declared here}}
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// PR5924
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct bar {};
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaobar xxx();
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct foo {
29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  foo_t a;  // expected-error {{unknown type name 'foo_t'}}
30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  foo() : a(xxx()) {}  // no error here.
31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
32