1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
2cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara
3cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnarastruct S; // expected-note 4{{forward declaration of 'S'}}
4cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara
5cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnarastruct T0 {
6cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara  S s; // expected-error{{field has incomplete type 'S'}}
7cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara  T0() = default;
8cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara};
9cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara
10cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnarastruct T1 {
11cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara  S s; // expected-error{{field has incomplete type 'S'}}
123003e1d6626d07e8fc4af95fad95b3a5d4c4af98Richard Smith  T1(const T1&) = default;
13cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara};
14cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara
15cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnarastruct T2 {
16cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara  S s; // expected-error{{field has incomplete type 'S'}}
173003e1d6626d07e8fc4af95fad95b3a5d4c4af98Richard Smith  T2& operator=(const T2&) = default;
18cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara};
19cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara
20cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnarastruct T3 {
21cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara  S s; // expected-error{{field has incomplete type 'S'}}
22cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara  ~T3() = default;
23cdb8076dd9cfb975a1bcb3e7cb58a59648c35af0Abramo Bagnara};
24