diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2008-02-15 06:03:44 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2008-02-15 06:03:44 +0000 |
commit | a01cfa75eb31c91f4f4ecb668add350eccd143fb (patch) | |
tree | cc0ba992043586a40fc585c5f8d4c8e2c03c585f /clang/test/Sema/struct-compat.c | |
parent | 4490ef5b07870f879d36c6a99b4075703835100a (diff) | |
download | bcm5719-llvm-a01cfa75eb31c91f4f4ecb668add350eccd143fb.tar.gz bcm5719-llvm-a01cfa75eb31c91f4f4ecb668add350eccd143fb.zip |
Partial fix for struct compatibility; there's still something messy
going on with mixing scopes, though.
llvm-svn: 47152
Diffstat (limited to 'clang/test/Sema/struct-compat.c')
-rw-r--r-- | clang/test/Sema/struct-compat.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/test/Sema/struct-compat.c b/clang/test/Sema/struct-compat.c new file mode 100644 index 00000000000..d63f9cd97c4 --- /dev/null +++ b/clang/test/Sema/struct-compat.c @@ -0,0 +1,19 @@ +/* RUN: clang %s -fsyntax-only -pedantic -verify + */ + +extern struct {int a;} x; // expected-error{{previous definition is here}} +extern struct {int a;} x; // expected-error{{redefinition of 'x'}} + +struct x; +int a(struct x* b) { +// FIXME: This test currently fails +// Per C99 6.7.2.3, since the outer and inner "struct x"es have different +// scopes, they don't refer to the same type, and are therefore incompatible +struct x {int a;} *c = b; +} + +struct x {int a;} r; +int b() { +// FIXME: This test currently also fails +struct x {char x;} s = r; +} |