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