Skip to content
Snippets Groups Projects
Commit 5e28fca0 authored by Iain Sandoe's avatar Iain Sandoe
Browse files

C-Family, Objective-C : Implement Objective-C nullability Part 1[PR90707].

This part of the implementation covers property nullability attributes
and includes the changes to common code. Follow-on changes will be needed
to cover Objective-C method definitions, but those are expected to be
local to the Objective-C front end.

The basis of the implementation is to translate the Objective-C-specific
keywords into an attribute (objc_nullability) which has the required
states to carry the attribute markup.

We introduce the keywords, and these are parsed and validated in the same
manner as other property attributes.  The resulting value is attached to
the property as an objc_nullability attribute.

gcc/c-family/ChangeLog:

	PR objc/90707
	* c-common.c (c_common_reswords): null_unspecified, nullable,
	nonnull, null_resettable: New keywords.
	* c-common.h (enum rid): RID_NULL_UNSPECIFIED, RID_NULLABLE,
	RID_NONNULL, RID_NULL_RESETTABLE: New.
	(OBJC_IS_PATTR_KEYWORD): Include nullability keywords in the
	ranges accepted for property attributes.
	* c-attribs.c (handle_objc_nullability_attribute): New.
	* c-objc.h (enum objc_property_attribute_group): Add
	OBJC_PROPATTR_GROUP_NULLABLE.
	(enum objc_property_attribute_kind):Add
	OBJC_PROPERTY_ATTR_NULL_UNSPECIFIED, OBJC_PROPERTY_ATTR_NULLABLE,
	OBJC_PROPERTY_ATTR_NONNULL, OBJC_PROPERTY_ATTR_NULL_RESETTABLE.

gcc/objc/ChangeLog:

	PR objc/90707
	* objc-act.c (objc_prop_attr_kind_for_rid): Handle nullability.
	(objc_add_property_declaration): Handle nullability attributes.
	Check that these are applicable to the property type.
	* objc-act.h (enum objc_property_nullability): New.

gcc/testsuite/ChangeLog:

	PR objc/90707
	* obj-c++.dg/property/at-property-4.mm: Add basic nullability
	tests.
	* objc.dg/property/at-property-4.m: Likewise.
	* obj-c++.dg/attributes/nullability-00.mm: New test.
	* obj-c++.dg/property/nullability-00.mm: New test.
	* objc.dg/attributes/nullability-00.m: New test.
	* objc.dg/property/nullability-00.m: New test.

gcc/ChangeLog:

	PR objc/90707
	* doc/extend.texi: Document the objc_nullability attribute.
parent 64f191b1
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment