@@ -146,15 +146,9 @@ The following changes are permitted:
146146- Reordering generic requirements (but not the generic parameters themselves).
147147- Adding a default argument expression to a parameter.
148148- Adding, changing, reordering, or removing property wrappers that either are
149- implementation-detail (``@ImplementationDetail ``) or in a composition where
150- the outermost wrapper is implementation-detail
151- (``@ImplementationDetail @MyWrapper ``).
149+ implementation-detail or in a composition where the outermost wrapper is
150+ implementation-detail (``@ImplementationDetail @MyWrapper ``).
152151- Changing or removing a default argument is a `binary-compatible source-breaking change `.
153- - Changing arguments in the property-wrapper custom attribute of an
154- implementation-detail wrapper (``@MyWrapper(argument: 5) ``) or
155- in the custom attributes of compositions where the outermost wrapper is
156- implementation-detail (``@ImplementationDetail @MyWrapper(argument: 5) ``)
157- is a `binary-compatible source-breaking change `.
158152- Adding or removing the ``@discardableResult `` and ``@warn_unqualified_access ``
159153 attributes.
160154
@@ -164,11 +158,9 @@ No other changes are permitted; the following are particularly of note:
164158- An ABI-public function may not, in any way, change API-level property
165159 wrappers (``@API ``) or compositions where the outermost wrapper is
166160 API-level (``@API @MyWrapper ``).
167- - An ABI-public function may neither add nor remove arguments from the
168- property-wrapper custom attribute of a wrapper supporting projected-value
169- initialization (``@ValueProjecting(argument: 5) ``) or in the custom
170- attributes of compositions where the outermost wrapper is projected-value
171- initializable (``@ValueProjecting @MyWrapper(argument: 5) ``).
161+ - An ABI-public function may not change an API-level property-wrapper attribute
162+ to an implementation-detail one and vice versa, if it is the only wrapper
163+ applied to a given parameter or the outermost wrapper in a composition.
172164- An ABI-public function may not change its generic requirements.
173165- An ABI-public function may not change its external parameter names (labels).
174166- An ABI-public function may not add, remove, or reorder parameters, whether or
@@ -430,16 +422,10 @@ stored subscripts. This means that the following changes are permitted:
430422- Reordering generic requirements (but not the generic parameters themselves).
431423- Adding a default argument expression to an index parameter.
432424- Adding, changing, reordering, or removing property wrappers that either are
433- implementation-detail (``@ImplementationDetail ``) or in a composition where
434- the outermost wrapper is implementation-detail
435- (``@ImplementationDetail @MyWrapper ``).
425+ implementation-detail or in a composition where the outermost wrapper is
426+ implementation-detail (``@ImplementationDetail @MyWrapper ``).
436427- Changing or removing a default argument is a `binary-compatible
437428 source-breaking change `.
438- - Changing arguments in the property-wrapper custom attribute of an
439- implementation-detail wrapper (``@MyWrapper(argument: 5) ``) or
440- in the custom attributes of compositions where the outermost wrapper is
441- implementation-detail (``@ImplementationDetail @MyWrapper(argument: 5) ``)
442- is a `binary-compatible source-breaking change `.
443429
444430Like properties, subscripts can be marked ``@inlinable ``, which makes
445431changing the body of an accessor a `binary-compatible source-breaking change `.
@@ -804,17 +790,11 @@ counterparts with a few small changes:
804790- Reordering generic requirements (but not the generic parameters themselves)
805791 is permitted.
806792- Adding, changing, reordering, or removing property wrappers that either are
807- implementation-detail (``@ImplementationDetail ``) or in a composition where
808- the outermost wrapper is implementation-detail
809- (``@ImplementationDetail @MyWrapper ``).
793+ implementation-detail or in a composition where the outermost wrapper is
794+ implementation-detail (``@ImplementationDetail @MyWrapper ``).
810795- Adding a default argument expression to an index parameter is permitted.
811796- Changing or removing a default argument is a `binary-compatible
812797 source-breaking change `.
813- - Changing arguments in the property-wrapper custom attribute of an
814- implementation-detail wrapper (``@MyWrapper(argument: 5) ``) or
815- in the custom attributes of compositions where the outermost wrapper is
816- implementation-detail (``@ImplementationDetail @MyWrapper(argument: 5) ``)
817- is a `binary-compatible source-breaking change `.
818798
819799Adding a public setter to an ``open `` subscript is a
820800`binary-compatible source-breaking change `; any existing overrides will not
0 commit comments