1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 %s -fsyntax-only -verify
29a11b9abb9daa9d7c02e13bb4d62caaadb22477dChris Lattner
39a11b9abb9daa9d7c02e13bb4d62caaadb22477dChris Lattnervoid test() {
41f6f54be86a514d531ec231fd837858a43cfe72eChris Lattner    char = 4;  // expected-error {{expected identifier}}
59a11b9abb9daa9d7c02e13bb4d62caaadb22477dChris Lattner}
69a11b9abb9daa9d7c02e13bb4d62caaadb22477dChris Lattner
79a11b9abb9daa9d7c02e13bb4d62caaadb22477dChris Lattner
88389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner// PR2400
958408bc4ead86b08af56cd06fc966fd858b48b2dDouglas Gregortypedef xtype (*x)(void* handle); // expected-error {{function cannot return function type}} expected-warning {{type specifier missing, defaults to 'int'}} expected-warning {{type specifier missing, defaults to 'int'}}
10eaaebc7cf10dc1a2016183a262ad3256bc468759Chris Lattner
11eaaebc7cf10dc1a2016183a262ad3256bc468759Chris Lattnertypedef void ytype();
12eaaebc7cf10dc1a2016183a262ad3256bc468759Chris Lattner
138389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner
148389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattnertypedef struct _zend_module_entry zend_module_entry;
158389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattnerstruct _zend_module_entry {
16eaaebc7cf10dc1a2016183a262ad3256bc468759Chris Lattner    ytype globals_size; // expected-error {{field 'globals_size' declared as a function}}
178389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner};
188389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner
198389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattnerzend_module_entry openssl_module_entry = {
208389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner    sizeof(zend_module_entry)
218389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner};
228389eab190afef3462f6418b8d8fb70fb01c4005Chris Lattner
2306808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman// <rdar://problem/11067144>
2406808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedmantypedef int (FunctionType)(int *value);
2506808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedmantypedef struct {
2606808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman  UndefinedType undef; // expected-error {{unknown type name 'UndefinedType'}}
2706808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman  FunctionType fun; // expected-error {{field 'fun' declared as a function}}
2806808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman} StructType;
2906808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedmanvoid f(StructType *buf) {
3006808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman  buf->fun = 0;
3106808f1b880f461c396450db4c6a9c6d6c6c2efcEli Friedman}
3237c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanian
3337c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanian// rdar://11743706
3437c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanianstatic void bar(hid_t, char); // expected-error {{expected identifier}}
3537c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanian
3637c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanianstatic void bar(hid_t p, char); // expected-error {{unknown type name 'hid_t'}}
3737c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanian
3837c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanianvoid foo() {
3937c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanian  (void)bar;
4037c765a5ccf69fb9a467c8499675ae568811afe3Fariborz Jahanian}
41d5668a2447c2afeea38815b51a80a5a6ac235599Argyrios Kyrtzidis
42d5668a2447c2afeea38815b51a80a5a6ac235599Argyrios Kyrtzidisvoid test2();
43d5668a2447c2afeea38815b51a80a5a6ac235599Argyrios Kyrtzidisvoid test2(undef); // expected-error {{a parameter list without types is only allowed in a function definition}}
44d5668a2447c2afeea38815b51a80a5a6ac235599Argyrios Kyrtzidisvoid test2() { }
45745af1c348191bf31cfcd3ae61443a0321ec2d75Argyrios Kyrtzidis
46745af1c348191bf31cfcd3ae61443a0321ec2d75Argyrios Kyrtzidisvoid test3();
47745af1c348191bf31cfcd3ae61443a0321ec2d75Argyrios Kyrtzidisvoid test3; // expected-error {{incomplete type}}
48745af1c348191bf31cfcd3ae61443a0321ec2d75Argyrios Kyrtzidisvoid test3() { }
496bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines
506bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid ellipsis1(...); // expected-error {{ISO C requires a named parameter before '...'}}
51