From 2a613cffb13f4dbb2b2af79645573e526d3224c8 Mon Sep 17 00:00:00 2001
From: Nicola Pero <nicola.pero@meta-innovation.com>
Date: Mon, 18 Oct 2010 23:32:10 +0000
Subject: [PATCH] In gcc/testsuite/: 2010-10-18 Nicola Pero
 <nicola.pero@meta-innovation.com>

In gcc/testsuite/:
2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>

        Merge from 'apple/trunk' branch on FSF servers.

        2006-03-16 Fariborz Jahanian <fjahanian@apple.com>

        Radar 4293709
        * objc.dg/proto-init-mimatch-1.m: New.
        * obj-c++.dg/proto-init-mimatch-1.mm: New.

From-SVN: r165668
---
 gcc/testsuite/ChangeLog                       | 10 ++++++
 .../obj-c++.dg/proto-init-mimatch-1.mm        | 35 +++++++++++++++++++
 gcc/testsuite/objc.dg/proto-init-mimatch-1.m  | 35 +++++++++++++++++++
 3 files changed, 80 insertions(+)
 create mode 100644 gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm
 create mode 100644 gcc/testsuite/objc.dg/proto-init-mimatch-1.m

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2c64ae9beda9..5cdd7d3cf491 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
+	
+	Merge from 'apple/trunk' branch on FSF servers.
+
+	2006-03-16 Fariborz Jahanian <fjahanian@apple.com>
+
+        Radar 4293709
+	* objc.dg/proto-init-mimatch-1.m: New.
+	* obj-c++.dg/proto-init-mimatch-1.mm: New.
+
 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
 
 	Implemented parsing @synthesize and @dynamic for
diff --git a/gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm b/gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm
new file mode 100644
index 000000000000..64e52e812626
--- /dev/null
+++ b/gcc/testsuite/obj-c++.dg/proto-init-mimatch-1.mm
@@ -0,0 +1,35 @@
+/* Test to warn on protocol mismatch in a variety of initializations. */
+
+/* { dg-do compile } */
+
+typedef struct objc_class *Class;
+
+typedef struct objc_object {
+        Class isa;
+} *id;
+
+@protocol NSObject
+@end
+
+@interface NSObject <NSObject> 
+@end
+
+@protocol NSCopying
+- (void)copyWithZone;
+@end
+
+@interface Foo:NSObject <NSCopying> 
+@end
+
+
+extern id <NSObject> NSCopyObject();
+
+@implementation Foo
+- (void)copyWithZone {
+    Foo *copy = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */
+
+    Foo<NSObject,NSCopying> *g = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */
+
+    id<NSObject,NSCopying> h = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */
+}
+@end	
diff --git a/gcc/testsuite/objc.dg/proto-init-mimatch-1.m b/gcc/testsuite/objc.dg/proto-init-mimatch-1.m
new file mode 100644
index 000000000000..64e52e812626
--- /dev/null
+++ b/gcc/testsuite/objc.dg/proto-init-mimatch-1.m
@@ -0,0 +1,35 @@
+/* Test to warn on protocol mismatch in a variety of initializations. */
+
+/* { dg-do compile } */
+
+typedef struct objc_class *Class;
+
+typedef struct objc_object {
+        Class isa;
+} *id;
+
+@protocol NSObject
+@end
+
+@interface NSObject <NSObject> 
+@end
+
+@protocol NSCopying
+- (void)copyWithZone;
+@end
+
+@interface Foo:NSObject <NSCopying> 
+@end
+
+
+extern id <NSObject> NSCopyObject();
+
+@implementation Foo
+- (void)copyWithZone {
+    Foo *copy = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */
+
+    Foo<NSObject,NSCopying> *g = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */
+
+    id<NSObject,NSCopying> h = NSCopyObject(); /* { dg-warning "type \\'id <NSObject>\\' does not conform to the \\'NSCopying\\' protocol" } */
+}
+@end	
-- 
GitLab