2009-12-15 23:14:24 +03:00
// RUN: %clang_cc1 -fsyntax-only -verify %s
2009-02-02 18:00:55 +03:00
// PR3459
struct bar {
2009-09-09 19:08:12 +04:00
char n [ 1 ] ;
2009-02-02 18:00:55 +03:00
} ;
struct foo {
2009-09-09 19:08:12 +04:00
char name [ ( int ) & ( ( struct bar * ) 0 ) - > n ] ;
char name2 [ ( int ) & ( ( struct bar * ) 0 ) - > n - 1 ] ; //expected-error{{array size is negative}}
2009-02-02 18:00:55 +03:00
} ;
2009-02-03 03:34:39 +03:00
// PR3430
struct s {
2009-09-09 19:08:12 +04:00
struct st {
int v ;
} * ts ;
2009-02-03 03:34:39 +03:00
} ;
struct st ;
int foo ( ) {
2009-09-09 19:08:12 +04:00
struct st * f ;
return f - > v + f [ 0 ] . v ;
2009-02-03 03:34:39 +03:00
}
2009-02-22 03:20:44 +03:00
2009-03-07 02:41:27 +03:00
// PR3642, PR3671
2009-02-22 03:20:44 +03:00
struct pppoe_tag {
short tag_type ;
char tag_data [ ] ;
} ;
struct datatag {
2009-09-09 19:08:12 +04:00
struct pppoe_tag hdr ; //expected-warning{{field 'hdr' with variable sized type 'struct pppoe_tag' not at the end of a struct or class is a GNU extension}}
char data ;
2009-02-22 03:20:44 +03:00
} ;
2009-04-29 09:12:23 +04:00
// PR4092
struct s0 {
char a ; // expected-note {{previous declaration is here}}
char a ; // expected-error {{duplicate member 'a'}}
} ;
struct s0 f0 ( void ) { }
2010-07-12 21:35:39 +04:00
// <rdar://problem/8177927> - This previously triggered an assertion failure.
struct x0 {
unsigned int x1 ;
} ;
2011-03-23 02:00:04 +03:00
// rdar://problem/9150338
static struct test1 { // expected-warning {{'static' ignored on this declaration}}
int x ;
} ;
const struct test2 { // expected-warning {{'const' ignored on this declaration}}
int x ;
} ;
inline struct test3 { // expected-warning {{'inline' ignored on this declaration}}
int x ;
} ;