implicit_ reopen
Don't implicitly reopen classes.
Details
#
Using an interface, base, final, or sealed modifier on a class,
or a base modifier on a mixin,
authors can control whether classes and mixins allow being implemented,
extended, and/or mixed in from outside of the library where they're defined.
In some cases, it's possible for an author to inadvertently relax these controls
and implicitly "reopen" a class. (A similar reopening cannot occur with a mixin.)
This lint guards against unintentionally reopening a class by requiring such
cases to be made explicit with the
@reopen
annotation in package:meta.
BAD:
interface class I {}
class C extends I {} // LINT
GOOD:
interface class I {}
final class C extends I {}
import 'package:meta/meta.dart';
interface class I {}
@reopen
class C extends I {}
Enable
#
To enable the implicit_reopen rule, add implicit_reopen under
linter > rules in your analysis_options.yaml
file:
linter:
rules:
- implicit_reopen
If you're instead using the YAML map syntax to configure linter rules,
add implicit_reopen: true under linter > rules:
linter:
rules:
implicit_reopen: true
Unless stated otherwise, the documentation on this site reflects Dart 3.9.2. Report an issue.