declspec.c revision 96b77fc05ed4a052a9e614f72b0e83572408ce48
1cd8812948bc8a65dcf10c541c1775e5ba44def6cChris Lattner// RUN: clang %s -verify -fsyntax-only 2cd8812948bc8a65dcf10c541c1775e5ba44def6cChris Lattnertypedef char T[4]; 3cd8812948bc8a65dcf10c541c1775e5ba44def6cChris Lattner 4cd8812948bc8a65dcf10c541c1775e5ba44def6cChris LattnerT foo(int n, int m) { } // expected-error {{cannot return array or function}} 5cd8812948bc8a65dcf10c541c1775e5ba44def6cChris Lattner 61b4a6227f3ee6fca074d0f521757d1ed4f95ef38Steve Naroffvoid foof(const char *, ...) __attribute__((__format__(__printf__, 1, 2))), barf (void); 71b4a6227f3ee6fca074d0f521757d1ed4f95ef38Steve Naroff 8e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroffint typedef validTypeDecl() { } // expected-error {{function definition declared 'typedef'}} 9e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff 109532414c45a7114d9e94a733121655a5b5d5b473Steve Naroffstruct _zend_module_entry { } 119532414c45a7114d9e94a733121655a5b5d5b473Steve Narofftypedef struct _zend_function_entry { } // expected-error {{cannot combine with previous 'struct' declaration specifier}} 12e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroffstatic void buggy(int *x) { } // expected-error {{function definition declared 'typedef'}} \ 13e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff // expected-error {{cannot combine with previous 'typedef' declaration specifier}} \ 14e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff // expected-error {{cannot combine with previous 'struct' declaration specifier}} 15e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff 1696b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattner// Type qualifiers. 1796b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattnertypedef int f(void); 1896b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattnertypedef f* fptr; 1996b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattnerconst f* v1; // expected-warning {{qualifier on function type 'f' has unspecified behavior}} 2096b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattner__restrict__ f* v2; // expected-error {{restrict requires a pointer or reference ('f' is invalid)}} 2196b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattner__restrict__ fptr v3; // expected-error {{estrict pointee must be an object or incomplete type ('f' is invalid)}} 2296b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattnerf *__restrict__ v4; // expected-error {{restrict pointee must be an object or incomplete type ('f' is invalid)}} 23e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff 24