@@ -146,20 +146,23 @@ 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 or belong in a composition leading with an
150
- implementation-detail wrapper.
149
+ implementation-detail (``@ImplementationDetail ``) or in a composition where
150
+ the outermost wrapper is implementation-detail
151
+ (``@ImplementationDetail @MyWrapper ``).
151
152
- Changing or removing a default argument is a `binary-compatible source-breaking change `.
152
153
- 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 `.
154
+ of an API-level wrapper (``@API(argument: 5) ``) or in the custom attributes of compositions
155
+ where the outermost wrapper is API-level (``@API @MyWrapper(argument: 5) ``) is a
156
+ `binary-compatible source-breaking change `.
155
157
- Adding or removing the ``@discardableResult `` and ``@warn_unqualified_access ``
156
158
attributes.
157
159
158
160
No other changes are permitted; the following are particularly of note:
159
161
160
162
- 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.
163
+ - An ABI-public function may not, in any way, change API-level property
164
+ wrappers (``@API ``) or compositions where the outermost wrapper is
165
+ API-level (``@API @MyWrapper ``).
163
166
- An ABI-public function may not change its generic requirements.
164
167
- An ABI-public function may not change its external parameter names (labels).
165
168
- An ABI-public function may not add, remove, or reorder parameters, whether or
@@ -421,13 +424,15 @@ stored subscripts. This means that the following changes are permitted:
421
424
- Reordering generic requirements (but not the generic parameters themselves).
422
425
- Adding a default argument expression to an index parameter.
423
426
- 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.
427
+ implementation-detail (``@ImplementationDetail ``) or in a composition where
428
+ the outermost wrapper is implementation-detail
429
+ (``@ImplementationDetail @MyWrapper ``).
426
430
- Changing or removing a default argument is a `binary-compatible
427
431
source-breaking change `.
428
432
- 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 `.
433
+ of an API-level wrapper (``@API(argument: 5) ``) or in the custom attributes of compositions
434
+ where the outermost wrapper is API-level (``@API @MyWrapper(argument: 5) ``) is a
435
+ `binary-compatible source-breaking change `.
431
436
432
437
Like properties, subscripts can be marked ``@inlinable ``, which makes
433
438
changing the body of an accessor a `binary-compatible source-breaking change `.
@@ -792,14 +797,16 @@ counterparts with a few small changes:
792
797
- Reordering generic requirements (but not the generic parameters themselves)
793
798
is permitted.
794
799
- 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.
800
+ implementation-detail (``@ImplementationDetail ``) or in a composition where
801
+ the outermost wrapper is implementation-detail
802
+ (``@ImplementationDetail @MyWrapper ``).
797
803
- Adding a default argument expression to an index parameter is permitted.
798
804
- Changing or removing a default argument is a `binary-compatible
799
805
source-breaking change `.
800
806
- 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 `.
807
+ of an API-level wrapper (``@API(argument: 5) ``) or in the custom attributes of compositions
808
+ where the outermost wrapper is API-level (``@API @MyWrapper(argument: 5) ``) is a
809
+ `binary-compatible source-breaking change `.
803
810
804
811
Adding a public setter to an ``open `` subscript is a
805
812
`binary-compatible source-breaking change `; any existing overrides will not
0 commit comments