constructorInitializers property

String constructorInitializers

Implementation

String get constructorInitializers {
  if (this.fields.isEmpty) {
    return '';
  }
  final preds = <String>[];
  for (var i = 0; i < this.fields.length; i++) {
    final innerPreds = <String>[];
    for (var j = 0; j < this.fields.length; j++) {
      final inner = this.fields[j].name;
      if (i == j) {
        innerPreds.add('$inner != null');
      } else {
        innerPreds.add('$inner == null');
      }
    }
    preds.add('(' + innerPreds.join(' && ') + ')');
  }
  final assertExpr = 'assert(${preds.join(' || ')})';
  final assigns = this.fields.map((field) => field.constructorAssignment).join(',\n');
  return '$assertExpr, $assigns';
}