Objective-C/C++ : Handle parsing @property 'class' attribute.
authorIain Sandoe <iain@sandoe.co.uk>
Wed, 4 Nov 2020 23:52:12 +0000 (23:52 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Sun, 8 Nov 2020 09:38:38 +0000 (09:38 +0000)
commitb642fca1c31b2e2175e0860daf32b4ee0d918085
tree9fe0006f6338261f7e93d465a09686a2010e0119
parent49393e266a2570cb6227777acd4674f922c8a26b
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.
gcc/c-family/c-common.h
gcc/c-family/c-objc.h
gcc/cp/parser.c
gcc/objc/objc-act.c
gcc/objc/objc-act.h
gcc/testsuite/obj-c++.dg/property/at-property-4.mm
gcc/testsuite/objc.dg/property/at-property-4.m