annotate-overrides

Same as annotate_overrides in Dart lints

Group
Style
Path
lint/style/annotate-overrides
Default
On (recommended)
Origin
Dart lints
Rule
10 of 512
recommended

Requires @override on members that override an inherited declaration.

An instance method, operator, getter, setter, or field of a class, mixin class, enum, or mixin is reported when its inherited interface has a combined member signature for that name — a getter for fields and getters, a setter for setters. Conflicting inherited signatures with no most-specific existing candidate do not count, even when this declaration validly overrides all candidates. Extension-type members are never checked. Unloaded dependency signatures remain unknown rather than being inferred from member names.

Declaring var/final primary-constructor parameters are also instance fields and are checked as such.

Invalid

example.dartdart
class Base {
  void method(int value) {}
  int get count => 0;
  int field = 0;
}
class Child extends Base {
  void method(int value) {}
  int get count => 1;
  int field = 1;
}

class SetterOnly { set onlySetter(int value) {} }
class SetterOverride extends SetterOnly {
  set onlySetter(int value) {}
}

class Negatable {
  Negatable operator -() => this;
  Negatable operator +(Negatable other) => this;
}
class BinaryOverride extends Negatable {
  Negatable operator +(Negatable other) => this;
}
Annotate overridden members with `@override`.
6class Child extends Base {
7 void method(int value) {}
Annotate overridden members with `@override`.
7 void method(int value) {}
8 int get count => 1;
Annotate overridden members with `@override`.
8 int get count => 1;
9 int field = 1;
Annotate overridden members with `@override`.
13class SetterOverride extends SetterOnly {
14 set onlySetter(int value) {}
Annotate overridden members with `@override`.
21class BinaryOverride extends Negatable {
22 Negatable operator +(Negatable other) => this;

Valid

example.dartdart
class Base { void method() {} }
class Child extends Base {
  @override
  void method() {}
  static void helper() {}
}

class SetterOnlyBase { set onlySetter(int value) {} }
class FieldOverSetter implements SetterOnlyBase {
  // Fields are compared through their getter; only a setter is inherited.
  int onlySetter = 0;
}

class UnaryOnly { UnaryOnly operator -() => this; }
class BinaryMinus extends UnaryOnly {
  UnaryOnly operator -(UnaryOnly other) => this;
}

extension type Wrapper(int value) implements Object {
  String toString() => '';
}

Configure annotate-overrides

Set its severity in falcon.json. See the configuration guide.

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "annotate-overrides": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore lint/style/annotate-overrides: <reason>