aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-family/c-common.h
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2020-11-04 23:52:12 +0000
committerIain Sandoe <iain@sandoe.co.uk>2020-11-08 09:38:38 +0000
commitb642fca1c31b2e2175e0860daf32b4ee0d918085 (patch)
tree9fe0006f6338261f7e93d465a09686a2010e0119 /gcc/c-family/c-common.h
parent49393e266a2570cb6227777acd4674f922c8a26b (diff)
downloadgcc-b642fca1c31b2e2175e0860daf32b4ee0d918085.zip
gcc-b642fca1c31b2e2175e0860daf32b4ee0d918085.tar.gz
gcc-b642fca1c31b2e2175e0860daf32b4ee0d918085.tar.bz2
Objective-C/C++ : Handle parsing @property 'class' attribute.
This attribute states that a property is one manipulated by class methods (it requires a static variable and the setter and getter must be provided explicitly, they cannot be @synthesized). gcc/c-family/ChangeLog: * c-common.h (OBJC_IS_PATTR_KEYWORD): Add class to the list of keywords accepted in @property attribute contexts. * c-objc.h (enum objc_property_attribute_group): Add OBJC_PROPATTR_GROUP_CLASS. (enum objc_property_attribute_kind): Add OBJC_PROPERTY_ATTR_CLASS. gcc/cp/ChangeLog: * parser.c (cp_parser_objc_at_property_declaration): Handle class keywords in @property attribute context. gcc/objc/ChangeLog: * objc-act.c (objc_prop_attr_kind_for_rid): Handle class attribute. (objc_add_property_declaration): Likewise. * objc-act.h (PROPERTY_CLASS): Record class attribute state. gcc/testsuite/ChangeLog: * obj-c++.dg/property/at-property-4.mm: Test handling class attributes. * objc.dg/property/at-property-4.m: Likewise.
Diffstat (limited to 'gcc/c-family/c-common.h')
-rw-r--r--gcc/c-family/c-common.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 7e2cd53..bfcc279 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -275,9 +275,11 @@ enum rid
((unsigned int) (rid) >= (unsigned int) RID_FIRST_PQ && \
(unsigned int) (rid) <= (unsigned int) RID_LAST_PQ)
+/* Keywords permitted in an @property attribute context. */
#define OBJC_IS_PATTR_KEYWORD(rid) \
- ((unsigned int) (rid) >= (unsigned int) RID_FIRST_PATTR && \
- (unsigned int) (rid) <= (unsigned int) RID_LAST_PATTR)
+ ((((unsigned int) (rid) >= (unsigned int) RID_FIRST_PATTR && \
+ (unsigned int) (rid) <= (unsigned int) RID_LAST_PATTR)) \
+ || rid == RID_CLASS)
/* OBJC_IS_CXX_KEYWORD recognizes the 'CXX_OBJC' keywords (such as
'class') which are shared in a subtle way between Objective-C and