2009-12-16 04:14:24 +08:00
// RUN: %clang_cc1 -fsyntax-only -verify %s
2009-02-26 00:33:18 +08:00
// C DR #316, PR 3626.
void f0 ( a , b , c , d ) int a , b , c , d ; { }
2009-04-02 23:37:10 +08:00
void t0 ( void ) {
f0 ( 1 ) ; // expected-warning{{too few arguments}}
}
2009-02-26 00:33:18 +08:00
void f1 ( a , b ) int a , b ; { }
2009-04-02 23:37:10 +08:00
void t1 ( void ) {
f1 ( 1 , 2 , 3 ) ; // expected-warning{{too many arguments}}
}
2009-02-26 00:33:18 +08:00
void f2 ( float ) ; // expected-note{{previous declaration is here}}
2009-03-07 06:43:54 +08:00
void f2 ( x ) float x ; { } // expected-warning{{promoted type 'double' of K&R function parameter is not compatible with the parameter type 'float' declared in a previous prototype}}
2009-02-26 00:33:18 +08:00
typedef void ( * f3 ) ( void ) ;
f3 t3 ( int b ) { return b ? f0 : f1 ; } // okay