1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 %s -verify -fsyntax-only 2cd8812948bc8a65dcf10c541c1775e5ba44def6cChris Lattnertypedef char T[4]; 3cd8812948bc8a65dcf10c541c1775e5ba44def6cChris Lattner 458408bc4ead86b08af56cd06fc966fd858b48b2dDouglas GregorT foo(int n, int m) { } // expected-error {{cannot return array type}} 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 104ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattnerstruct _zend_module_entry { } // expected-error {{expected ';' after struct}} 1199c952046600f6bfccf315aa7ad5b1be2d242cc3Chris Lattnerint gv1; 124ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattnertypedef struct _zend_function_entry { } // expected-error {{expected ';' after struct}} \ 13c7f811638f8603fa373d2be724e8b1c8ba51ad75Richard Smith // expected-warning {{typedef requires a name}} 1499c952046600f6bfccf315aa7ad5b1be2d242cc3Chris Lattnerint gv2; 1599c952046600f6bfccf315aa7ad5b1be2d242cc3Chris Lattner 164ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattnerstatic void buggy(int *x) { } 17e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff 1896b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattner// Type qualifiers. 1996b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattnertypedef int f(void); 2096b77fc05ed4a052a9e614f72b0e83572408ce48Chris Lattnertypedef f* fptr; 21d0344a4a6182ad704881cbbaa21cca14913d2296Chris Lattnerconst f* v1; // expected-warning {{qualifier on function type 'f' (aka 'int (void)') has unspecified behavior}} 22d0344a4a6182ad704881cbbaa21cca14913d2296Chris Lattner__restrict__ f* v2; // expected-error {{restrict requires a pointer or reference ('f' (aka 'int (void)') is invalid)}} 23d0344a4a6182ad704881cbbaa21cca14913d2296Chris Lattner__restrict__ fptr v3; // expected-error {{pointer to function type 'f' (aka 'int (void)') may not be 'restrict' qualified}} 24d0344a4a6182ad704881cbbaa21cca14913d2296Chris Lattnerf *__restrict__ v4; // expected-error {{pointer to function type 'f' (aka 'int (void)') may not be 'restrict' qualified}} 25e39bfd0c52975dfb038413aa55147df2fc709ce2Steve Naroff 260a8bab019dbf980911fbefa56d7debd648b7b239Nuno Lopesrestrict struct hallo; // expected-error {{restrict requires a pointer or reference}} 274ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattner 284ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattner// PR6180 294ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattnerstruct test1 { 304ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattner} // expected-error {{expected ';' after struct}} 314ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattner 324ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattnervoid test2() {} 334ed5d91db256f7dbe6bf716da0b801004c197254Chris Lattner 34b3a4e432c90be98c6d918087750397e86d030368Chris Lattner 35b3a4e432c90be98c6d918087750397e86d030368Chris Lattner// PR6423 36b3a4e432c90be98c6d918087750397e86d030368Chris Lattnerstruct test3s { 37b3a4e432c90be98c6d918087750397e86d030368Chris Lattner} // expected-error {{expected ';' after struct}} 38b3a4e432c90be98c6d918087750397e86d030368Chris Lattnertypedef int test3g; 39d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov 40d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov// PR8264 41d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlovconst const int pr8264_1 = 0; // expected-warning {{duplicate 'const' declaration specifier}} 42d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlovvolatile volatile int pr8264_2; // expected-warning {{duplicate 'volatile' declaration specifier}} 43d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlovchar * restrict restrict pr8264_3; // expected-warning {{duplicate 'restrict' declaration specifier}} 44d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov 45d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlovextern extern int pr8264_4; // expected-warning {{duplicate 'extern' declaration specifier}} 46d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlovvoid pr8264_5() { 47d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov register register int x; // expected-warning {{duplicate 'register' declaration specifier}} 48d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov} 49d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov 50d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlovinline inline void pr8264_6() {} // expected-warning {{duplicate 'inline' declaration specifier}} 51d1fa81ccbce1ba2d8f467e7c2800250b81ea2e35Serge Pavlov_Noreturn _Noreturn void pr8264_7(); // expected-warning {{duplicate '_Noreturn' declaration specifier}} 52