Skip to main content

avoid-duplicate-mixins

has auto-fix
pro+

Warns when a class has a mixin that is already present in that class's hierarchy.

Duplicate mixins are either a sign of a bug (a different mixin should have been used instead) or are redundant and can be simply removed.

Example

❌ Bad:

mixin class MC {}
mixin M {}

class C1 = MC with M;
// LINT: Avoid duplicate mixins.
// Try removing the duplicate mixin or replacing it with a different mixin.
class C2 = Object with M, M;
// LINT: Avoid duplicate mixins. Extended class already has this mixin.
// Try removing the duplicate mixin or replacing it with a different mixin.
class C3 extends MC with MC {}
// LINT: Avoid duplicate mixins. Extended class already has this mixin.
// Try removing the duplicate mixin or replacing it with a different mixin.
class C4 extends C1 with MC;
// LINT: Avoid duplicate mixins. Extended class already has this mixin.
// Try removing the duplicate mixin or replacing it with a different mixin.
class C5 extends C6 with MC;
class C6 extends C1;

✅ Good:

mixin class MC {}
mixin M {}

class C1 = MC with MC;
class C2 = Object with M; // Correct, no duplicates
class C3 extends MC {}
class C4 extends C1;
class C5 extends C6;
class C6 extends C1;

Additional Resources