Dart Analyze logoDart Analyze/
DRT-W1313

Duplicate assignment in pattern assignmentDRT-W1313

Major severityMajor
Bug Risk categoryBug Risk

The analyzer produces this diagnostic when a single pattern variable is assigned a value more than once in the same pattern assignment.

Example

The following code produces this diagnostic because the variable a is assigned twice in the pattern (a, a):

int f((int, int) r) {
  int a;
  (a, a) = r;
  return a;
}

Common fixes

If you need to capture all of the values, then use a unique variable for each of the subpatterns being matched:

int f((int, int) r) {
  int a, b;
  (a, b) = r;
  return a + b;
}

If some of the values don't need to be captured, then use a wildcard pattern _ to avoid having to bind the value to a variable:

int f((int, int) r) {
  int a;
  (_, a) = r;
  return a;
}