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