Skip to content

Commit f7aecbb

Browse files
authored
Simplify property-wrapper-attribute argument rules
1 parent 92caac3 commit f7aecbb

File tree

1 file changed

+9
-29
lines changed

1 file changed

+9
-29
lines changed

docs/LibraryEvolution.rst

Lines changed: 9 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

444430
Like properties, subscripts can be marked ``@inlinable``, which makes
445431
changing 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

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

0 commit comments

Comments
 (0)