summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-02-23 22:00:08 +0000
committerChris Lattner <sabre@nondot.org>2009-02-23 22:00:08 +0000
commitd13b8b55caaaf968b735bf82e49047d45e73c50b (patch)
tree4c0aa626af7427d6122e405976dc07bb047b2399 /clang/test
parent12bbe9e144ac48f8c6c7fa59fbe90086dffa05a4 (diff)
downloadbcm5719-llvm-d13b8b55caaaf968b735bf82e49047d45e73c50b.tar.gz
bcm5719-llvm-d13b8b55caaaf968b735bf82e49047d45e73c50b.zip
fix rdar://6611778, a redefinition of an interface was causing an
assertion when the ivars and method list was reset into the existing interface. To fix this, mark decls as invalid when they are redefined, and don't insert ivars/methods into invalid decls. llvm-svn: 65340
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Sema/anonymous-struct-union.c3
-rw-r--r--clang/test/Sema/nested-redef.c3
-rw-r--r--clang/test/SemaObjC/interface-1.m10
-rw-r--r--clang/test/SemaObjC/ivar-sem-check-1.m3
4 files changed, 15 insertions, 4 deletions
diff --git a/clang/test/Sema/anonymous-struct-union.c b/clang/test/Sema/anonymous-struct-union.c
index 72790c9abb4..b288f6278a3 100644
--- a/clang/test/Sema/anonymous-struct-union.c
+++ b/clang/test/Sema/anonymous-struct-union.c
@@ -47,8 +47,7 @@ struct Redecl {
};
int z; // expected-error{{duplicate member 'z'}}
- void zz(); // expected-error{{duplicate member 'zz'}} \
- // expected-error{{field 'zz' declared as a function}}
+ void zz(); // expected-error{{duplicate member 'zz'}}
};
union { // expected-error{{anonymous unions must be struct or union members}}
diff --git a/clang/test/Sema/nested-redef.c b/clang/test/Sema/nested-redef.c
index 83cd4209675..b0b12805e68 100644
--- a/clang/test/Sema/nested-redef.c
+++ b/clang/test/Sema/nested-redef.c
@@ -1,6 +1,7 @@
// RUN: clang -fsyntax-only -verify %s
struct X { // expected-note{{previous definition is here}}
- struct X { } x; // expected-error{{nested redefinition of 'X'}}
+ struct X { } x; // expected-error{{nested redefinition of 'X'}} \
+ expected-error {{field has incomplete type}}
};
struct Y { };
diff --git a/clang/test/SemaObjC/interface-1.m b/clang/test/SemaObjC/interface-1.m
index ea770505054..b974b39a3a8 100644
--- a/clang/test/SemaObjC/interface-1.m
+++ b/clang/test/SemaObjC/interface-1.m
@@ -25,3 +25,13 @@ void test2() {
++c;
}
+
+// rdar://6611778
+@interface FOO // expected-note {{previous definition is here}}
+- (void)method;
+@end
+
+@interface FOO // expected-error {{duplicate interface definition for class 'FOO'}}
+- (void)method2;
+@end
+
diff --git a/clang/test/SemaObjC/ivar-sem-check-1.m b/clang/test/SemaObjC/ivar-sem-check-1.m
index 1ec4e57ce84..1833a0f457b 100644
--- a/clang/test/SemaObjC/ivar-sem-check-1.m
+++ b/clang/test/SemaObjC/ivar-sem-check-1.m
@@ -9,7 +9,8 @@ typedef int FOO();
int arr[]; // expected-error {{field has incomplete type}}
struct S IC; // expected-error {{field has incomplete type}}
struct T { // expected-note {{previous definition is here}}
- struct T {} X; // expected-error {{nested redefinition of 'T'}}
+ struct T {} X; // expected-error {{nested redefinition of 'T'}} \
+ expected-error {{field has incomplete type}}
}YYY;
FOO BADFUNC; // expected-error {{field 'BADFUNC' declared as a function}}
int kaka; // expected-note {{previous declaration is here}}
OpenPOWER on IntegriCloud