declarators.c revision c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086
1d7d5f0223bd30dfd618762349c6209dd1d5ea3e6Daniel Dunbar// RUN: clang-cc %s -fsyntax-only -verify -pedantic
25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerextern int a1[];
45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
55f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencervoid f0();
65f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencervoid f1(int [*]);
75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencervoid f2(int [const *]);
85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencervoid f3(int [volatile const*]);
9d658b562e80d6ef7a1118e34ff12802c6e2fccedChris Lattnerint f4(*XX)(void); /* expected-error {{cannot return}} expected-warning {{type specifier missing, defaults to 'int'}} */
105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerchar ((((*X))));
125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencervoid (*signal(int, void (*)(int)))(int);
145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
15c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerint a, ***C, * const D, B(int);
165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
175f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerint *A;
185f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
195f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerstruct str;
205f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
215f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerint test2(int *P, int A) {
225f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  struct str;
235f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
245f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  // Hard case for array decl, not Array[*].
255f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer  int Array[*(int*)P+A];
265f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}
275f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
28aaf9ddbeab08a43203cf6b9ca4986c8c6fe6fdc6Chris Lattnertypedef int atype;
29aaf9ddbeab08a43203cf6b9ca4986c8c6fe6fdc6Chris Lattnerint test3(x,
30aaf9ddbeab08a43203cf6b9ca4986c8c6fe6fdc6Chris Lattner          atype         /* expected-error {{unexpected type name 'atype': expected identifier}} */
31aaf9ddbeab08a43203cf6b9ca4986c8c6fe6fdc6Chris Lattner         ) int x, atype; {}
325f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
333825c2eb00f108854942533a4993327889c081c3Chris Lattnerint test4(x, x) int x; {} /* expected-error {{redefinition of parameter 'x'}} */
343825c2eb00f108854942533a4993327889c081c3Chris Lattner
351f6f54be86a514d531ec231fd837858a43cfe72eChris Lattner
361f6f54be86a514d531ec231fd837858a43cfe72eChris Lattner// PR3031
371f6f54be86a514d531ec231fd837858a43cfe72eChris Lattnerint (test5), ;  // expected-error {{expected identifier or '('}}
381f6f54be86a514d531ec231fd837858a43cfe72eChris Lattner
39c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
40c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
41c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner// PR3963 & rdar://6759604 - test error recovery for mistyped "typenames".
42c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
43c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerstruct xyz { int y; };
44c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
45c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerfoo_t a = 4;   // expected-error {{unknown type name 'foo_t'}}
46c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerxyz b;         // expected-error {{unknown type name 'xyz'}}
47c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
48c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerfoo_t *d;      // expected-error {{unknown type name 'foo_t'}}
49c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
50c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerstatic f;      // expected-warning {{type specifier missing, defaults to 'int'}}
51c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerstatic g = 4;  // expected-warning {{type specifier missing, defaults to 'int'}}
52c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerstatic h        // expected-warning {{type specifier missing, defaults to 'int'}}
53c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner      __asm__("foo"); // expected-warning {{extension used}}
54c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattner
55c199ab3ea1381e8e9cdd720eb87bb4f65cdf5086Chris Lattnerint bar() { return a; }
56