aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Ayers <ayers@fsfe.org>2009-04-02 21:46:00 +0000
committerDavid Ayers <ayers@gcc.gnu.org>2009-04-02 21:46:00 +0000
commit608f7b2ec681eb2fd5f178a8e3042598e7c2c615 (patch)
tree601f65ef6fb8114b0ad4977e3a4e461b0984fcf4 /gcc
parentaa1ca044b55fdca2b9c38728b512357f7ebc966b (diff)
downloadgcc-608f7b2ec681eb2fd5f178a8e3042598e7c2c615.zip
gcc-608f7b2ec681eb2fd5f178a8e3042598e7c2c615.tar.gz
gcc-608f7b2ec681eb2fd5f178a8e3042598e7c2c615.tar.bz2
re PR objc/18456 (ICE compiling Objective C code with protocol-qualified objects)
2009-04-02 David Ayers <ayers@fsfe.org> PR objc/18456 * objc.dg/bad-receiver-type-2.m: New test contributed by Alexander Mamberg. From-SVN: r145478
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/objc.dg/bad-receiver-type-2.m41
2 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4d1e325..e1265cf 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-02 David Ayers <ayers@fsfe.org>
+
+ PR objc/18456
+ * objc.dg/bad-receiver-type-2.m: New test contributed by
+ Alexander Mamberg.
+
2009-04-02 Jason Merrill <jason@redhat.com>
PR c++/25185
diff --git a/gcc/testsuite/objc.dg/bad-receiver-type-2.m b/gcc/testsuite/objc.dg/bad-receiver-type-2.m
new file mode 100644
index 0000000..eca8400
--- /dev/null
+++ b/gcc/testsuite/objc.dg/bad-receiver-type-2.m
@@ -0,0 +1,41 @@
+/* { dg-do compile } */
+/* Contributed by Alexander Malmberg: PR18456 */
+
+@interface Foo
+-(void) foo;
+@end
+
+void *ip;
+
+void (*func1)(void);
+
+struct
+{
+ int a:2;
+} struct1,struct2[2];
+
+union
+{
+ int a:2;
+} union1,union2[2];
+
+Foo **f;
+
+int main(int argc,char **argv)
+{
+ [(struct {int a;} *)ip foo]; /* { dg-warning "invalid receiver type" } */
+ [func1 foo]; /* { dg-warning "invalid receiver type" } */
+ [struct1.a foo]; /* { dg-warning "invalid receiver type" } */
+ /* { dg-warning "cast to pointer from integer" "" { target *-*-* } 28 } */
+ [union1.a foo]; /* { dg-warning "invalid receiver type" } */
+ /* { dg-warning "cast to pointer from integer" "" { target *-*-* } 30 } */
+ [struct1 foo]; /* { dg-warning "invalid receiver type" } */
+ /* { dg-error "cannot convert" "" { target *-*-* } 32 } */
+ [union1 foo]; /* { dg-warning "invalid receiver type" } */
+ /* { dg-error "cannot convert" "" { target *-*-* } 34 } */
+ [struct2 foo]; /* { dg-warning "invalid receiver type" } */
+ /* { dg-error "cannot convert" "" { target *-*-* } 36 } */
+ [union2 foo]; /* { dg-warning "invalid receiver type" } */
+ /* { dg-error "cannot convert" "" { target *-*-* } 38 } */
+ [f foo]; /* { dg-warning "invalid receiver type" } */
+}