@@ -145,14 +145,21 @@ The following changes are permitted:
145145 body, not the labels that are part of the function's full name).
146146- Reordering generic requirements (but not the generic parameters themselves).
147147- Adding a default argument expression to a parameter.
148- - Changing or removing a default argument is a `binary-compatible
149- source-breaking change `.
148+ - Adding, changing, reordering, or removing property wrappers that either are
149+ implementation-detail or belong in a composition leading with an
150+ implementation-detail wrapper.
151+ - Changing or removing a default argument is a `binary-compatible source-breaking change `.
152+ - Adding, changing, or removing arguments in the property-wrapper custom attribute
153+ of an API-level wrapper or in the custom attributes of API-leading compositions
154+ is a `binary-compatible source-breaking change `.
150155- Adding or removing the ``@discardableResult `` and ``@warn_unqualified_access ``
151156 attributes.
152157
153158No other changes are permitted; the following are particularly of note:
154159
155160- An ABI-public function may not change its parameters or return type.
161+ - An ABI-public function may not in any way change API-level property
162+ wrappers or compositions leading with such wrappers.
156163- An ABI-public function may not change its generic requirements.
157164- An ABI-public function may not change its external parameter names (labels).
158165- An ABI-public function may not add, remove, or reorder parameters, whether or
@@ -413,8 +420,14 @@ stored subscripts. This means that the following changes are permitted:
413420 accessor bodies, not the labels that are part of the subscript's full name).
414421- Reordering generic requirements (but not the generic parameters themselves).
415422- Adding a default argument expression to an index parameter.
423+ - Adding, changing, reordering, or removing property wrappers that either are
424+ implementation-detail or belong in a composition leading with an
425+ implementation-detail wrapper.
416426- Changing or removing a default argument is a `binary-compatible
417427 source-breaking change `.
428+ - Adding, changing, or removing arguments in the property-wrapper custom attribute
429+ of an API-level wrapper or in the custom attributes of API-leading compositions
430+ is a `binary-compatible source-breaking change `.
418431
419432Like properties, subscripts can be marked ``@inlinable ``, which makes
420433changing the body of an accessor a `binary-compatible source-breaking change `.
@@ -778,9 +791,15 @@ counterparts with a few small changes:
778791- Changing index parameter internal names is permitted.
779792- Reordering generic requirements (but not the generic parameters themselves)
780793 is permitted.
794+ - Adding, changing, reordering, or removing property wrappers that either are
795+ implementation-detail or belong in a composition leading with an
796+ implementation-detail wrapper are permitted.
781797- Adding a default argument expression to an index parameter is permitted.
782798- Changing or removing a default argument is a `binary-compatible
783799 source-breaking change `.
800+ - Adding, changing, or removing arguments in the property-wrapper custom attribute
801+ of an API-level wrapper or in the custom attributes of API-leading compositions
802+ is a `binary-compatible source-breaking change `.
784803
785804Adding a public setter to an ``open `` subscript is a
786805`binary-compatible source-breaking change `; any existing overrides will not
0 commit comments