implicit_ reopen
Learn about the implicit_reopen linter rule.
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.10.3. Report an issue.