arguments-ordering

Group
Style
Path
lint/style/arguments-ordering
Default
Off, opt in
Origin
Falcon
Rule
11 of 512

Named arguments follow their resolved parameter declaration order by default. Unknown signatures are skipped. order: ascending or order: descending explicitly selects alphabetical ordering; alphabetize: true selects ascending.

Invalid

example.dartdart
void target({int alpha = 0, int zebra = 0}) {}
class Example {
  const Example({int alpha = 0, int zebra = 0});
  Example.forward() : this(zebra: 2,  alpha: 1);
}
class Child extends Example {
  Child() : super(zebra: 2,  alpha: 1);
}
void calls() {
  target(zebra: 2,  alpha: 1);
  Example(zebra: 2,  alpha: 1);
  new Example(zebra: 2,  alpha: 1);
  const Example(zebra: 2,  alpha: 1);
}

@Example(zebra: 2,  alpha: 1)
class Annotated {}

enum Choice {
  value(zebra: 2,  alpha: 1);
  const Choice({int alpha = 0, int zebra = 0});
}

class Builder {
  void configure({int alpha = 0, int zebra = 0}) {}
}
void cascades(Builder builder) {
  builder..configure(zebra: 2,  alpha: 1);
}

void declarationOrder({int zebra = 0, int alpha = 0, int middle = 0}) {}
class NonAlphabetical {
  const NonAlphabetical({int zebra = 0, int alpha = 0});
  const NonAlphabetical.named({int zebra = 0, int alpha = 0});
  NonAlphabetical.forward()
      : this.named(alpha: 1,  zebra: 2);
  void configure({int zebra = 0, int alpha = 0}) {}
}
void declarationCalls(NonAlphabetical object) {
  declarationOrder(alpha: 1,  zebra: 2);
  declarationOrder(middle: 3,  alpha: 1);
  NonAlphabetical(alpha: 1,  zebra: 2);
  new NonAlphabetical(alpha: 1,  zebra: 2);
  object.configure(alpha: 1,  zebra: 2);
  object..configure(alpha: 1,  zebra: 2);
}

@NonAlphabetical(alpha: 1,  zebra: 2)
class DeclarationAnnotation {}

class Inherited extends NonAlphabetical {
  Inherited() : super(alpha: 1,  zebra: 2);
  Inherited.named()
      : super.named(alpha: 1,  zebra: 2);
}
void inheritedCall(Inherited object) {
  object.configure(alpha: 1,  zebra: 2);
}

@NonAlphabetical.named(alpha: 1,  zebra: 2)
class NamedDeclarationAnnotation {}

enum NamedChoice {
  value.named(alpha: 1,  zebra: 2);
  const NamedChoice.named({int zebra = 0, int alpha = 0});
}

class Generic<T> {
  void configure({T? zebra, T? alpha}) {}
}
void genericCall(Generic<int> object) {
  object.configure(alpha: 1,  zebra: 2);
}

class PrivatePrimary({final int _alpha = 0, final int _zebra = 0}) {}
class MixedPrimary({final int _zebra = 0, int alpha = 0, var _middle = 0}) {}
void primaryCalls() {
  PrivatePrimary(zebra: 2,  alpha: 1);
  MixedPrimary(alpha: 1,  zebra: 2, middle: 3);
}
Reorder named arguments to follow the parameter declaration order.
3 const Example({int alpha = 0, int zebra = 0});
4 Example.forward() : this(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
6class Child extends Example {
7 Child() : super(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
9void calls() {
10 target(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
10 target(zebra: 2, alpha: 1);
11 Example(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
11 Example(zebra: 2, alpha: 1);
12 new Example(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
12 new Example(zebra: 2, alpha: 1);
13 const Example(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
15
16@Example(zebra: 2, alpha: 1)
Reorder named arguments to follow the parameter declaration order.
19enum Choice {
20 value(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
27void cascades(Builder builder) {
28 builder..configure(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
35 NonAlphabetical.forward()
36 : this.named(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
39void declarationCalls(NonAlphabetical object) {
40 declarationOrder(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
40 declarationOrder(alpha: 1, zebra: 2);
41 declarationOrder(middle: 3, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
41 declarationOrder(middle: 3, alpha: 1);
42 NonAlphabetical(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
42 NonAlphabetical(alpha: 1, zebra: 2);
43 new NonAlphabetical(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
43 new NonAlphabetical(alpha: 1, zebra: 2);
44 object.configure(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
44 object.configure(alpha: 1, zebra: 2);
45 object..configure(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
47
48@NonAlphabetical(alpha: 1, zebra: 2)
Reorder named arguments to follow the parameter declaration order.
51class Inherited extends NonAlphabetical {
52 Inherited() : super(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
53 Inherited.named()
54 : super.named(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
56void inheritedCall(Inherited object) {
57 object.configure(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
59
60@NonAlphabetical.named(alpha: 1, zebra: 2)
Reorder named arguments to follow the parameter declaration order.
63enum NamedChoice {
64 value.named(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
71void genericCall(Generic<int> object) {
72 object.configure(alpha: 1, zebra: 2);
Reorder named arguments to follow the parameter declaration order.
77void primaryCalls() {
78 PrivatePrimary(zebra: 2, alpha: 1);
Reorder named arguments to follow the parameter declaration order.
78 PrivatePrimary(zebra: 2, alpha: 1);
79 MixedPrimary(alpha: 1, zebra: 2, middle: 3);

Valid

example.dartdart
void target(int zebra, int alpha, {int beta = 0, int gamma = 0}) {}
class Example {
  const Example({int alpha = 0, int zebra = 0});
}
void calls() {
  target(2, 1, beta: 3, gamma: 4);
  Example(alpha: 1, zebra: 2);
  const Example(alpha: 1, zebra: 2);
  final items = [2, 1];
  final record = (zebra: 2, alpha: 1);
}

void declarationOrder({int zebra = 0, int alpha = 0, int middle = 0}) {}
class NonAlphabetical {
  const NonAlphabetical({int zebra = 0, int alpha = 0});
  const NonAlphabetical.named({int zebra = 0, int alpha = 0});
  NonAlphabetical.forward() : this.named(zebra: 2, alpha: 1);
  void configure({int zebra = 0, int alpha = 0}) {}
}
void declarationCalls(NonAlphabetical object, dynamic unknown) {
  declarationOrder(zebra: 2, alpha: 1, middle: 3);
  declarationOrder(zebra: 2, middle: 3);
  NonAlphabetical(zebra: 2, alpha: 1);
  new NonAlphabetical(zebra: 2, alpha: 1);
  object.configure(zebra: 2, alpha: 1);
  object..configure(zebra: 2, alpha: 1);
  unknown.configure(zebra: 2, alpha: 1);
  unknown.configure(alpha: 1, zebra: 2);
  unresolved(zebra: 2, alpha: 1);
  unresolved(alpha: 1, zebra: 2);
}

@NonAlphabetical(zebra: 2, alpha: 1)
class DeclarationAnnotation {}

class Inherited extends NonAlphabetical {
  Inherited() : super(zebra: 2, alpha: 1);
  Inherited.named() : super.named(zebra: 2, alpha: 1);
  Inherited.forward() : this();
}
void inheritedCall(Inherited object) {
  object.configure(zebra: 2, alpha: 1);
}
void functionTypeUnknown(void Function({int alpha, int zebra}) callback) {
  callback(zebra: 2, alpha: 1);
}

@NonAlphabetical.named(zebra: 2, alpha: 1)
class NamedDeclarationAnnotation {}

enum NamedChoice {
  value.named(zebra: 2, alpha: 1);
  const NamedChoice.named({int zebra = 0, int alpha = 0});
}

class Generic<T> {
  void configure({T? zebra, T? alpha}) {}
}
void genericCall(Generic<int> object) {
  object.configure(zebra: 2, alpha: 1);
}

class PrivatePrimary({final int _alpha = 0, final int _zebra = 0}) {}
class MixedPrimary({final int _zebra = 0, int alpha = 0, var _middle = 0}) {}
void primaryCalls() {
  PrivatePrimary(alpha: 1, zebra: 2);
  MixedPrimary(zebra: 2, alpha: 1, middle: 3);
  MixedPrimary(zebra: 2, middle: 3);
}

Configure arguments-ordering

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

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "arguments-ordering": "error"
      }
    }
  }
}

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

example.dartdart
// falcon-ignore lint/style/arguments-ordering: <reason>