1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 %s -fsyntax-only -verify -pedantic 28ac2c66a1442985091c5ec2b33ce6d3df3bcb529Eli Friedman 38ac2c66a1442985091c5ec2b33ce6d3df3bcb529Eli Friedman// PR1892, PR11354 48ac2c66a1442985091c5ec2b33ce6d3df3bcb529Eli Friedmanvoid f(double a[restrict][5]) { __typeof(a) x = 10; } // expected-warning {{(aka 'double (*restrict)[5]')}} 5529bd02affa96a311dd9ab131f2ab4d833017fb7Chris Lattner 6ba03eda1599dd89da935a2b46da10659afe46addSteve Naroffint foo (__const char *__path); 7ba03eda1599dd89da935a2b46da10659afe46addSteve Naroffint foo(__const char *__restrict __file); 8ba03eda1599dd89da935a2b46da10659afe46addSteve Naroff 95f4a6829dc58cab2f76e2b98492859aa3b91e3f2Chris Lattnervoid func(const char*); // expected-note {{previous declaration is here}} 105f4a6829dc58cab2f76e2b98492859aa3b91e3f2Chris Lattnervoid func(char*); // expected-error{{conflicting types for 'func'}} 112565eeff7b0d2310fb2924ce96a54302b0dfa5afSteve Naroff 121adb88370beab45af2f065afe86b51ccd59ec50dChris Lattnervoid g(int (*)(const void **, const void **)); 131adb88370beab45af2f065afe86b51ccd59ec50dChris Lattnervoid g(int (*compar)()) { 141adb88370beab45af2f065afe86b51ccd59ec50dChris Lattner} 151adb88370beab45af2f065afe86b51ccd59ec50dChris Lattner 165f4a6829dc58cab2f76e2b98492859aa3b91e3f2Chris Lattnervoid h(); // expected-note {{previous declaration is here}} 175f4a6829dc58cab2f76e2b98492859aa3b91e3f2Chris Lattnervoid h (const char *fmt, ...) {} // expected-error{{conflicting types for 'h'}} 18868d08f9e97eb013600199594745b9997150be8fChris Lattner 19868d08f9e97eb013600199594745b9997150be8fChris Lattner// PR1965 20868d08f9e97eb013600199594745b9997150be8fChris Lattnerint t5(b); // expected-error {{parameter list without types}} 21d658b562e80d6ef7a1118e34ff12802c6e2fccedChris Lattnerint t6(int x, g); // expected-warning {{type specifier missing, defaults to 'int'}} 22868d08f9e97eb013600199594745b9997150be8fChris Lattner 2399d724f6a31b5521ded95adf10ef7f3c62a0b18eChris Lattnerint t7(, ); // expected-error {{expected parameter declarator}} expected-error {{expected parameter declarator}} 2499d724f6a31b5521ded95adf10ef7f3c62a0b18eChris Lattnerint t8(, int a); // expected-error {{expected parameter declarator}} 2599d724f6a31b5521ded95adf10ef7f3c62a0b18eChris Lattnerint t9(int a, ); // expected-error {{expected parameter declarator}} 26868d08f9e97eb013600199594745b9997150be8fChris Lattner 27868d08f9e97eb013600199594745b9997150be8fChris Lattner 285280408ab323a213ac63d5b557475ea5037aa553Chris Lattner// PR2042 295280408ab323a213ac63d5b557475ea5037aa553Chris Lattnervoid t10(){} 3074734d576b1dd082f623abb76ab204d69970dadbDouglas Gregorvoid t11(){t10(1);} // expected-warning{{too many arguments}} 315280408ab323a213ac63d5b557475ea5037aa553Chris Lattner 32777f07b6cd595bb0922e05768e5703fbc92b5695Chris Lattner// PR3208 33777f07b6cd595bb0922e05768e5703fbc92b5695Chris Lattnervoid t12(int) {} // expected-error{{parameter name omitted}} 34777f07b6cd595bb0922e05768e5703fbc92b5695Chris Lattner 3565ce04bef06696379682410f399f37b43996d824Chris Lattner// PR2790 3665ce04bef06696379682410f399f37b43996d824Chris Lattnervoid t13() { 37184aa4e6ded190bfb3bbe207040467f8d7e28a04Chris Lattner return 0; // expected-error {{void function 't13' should not return a value}} 3865ce04bef06696379682410f399f37b43996d824Chris Lattner} 3965ce04bef06696379682410f399f37b43996d824Chris Lattnerint t14() { 40184aa4e6ded190bfb3bbe207040467f8d7e28a04Chris Lattner return; // expected-error {{non-void function 't14' should return a value}} 4165ce04bef06696379682410f399f37b43996d824Chris Lattner} 42be109b3e768b70f9efb106d25d6b5a2c72c5a9b8Douglas Gregor 43be109b3e768b70f9efb106d25d6b5a2c72c5a9b8Douglas Gregor// <rdar://problem/6097326> 44be109b3e768b70f9efb106d25d6b5a2c72c5a9b8Douglas Gregory(y) { return y; } // expected-warning{{parameter 'y' was not declared, defaulting to type 'int'}} \ 45be109b3e768b70f9efb106d25d6b5a2c72c5a9b8Douglas Gregor // expected-warning{{type specifier missing, defaults to 'int'}} 460e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedman 470e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedman 4818d76c27176dcb9f4be4eaf7768100075f180f3fDouglas Gregor// PR3137, <rdar://problem/6127293> 490e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedmanextern int g0_3137(void); 500e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedmanvoid f0_3137() { 510e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedman int g0_3137(void); 520e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedman} 530e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedmanvoid f1_3137() { 540e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedman int (*fp)(void) = g0_3137; 550e8aaaf67b0c172e5a55cded30b80a83d3bd477fEli Friedman} 5604495c859f81e440748a9b86baa2913461652bb0Douglas Gregor 5704495c859f81e440748a9b86baa2913461652bb0Douglas Gregorvoid f1static() { 5804495c859f81e440748a9b86baa2913461652bb0Douglas Gregor static void f2static(int); // expected-error{{function declared in block scope cannot have 'static' storage class}} 5904495c859f81e440748a9b86baa2913461652bb0Douglas Gregor register void f2register(int); // expected-error{{illegal storage class on function}} 6004495c859f81e440748a9b86baa2913461652bb0Douglas Gregor} 617f0f5dce3adcfce88d5c9a0ad0146a33c01a1e8fEli Friedman 62e7450f5dbd5bed63b8ef9db86350a8fc3db011e8Douglas Gregorstruct incomplete_test a(void) {} // expected-error{{incomplete result type 'struct incomplete_test' in function definition}} \ 63e7450f5dbd5bed63b8ef9db86350a8fc3db011e8Douglas Gregor // expected-note{{forward declaration of 'struct incomplete_test'}} 64c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattner 65c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattner 66c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattnerextern __inline 67eb32fde032a250091134db56a3aeaea6b09f6594Eli Friedman__attribute__((__gnu_inline__)) 68c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattnervoid gnu_inline1() {} 69c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattner 70c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattnervoid 71eb32fde032a250091134db56a3aeaea6b09f6594Eli Friedman__attribute__((__gnu_inline__)) // expected-warning {{'gnu_inline' attribute requires function to be marked 'inline', attribute ignored}} 72c51974328b3a378c3c40b1fa527ecb928ed2bfdaChris Lattnergnu_inline2() {} 7323a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattner 7423a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattner 7523a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattner// rdar://6802350 7623a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattnerinline foo_t invalid_type() { // expected-error {{unknown type name 'foo_t'}} 7723a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattner} 7823a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattner 797cbeef278d6206941630ea14585ea80f44d68d69Chris Lattnertypedef void fn_t(void); 807cbeef278d6206941630ea14585ea80f44d68d69Chris Lattnerfn_t t17; 817cbeef278d6206941630ea14585ea80f44d68d69Chris Lattner 822dbd285f5033ca6dea25babfd1c43d9fec35e7e5Chris Lattner// PR4049 835153ee66d6d4fb37b02f85df38e48dc8b46660dfChris Lattnerunknown_type t18(void*) { // expected-error {{unknown type name 'unknown_type'}} expected-error{{parameter name omitted}} 845153ee66d6d4fb37b02f85df38e48dc8b46660dfChris Lattner} 855153ee66d6d4fb37b02f85df38e48dc8b46660dfChris Lattner 865153ee66d6d4fb37b02f85df38e48dc8b46660dfChris Lattnerunknown_type t19(int* P) { // expected-error {{unknown type name 'unknown_type'}} 875153ee66d6d4fb37b02f85df38e48dc8b46660dfChris Lattner P = P+1; // no warning. 882dbd285f5033ca6dea25babfd1c43d9fec35e7e5Chris Lattner} 8923a48cc69e7ed4f219996a8864cb7d3f24f1157fChris Lattner 90ed5d651b0d4b99d0b68bb8d4633e49b98c95bd8fDouglas Gregor// missing ',' before '...' 91ed5d651b0d4b99d0b68bb8d4633e49b98c95bd8fDouglas Gregorvoid t20(int i...) { } // expected-error {{requires a comma}} 92117c45666c99f1797c708767d7c0ccaa7902ec42Douglas Gregor 93117c45666c99f1797c708767d7c0ccaa7902ec42Douglas Gregorint n; 94117c45666c99f1797c708767d7c0ccaa7902ec42Douglas Gregorvoid t21(int n, int (*array)[n]); 95