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
This commit is contained in:
Nicola Pero 2010-12-30 08:59:29 +00:00
parent 87ebde38c0
commit fd3ce292ae
7 changed files with 111 additions and 0 deletions

View File

@ -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

View File

@ -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);
}
}

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}