@@ -146,15 +146,9 @@ The following changes are permitted:
146
146
- Reordering generic requirements (but not the generic parameters themselves).
147
147
- Adding a default argument expression to a parameter.
148
148
- 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 ``).
152
151
- 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 `.
158
152
- Adding or removing the ``@discardableResult `` and ``@warn_unqualified_access ``
159
153
attributes.
160
154
@@ -164,11 +158,9 @@ No other changes are permitted; the following are particularly of note:
164
158
- An ABI-public function may not, in any way, change API-level property
165
159
wrappers (``@API ``) or compositions where the outermost wrapper is
166
160
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.
172
164
- An ABI-public function may not change its generic requirements.
173
165
- An ABI-public function may not change its external parameter names (labels).
174
166
- 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:
430
422
- Reordering generic requirements (but not the generic parameters themselves).
431
423
- Adding a default argument expression to an index parameter.
432
424
- 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 ``).
436
427
- Changing or removing a default argument is a `binary-compatible
437
428
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 `.
443
429
444
430
Like properties, subscripts can be marked ``@inlinable ``, which makes
445
431
changing the body of an accessor a `binary-compatible source-breaking change `.
@@ -804,17 +790,11 @@ counterparts with a few small changes:
804
790
- Reordering generic requirements (but not the generic parameters themselves)
805
791
is permitted.
806
792
- 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 ``).
810
795
- Adding a default argument expression to an index parameter is permitted.
811
796
- Changing or removing a default argument is a `binary-compatible
812
797
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 `.
818
798
819
799
Adding a public setter to an ``open `` subscript is a
820
800
`binary-compatible source-breaking change `; any existing overrides will not
0 commit comments