diff options
author | Nicola Pero <nicola@gcc.gnu.org> | 2010-12-30 08:59:29 +0000 |
---|---|---|
committer | Nicola Pero <nicola@gcc.gnu.org> | 2010-12-30 08:59:29 +0000 |
commit | fd3ce292ae5796e7da960d332d50e34b6ab0fe91 (patch) | |
tree | 4d9b2cd60bffdd427dbbe13e6d69e05e66c25ae2 /gcc | |
parent | 87ebde38c04dcb4511e6081e916a6c910ae39e8d (diff) | |
download | gcc-fd3ce292ae5796e7da960d332d50e34b6ab0fe91.tar.gz |
In gcc/objc/: 2010-12-30 Nicola Pero <nicola@nicola.brainstorm.co.uk>
In gcc/objc/:
2010-12-30 Nicola Pero <nicola@nicola.brainstorm.co.uk>
* objc-act.c (start_class): Warn when a class attribute is
ignored.
(objc_declare_protocols): Warn when a protocol attribute in a
protocol forward-declaration is ignored.
(start_protocol): Warn when a protocol attribute is ignored.
In gcc/testsuite/:
2010-12-30 Nicola Pero <nicola.pero@meta-innovation.com>
* objc.dg/attributes/class-attribute-3.m: New.
* objc.dg/attributes/proto-attribute-4.m: New.
* obj-c++.dg/attributes/class-attribute-3.mm: New.
* obj-c++.dg/attributes/proto-attribute-4.mm: New.
From-SVN: r168337
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/objc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/objc/objc-act.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm | 14 | ||||
-rw-r--r-- | gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm | 31 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/attributes/class-attribute-3.m | 14 | ||||
-rw-r--r-- | gcc/testsuite/objc.dg/attributes/proto-attribute-4.m | 31 |
7 files changed, 111 insertions, 0 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 562081b9876..b717a946d05 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,11 @@ +2010-12-30 Nicola Pero <nicola@nicola.brainstorm.co.uk> + + * objc-act.c (start_class): Warn when a class attribute is + ignored. + (objc_declare_protocols): Warn when a protocol attribute in a + protocol forward-declaration is ignored. + (start_protocol): Warn when a protocol attribute is ignored. + 2010-12-30 Nicola Pero <nicola.pero@meta-innovation.com> * objc-act.c (objc_set_method_opt): Tidy up error messages. In diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index bc959d6060b..a0a7a095eb4 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -9722,6 +9722,8 @@ start_class (enum tree_code code, tree class_name, tree super_name, if (is_attribute_p ("deprecated", name)) TREE_DEPRECATED (klass) = 1; + else + warning (OPT_Wattributes, "%qE attribute directive ignored", name); } TYPE_ATTRIBUTES (klass) = attributes; } @@ -10924,6 +10926,8 @@ objc_declare_protocols (tree names, tree attributes) if (is_attribute_p ("deprecated", name)) deprecated = true; + else + warning (OPT_Wattributes, "%qE attribute directive ignored", name); } } @@ -10977,6 +10981,8 @@ start_protocol (enum tree_code code, tree name, tree list, tree attributes) if (is_attribute_p ("deprecated", name)) deprecated = true; + else + warning (OPT_Wattributes, "%qE attribute directive ignored", name); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 43b5afb6c39..7dd36f1b9b0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2010-12-30 Nicola Pero <nicola.pero@meta-innovation.com> + + * objc.dg/attributes/class-attribute-3.m: New. + * objc.dg/attributes/proto-attribute-4.m: New. + * obj-c++.dg/attributes/class-attribute-3.mm: New. + * obj-c++.dg/attributes/proto-attribute-4.mm: New. + 2010-12-30 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/47060 diff --git a/gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm b/gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm new file mode 100644 index 00000000000..f96500de4dc --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/attributes/class-attribute-3.mm @@ -0,0 +1,14 @@ +/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ +/* { dg-do compile } */ + +/* Test that you get a warning when an unknown class attribute is ignored. */ + +#include <objc/objc.h> + +__attribute__ ((unknown_attribute)) +@interface MyClass /* { dg-warning "ignored" } */ +{ + Class isa; +} ++ (id) new; +@end diff --git a/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm b/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm new file mode 100644 index 00000000000..d2e5f28a1b4 --- /dev/null +++ b/gcc/testsuite/obj-c++.dg/attributes/proto-attribute-4.mm @@ -0,0 +1,31 @@ +/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ +/* { dg-do compile } */ + +/* Test that you get a warning when an unknown protocol attribute is ignored. */ + +#include <objc/objc.h> + +__attribute__ ((unknown_attribute)) +@protocol MyProtocol /* { dg-warning "ignored" } */ +- (id) new; +@end + +__attribute__ ((unknown_attribute)) +@protocol MyProtocol2; /* { dg-warning "ignored" } */ + +/* Use the protocols to double-check that no more warnings are + generated. */ + +@interface MyClass <MyProtocol> +@end + +int test (id <MyProtocol2> x) +{ + if (@protocol (MyProtocol) == @protocol (MyProtocol2)) + return 1; + + if (x) + return 2; + + return 3; +} diff --git a/gcc/testsuite/objc.dg/attributes/class-attribute-3.m b/gcc/testsuite/objc.dg/attributes/class-attribute-3.m new file mode 100644 index 00000000000..6cc5d4e2681 --- /dev/null +++ b/gcc/testsuite/objc.dg/attributes/class-attribute-3.m @@ -0,0 +1,14 @@ +/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ +/* { dg-do compile } */ + +/* Test that you get a warning when an unknown class attribute is ignored. */ + +#include <objc/objc.h> + +__attribute__ ((unknown_attribute)) +@interface MyClass +{ /* { dg-warning "ignored" } */ + Class isa; +} ++ (id) new; +@end diff --git a/gcc/testsuite/objc.dg/attributes/proto-attribute-4.m b/gcc/testsuite/objc.dg/attributes/proto-attribute-4.m new file mode 100644 index 00000000000..226fd68b3f2 --- /dev/null +++ b/gcc/testsuite/objc.dg/attributes/proto-attribute-4.m @@ -0,0 +1,31 @@ +/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010. */ +/* { dg-do compile } */ + +/* Test that you get a warning when an unknown protocol attribute is ignored. */ + +#include <objc/objc.h> + +__attribute__ ((unknown_attribute)) +@protocol MyProtocol +- (id) new; /* { dg-warning "ignored" } */ +@end + +__attribute__ ((unknown_attribute)) +@protocol MyProtocol2; /* { dg-warning "ignored" } */ + +/* Use the protocols to double-check that no more warnings are + generated. */ + +@interface MyClass <MyProtocol> +@end + +int test (id <MyProtocol2> x) +{ + if (@protocol (MyProtocol) == @protocol (MyProtocol2)) + return 1; + + if (x) + return 2; + + return 3; +} |