xref: /aosp_15_r20/external/clang/test/Sema/void_arg.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void 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 Li void bar(Void) {
24*67e74705SXin Li }
25*67e74705SXin Li 
26*67e74705SXin Li void f(const void);            // expected-error {{parameter must not have type qualifiers}}
27