// RUN: %clang_cc1 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
// Dynamic specifications: valid types.
; // expected-note 3 {{forward declaration}}
// Exception spec must not have incomplete types, or pointers to them, except
// void.
void throw; // expected-error {{incomplete type 'void' is not allowed in exception specification}}
void throw; // expected-error {{incomplete type 'Incomplete' is not allowed in exception specification}}
void throw;
void throw; // expected-error {{pointer to incomplete type 'Incomplete' is not allowed in exception specification}}
void throw; // expected-error {{reference to incomplete type 'Incomplete' is not allowed in exception specification}}
// Don't suppress errors in template instantiation.
; // expected-note {{template is declared here}}
void throw; // expected-error {{implicit instantiation of undefined template}}
// DR 437, class throws itself.
;
// DR 437 within a nested class
;