Skip to content

Commit df048e3

Browse files
authored
Add property-wrapper examples.
1 parent 04d2970 commit df048e3

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

docs/LibraryEvolution.rst

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -146,20 +146,23 @@ 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 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``).
151152
- Changing or removing a default argument is a `binary-compatible source-breaking change`.
152153
- 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`.
155157
- Adding or removing the ``@discardableResult`` and ``@warn_unqualified_access``
156158
attributes.
157159

158160
No other changes are permitted; the following are particularly of note:
159161

160162
- 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``).
163166
- An ABI-public function may not change its generic requirements.
164167
- An ABI-public function may not change its external parameter names (labels).
165168
- 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:
421424
- Reordering generic requirements (but not the generic parameters themselves).
422425
- Adding a default argument expression to an index parameter.
423426
- 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``).
426430
- Changing or removing a default argument is a `binary-compatible
427431
source-breaking change`.
428432
- 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`.
431436

432437
Like properties, subscripts can be marked ``@inlinable``, which makes
433438
changing the body of an accessor a `binary-compatible source-breaking change`.
@@ -792,14 +797,16 @@ counterparts with a few small changes:
792797
- Reordering generic requirements (but not the generic parameters themselves)
793798
is permitted.
794799
- 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``).
797803
- Adding a default argument expression to an index parameter is permitted.
798804
- Changing or removing a default argument is a `binary-compatible
799805
source-breaking change`.
800806
- 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`.
803810

804811
Adding a public setter to an ``open`` subscript is a
805812
`binary-compatible source-breaking change`; any existing overrides will not

0 commit comments

Comments
 (0)