Getter or setter functions should avoid an infinite call by accessing themselves

  • GETTER_SETTER_RECURSION
  • Error
  • High
  • No tags

This rule applies when getter or setter functions cause an infinite call by accessing themselves.

When a getter or setter function accesses itself (recursion), an exception by an infinite call is thrown.

Noncompliant Code Example

View with compliant examples side by side
let obj = {
    set name(n) {
        this.name = n; // GETTER_SETTER_RECURSION alarm because 'obj.name = "John"' causes an infinite call.
    },
    get name() {
        return this.name; // GETTER_SETTER_RECURSION alarm
    }
}
obj.name = "John";

Compliant Code Example

View with noncompliant examples side by side
let obj = {
    set name(n) {
        this._name = n;
    },
    get name() {
        return this._name;
    }
}
obj.name = "John";

Version

This rule was introduced in DeepScan 1.11.0-beta.

See