@@ -145,14 +145,21 @@ The following changes are permitted:
145
145
body, not the labels that are part of the function's full name).
146
146
- Reordering generic requirements (but not the generic parameters themselves).
147
147
- 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 `.
150
155
- Adding or removing the ``@discardableResult `` and ``@warn_unqualified_access ``
151
156
attributes.
152
157
153
158
No other changes are permitted; the following are particularly of note:
154
159
155
160
- 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.
156
163
- An ABI-public function may not change its generic requirements.
157
164
- An ABI-public function may not change its external parameter names (labels).
158
165
- 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:
413
420
accessor bodies, not the labels that are part of the subscript's full name).
414
421
- Reordering generic requirements (but not the generic parameters themselves).
415
422
- 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.
416
426
- Changing or removing a default argument is a `binary-compatible
417
427
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 `.
418
431
419
432
Like properties, subscripts can be marked ``@inlinable ``, which makes
420
433
changing the body of an accessor a `binary-compatible source-breaking change `.
@@ -778,9 +791,15 @@ counterparts with a few small changes:
778
791
- Changing index parameter internal names is permitted.
779
792
- Reordering generic requirements (but not the generic parameters themselves)
780
793
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.
781
797
- Adding a default argument expression to an index parameter is permitted.
782
798
- Changing or removing a default argument is a `binary-compatible
783
799
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 `.
784
803
785
804
Adding a public setter to an ``open `` subscript is a
786
805
`binary-compatible source-breaking change `; any existing overrides will not
0 commit comments