summaryrefslogtreecommitdiff
path: root/gcc/testsuite/obj-c++.dg/method-8.mm
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/obj-c++.dg/method-8.mm')
-rw-r--r--gcc/testsuite/obj-c++.dg/method-8.mm30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/obj-c++.dg/method-8.mm b/gcc/testsuite/obj-c++.dg/method-8.mm
new file mode 100644
index 000000000..9857c63ff
--- /dev/null
+++ b/gcc/testsuite/obj-c++.dg/method-8.mm
@@ -0,0 +1,30 @@
+/* Tests of duplication. */
+/* { dg-do compile } */
+
+@interface class1
+- (int) meth1; /* { dg-message "previous declaration" } */
+- (void) meth1; /* { dg-error "duplicate declaration of method .\\-meth1." } */
+@end
+
+@interface class2
++ (void) meth1; /* { dg-message "previous declaration" } */
++ (int) meth1; /* { dg-error "duplicate declaration of method .\\+meth1." } */
+@end
+
+@interface class3
+- (int) meth1;
+@end
+
+@implementation class3
+- (int) meth1 { return 0; } /* { dg-error "previously defined here" } */
+- (int) meth1 { return 0; } /* { dg-error "redefinition of" } */
+@end
+
+@interface class4
++ (void) meth1;
+@end
+
+@implementation class4
++ (void) meth1 {} /* { dg-error "previously defined here" } */
++ (void) meth1 {} /* { dg-error "redefinition of" } */
+@end