| 1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
| 2 | |
| 3 | typedef int TInt; |
| 4 | |
| 5 | static void test() { |
| 6 | int *pi; |
| 7 | |
| 8 | int typeof (int) aIntInt; // expected-error{{cannot combine with previous 'int' declaration specifier}} |
| 9 | short typeof (int) aShortInt; // expected-error{{'short typeof' is invalid}} |
| 10 | int int ttt; // expected-error{{cannot combine with previous 'int' declaration specifier}} |
| 11 | typeof(TInt) anInt; |
| 12 | short TInt eee; // expected-error{{expected ';' at end of declaration}} |
| 13 | void ary[7] fff; // expected-error{{array has incomplete element type 'void'}} expected-error{{expected ';' at end of declaration}} |
| 14 | typeof(void ary[7]) anIntError; // expected-error{{expected ')'}} expected-note {{to match this '('}} expected-error {{variable has incomplete type 'typeof(void)' (aka 'void')}} |
| 15 | typeof(const int) aci; |
| 16 | const typeof (*pi) aConstInt; |
| 17 | int xx; |
| 18 | int *i; |
| 19 | } |
| 20 | |
| 21 | // <rdar://problem/8237491> |
| 22 | void test2() { |
| 23 | int a; |
| 24 | short b; |
| 25 | __typeof__(a) (*f)(__typeof__(b)); |
| 26 | } |
| 27 | |