The policy seems to suggest or assume that being @stable
and @deprecated
are mutually exclusive. Some stability types explicitly state this (such as stable to call and stable to type), in others it seems to be implied (e.g. stable to extend: Only classes that are marked
).@stable to extend
To make this clearer, I suggest adding a bullet point similar to the following to the section on soft deprecation:
- Soft deprecated code SHOULD NOT be marked stable. Any
@stable
annotations should be removed at the same time that a@deprecated
annotation is added.
And maybe also this to the section on hard deprecation:
- Hard deprecated code MUST NOT be marked stable.