1*67e74705SXin Li /* RUN: %clang_cc1 -fsyntax-only %s -verify 2*67e74705SXin Li */ 3*67e74705SXin Li 4*67e74705SXin Li typedef void Void; 5*67e74705SXin Li foo()6*67e74705SXin Livoid foo() { 7*67e74705SXin Li int X; 8*67e74705SXin Li 9*67e74705SXin Li X = sizeof(int (void a)); // expected-error {{argument may not have 'void' type}} 10*67e74705SXin Li X = sizeof(int (int, void)); // expected-error {{must be the first and only parameter}} 11*67e74705SXin Li X = sizeof(int (void, ...)); // expected-error {{must be the first and only parameter}} 12*67e74705SXin Li 13*67e74705SXin Li X = sizeof(int (Void a)); // expected-error {{argument may not have 'void' type}} 14*67e74705SXin Li X = sizeof(int (int, Void)); // expected-error {{must be the first and only parameter}} 15*67e74705SXin Li X = sizeof(int (Void, ...)); // expected-error {{must be the first and only parameter}} 16*67e74705SXin Li 17*67e74705SXin Li // Accept these. 18*67e74705SXin Li X = sizeof(int (void)); 19*67e74705SXin Li X = sizeof(int (Void)); 20*67e74705SXin Li } 21*67e74705SXin Li 22*67e74705SXin Li // this is ok. bar(Void)23*67e74705SXin Livoid bar(Void) { 24*67e74705SXin Li } 25*67e74705SXin Li 26*67e74705SXin Li void f(const void); // expected-error {{parameter must not have type qualifiers}} 27