| /* Test for -Wtraditional warnings on ISO C function definitions. |
| Note, gcc should omit these warnings in system header files. |
| Origin: Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 6/30/2002. */ |
| /* { dg-do compile } */ |
| /* APPLE LOCAL testsuite nested functions */ |
| /* { dg-options "-Wtraditional -fnested-functions" } */ |
| |
| /* Test some simple cases. */ |
| |
| void f_void1 (void) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| void f_void2 () |
| { |
| return; |
| } |
| |
| void f_int1 (int f) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| void f_int2 (f) |
| int f; |
| { |
| return; |
| } |
| |
| /* Test that we don't ever warn about nested functions. */ |
| |
| void f_int3 (int f) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| void f3a (void) { return; } |
| void f3b () { return; } |
| void f3c (int f) { return; } |
| void f3d (f) int f; { return; } |
| void f3e (const char *f, ...) { return; } |
| return; |
| } |
| |
| void f_int4 (int f) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| void f4a (void) { return; } |
| void f4b () { return; } |
| void f4c (int f) { return; } |
| void f4d (f) int f; { return; } |
| void f4e (const char *f, ...) { return; } |
| auto f4f (void) { return 0; } |
| return; |
| } |
| |
| void f_int5 (f) |
| int f; |
| { |
| void f5a (void) { return; } |
| void f5b () { return; } |
| void f5c (int f) { return; } |
| void f5d (f) int f; { return; } |
| void f5e (const char *f, ...) { return; } |
| return; |
| } |
| |
| void f_int6 (f) |
| int f; |
| { |
| void f6a (void) { return; } |
| void f6b () { return; } |
| void f6c (int f) { return; } |
| void f6d (f) int f; { return; } |
| void f6e (const char *f, ...) { return; } |
| auto f6f (void) { return 0; } |
| return; |
| } |
| |
| /* Test that prototypes are silently accepted and function definitions |
| are still warned about. */ |
| |
| extern void f_int_p1 (int); |
| void f_int_p1 (int f) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| extern void f_int_p2 (int f); |
| void f_int_p2 (int f) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| extern void f_int_p3 (int); |
| void f_int_p3 (f) |
| int f; |
| { |
| return; |
| } |
| |
| extern void f_int_p4 (int f); |
| void f_int_p4 (f) |
| int f; |
| { |
| return; |
| } |
| |
| extern void f_void_p1 (); |
| void f_void_p1 (void) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| extern void f_void_p2 (void); |
| void f_void_p2 (void) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| extern void f_blank_p1 (); |
| void f_blank_p1 () |
| { |
| return; |
| } |
| |
| extern void f_blank_p2 (void); |
| void f_blank_p2 () |
| { |
| return; |
| } |
| |
| /* Test some implicit int functions. */ |
| |
| f_impl1() |
| { |
| return 0; |
| } |
| |
| f_impl2(void) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return 0; |
| } |
| |
| f_impl3(int f) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return 0; |
| } |
| |
| /* Test stdarg functions. */ |
| |
| f_stdarg1(const char *s, ...) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return 0; |
| } |
| |
| void f_stdarg2(const char *s, ...) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| extern void f_stdarg3(const char *, ...); |
| void f_stdarg3(const char *s, ...) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| /* Test handling function pointer parameters. */ |
| |
| void f_fnptr1 (int f, int (*fp)(int)); |
| void f_fnptr1 (int f, int (*fp)(int)) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return; |
| } |
| |
| void f_fnptr2 (int f, int (*fp)(int)); |
| void f_fnptr2 (f, fp) |
| int f; |
| int (*fp)(int); |
| { |
| return; |
| } |
| |
| /* Test for main. */ |
| |
| int |
| main (int argc, char **argv) |
| { /* { dg-warning "traditional C rejects ISO C style" } */ |
| return 0; |
| } |
| |
| # 182 "sys-header.h" 3 |
| /* We are in system headers now, no -Wtraditional warnings should issue. */ |
| |
| void fsys1 (void) |
| { |
| return; |
| } |
| |
| void fsys2 (int f) |
| { |
| return; |
| } |
| |
| void fsys3 (const char *f, ...) |
| { |
| return; |
| } |