| /* RUN: %clang_cc1 -fsyntax-only %s -verify | 
 |  */ | 
 |  | 
 | typedef void Void; | 
 |  | 
 | void foo() { | 
 |   int X; | 
 |    | 
 |   X = sizeof(int (void a));    // expected-error {{argument may not have 'void' type}} | 
 |   X = sizeof(int (int, void)); // expected-error {{must be the first and only parameter}} | 
 |   X = sizeof(int (void, ...)); // expected-error {{must be the first and only parameter}} | 
 |  | 
 |   X = sizeof(int (Void a));    // expected-error {{argument may not have 'void' type}} | 
 |   X = sizeof(int (int, Void)); // expected-error {{must be the first and only parameter}} | 
 |   X = sizeof(int (Void, ...)); // expected-error {{must be the first and only parameter}} | 
 |  | 
 |   // Accept these. | 
 |   X = sizeof(int (void)); | 
 |   X = sizeof(int (Void)); | 
 | } | 
 |  | 
 | // this is ok. | 
 | void bar(Void) { | 
 | } | 
 |  | 
 | void f(const void);            // expected-error {{parameter must not have type qualifiers}} |