2020-11-06 12:08:23 +08:00
// RUN: %clang_cc1 %s -verify -fsyntax-only -Werror=implicit-function-declaration
/// -Werror-implicit-function-declaration is a deprecated alias used by many projects.
// RUN: %clang_cc1 %s -verify -fsyntax-only -Werror-implicit-function-declaration
2008-04-04 22:32:09 +08:00
typedef int int32_t ;
typedef unsigned char Boolean ;
2011-12-06 17:46:12 +08:00
extern int printf ( __const char * __restrict __format , . . . ) ; // expected-note{{'printf' declared here}}
2008-04-04 22:32:09 +08:00
void func ( ) {
int32_t * vector [ 16 ] ;
const char compDesc [ 16 + 1 ] ;
int32_t compCount = 0 ;
2017-10-04 09:49:22 +08:00
if ( _CFCalendarDecomposeAbsoluteTimeV ( compDesc , vector , compCount ) ) { // expected-error {{implicit declaration of function '_CFCalendarDecomposeAbsoluteTimeV' is invalid in C99}} expected-note {{previous implicit declaration}}
2008-04-04 22:32:09 +08:00
}
2011-12-06 17:46:12 +08:00
2011-12-08 23:56:07 +08:00
printg ( " Hello, World! \n " ) ; / / expected - error { { implicit declaration of function ' printg ' is invalid in C99 } } \
2011-12-06 17:46:12 +08:00
// expected-note{{did you mean 'printf'?}}
2012-01-19 05:41:41 +08:00
__builtin_is_les ( 1 , 3 ) ; // expected-error{{use of unknown builtin '__builtin_is_les'}}
2008-04-04 22:32:09 +08:00
}
2017-10-04 09:49:22 +08:00
Boolean _CFCalendarDecomposeAbsoluteTimeV ( const char * componentDesc , int32_t * * vector , int32_t count ) { // expected-error {{conflicting types}}
2008-04-04 22:32:09 +08:00
return 0 ;
}
2012-01-19 05:41:41 +08:00
// Test the typo-correction callback in Sema::ImplicitlyDefineFunction
extern int sformatf ( char * str , __const char * __restrict __format , . . . ) ; // expected-note{{'sformatf' declared here}}
void test_implicit ( ) {
int formats = 0 ;
formatd ( " Hello, World! \n " ) ; / / expected - error { { implicit declaration of function ' formatd ' is invalid in C99 } } \
// expected-note{{did you mean 'sformatf'?}}
}