diff options
Diffstat (limited to 'gcc/testsuite/obj-c++.dg/duplicate-class-1.mm')
-rw-r--r-- | gcc/testsuite/obj-c++.dg/duplicate-class-1.mm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/testsuite/obj-c++.dg/duplicate-class-1.mm b/gcc/testsuite/obj-c++.dg/duplicate-class-1.mm new file mode 100644 index 000000000..9476533d1 --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/duplicate-class-1.mm @@ -0,0 +1,31 @@ +/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ +/* { dg-do compile } */ + +/* Test that a duplicated @implementation for the same class does not + crash the compiler. */ + +@interface Test +{ + Class isa; +} +- (int) test; +@end + +@implementation Test +- (int) test +{ + return 4; +} +@end + +/* The most likely cause is that the programmer meant this to be a + category, so check what happens if we have some different methods + in there. */ +@implementation Test /* { dg-error "reimplementation of class .Test." } */ +- (int) test2 +{ + return [self test]; +} +@end +/* { dg-warning "incomplete implementation" "" { target *-*-* } 29 } */ +/* { dg-warning "not found" "" { target *-*-* } 29 } */ |