Home | History | Annotate | Download | only in Sema
      1 // RUN: %clang_cc1 %s -verify -fsyntax-only
      2 
      3 typedef struct _zend_module_entry zend_module_entry;
      4 struct _zend_module_entry {
      5   _efree((p)); // expected-error{{type name requires a specifier or qualifier}} \
      6                   expected-error{{field '_efree' declared as a function}} \
      7                   expected-warning {{type specifier missing, defaults to 'int'}} \
      8                   expected-warning {{type specifier missing, defaults to 'int'}}
      9 
     10 };
     11 typedef struct _zend_function_entry { } zend_function_entry;
     12 typedef struct _zend_pcre_globals { } zend_pcre_globals;
     13 zend_pcre_globals pcre_globals;
     14 
     15 static void zm_globals_ctor_pcre(zend_pcre_globals *pcre_globals ) { }
     16 static void zm_globals_dtor_pcre(zend_pcre_globals *pcre_globals ) { }
     17 static void zm_info_pcre(zend_module_entry *zend_module ) { }
     18 static int zm_startup_pcre(int type, int module_number ) { }
     19 
     20 static int zm_shutdown_pcre(int type, int module_number ) {
     21   zend_function_entry pcre_functions[] = {{ }; // expected-error{{expected '}'}} expected-note {{to match this '{'}}
     22   zend_module_entry pcre_module_entry = {
     23     sizeof(zend_module_entry), 20071006, 0, 0, ((void *)0), ((void *)0),
     24     "pcre",  pcre_functions,  zm_startup_pcre,  zm_shutdown_pcre,  ((void *)0),
     25     ((void *)0),  zm_info_pcre,  ((void *)0),  sizeof(zend_pcre_globals), &pcre_globals,
     26     ((void (*)(void* ))(zm_globals_ctor_pcre)),  ((void (*)(void* ))(zm_globals_dtor_pcre)),
     27     ((void *)0),  0, 0, ((void *)0), 0
     28   };
     29 }
     30