avoid-accessing-other-classes-private-members

Path
lint/suspicious/avoid-accessing-other-classes-private-members
Default
Off, opt in
Origin
Falcon
Rule
13 of 512

Enforces class-level encapsulation even inside one Dart library.

Invalid

example.dartdart
class Secret {
  int _value = 0;
  static int _shared = 0;
  void _reset() {}
  static Secret _default() => Secret();
}
class Other {
  void inspect(Secret secret) {
    final value = secret._value;
    secret._value = value;
    secret._reset();
    final reset = secret._reset;
    Secret._shared++;
    secret.._value = 1;
    secret.._reset();
  }
}
int outside(Secret secret) => secret._value;

class NullableAccess {
  void inspect(Secret? secret) {
    secret?._value;
    secret?._reset();
  }
  void shorthand() {
    Secret secret = ._default();
  }
}
class Child extends Secret {
  int inspectBase(Secret secret) => secret._value;
}
Avoid accessing another class's private member.
8 void inspect(Secret secret) {
9 final value = secret._value;
Avoid accessing another class's private member.
9 final value = secret._value;
10 secret._value = value;
Avoid accessing another class's private member.
10 secret._value = value;
11 secret._reset();
Avoid accessing another class's private member.
11 secret._reset();
12 final reset = secret._reset;
Avoid accessing another class's private member.
12 final reset = secret._reset;
13 Secret._shared++;
Avoid accessing another class's private member.
13 Secret._shared++;
14 secret.._value = 1;
Avoid accessing another class's private member.
14 secret.._value = 1;
15 secret.._reset();
Avoid accessing another class's private member.
17}
18int outside(Secret secret) => secret._value;
Avoid accessing another class's private member.
21 void inspect(Secret? secret) {
22 secret?._value;
Avoid accessing another class's private member.
22 secret?._value;
23 secret?._reset();
Avoid accessing another class's private member.
25 void shorthand() {
26 Secret secret = ._default();
Avoid accessing another class's private member.
29class Child extends Secret {
30 int inspectBase(Secret secret) => secret._value;

Valid

example.dartdart
class Secret {
  int _value = 0;
  static int _shared = 0;
  int publicValue = 0;
  void _reset() {}
  static Secret _default() => Secret();
  void nullable(Secret? other) {
    other?._value;
    other?._reset();
  }
  void shorthand() {
    Secret other = ._default();
  }
  void inspect(Secret other) {
    _value = other._value;
    this._reset();
    other.._value = 1;
    Secret._shared++;
    void nested() { other._reset(); }
    nested();
  }
}
class Other {
  int read(Secret secret) => secret.publicValue;
  void unknown(dynamic value) { value._unresolved(); }
}
class Child extends Secret {
  @override
  void _reset() { super._reset(); }
  int readOwn() => this._value;
  void resetOwn() { this.._value = 1; this.._reset(); }
  bool same(Child other) => this._value == other._value;
  void nullable(Child? other) { other?._value; }
  void cascade(Child other) { other.._value = 1; }
}
extension NamedSecretAccess on Secret {
  int readOther(Secret other) => other._value;
}
extension on Secret {
  int readOtherUnnamed(Secret other) => other._value;
}

Configure avoid-accessing-other-classes-private-members

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

falcon.jsonjson
{
  "linter": {
    "rules": {
      "suspicious": {
        "avoid-accessing-other-classes-private-members": "error"
      }
    }
  }
}

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

example.dartdart
// falcon-ignore lint/suspicious/avoid-accessing-other-classes-private-members: <reason>