reopen top-level constant
Annotation for intentionally loosening restrictions on subtyping that would
otherwise cause lint warnings to be produced by the implicit_reopen lint.
Indicates that the annotated class, mixin, or mixin class declaration intentionally allows subtypes outside the library to implement it, or extend it, or mix it in, even though it has some superinterfaces whose restrictions prevent inheritance.
A class, mixin, or mixin class declaration prevents inheritance if:
- it is marked
interfaceorfinal - it is marked
sealed, and is implicitlyinterfaceorfinalbased on the modifiers of its superinterfaces - it is an anonymous mixin application, and is implicitly
interfaceorfinalbased on the modifiers of its superinterfaces
A declaration annotated with @reopen will suppress warnings from the
implicit_reopen lint.
That lint will otherwise warn when a subtype has restrictions that are
not sufficient to enforce the restrictions declared by class modifiers on
one or more superinterfaces.
In addition, tools, such as the analyzer, can provide feedback if
- The annotation is applied to anything other than a class, mixin, or mixin class.
- The annotation is applied to a class or mixin which does not require it. (The intent to reopen was not satisfied.)
Implementation
const _Reopen reopen = _Reopen();