Skip to content

Commit

Permalink
List.unmodifiable init wrappers.
Browse files Browse the repository at this point in the history
  • Loading branch information
pauldemarco committed Jan 23, 2019
1 parent 3a10559 commit c097635
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions auto_data_generator/lib/src/file_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -62,21 +62,37 @@ class FileGenerator {

static StringBuffer _generateNamedConstructor(DataClass c) {
final buffer = new StringBuffer();
buffer.write('const ');
// FIXME: List.unmodifiable causes error: Initializer expressions in constant constructors must be constants.
if (!c.props.any((p) => p.type.startsWith('List'))) {
buffer.write('const ');
}
buffer.write('${c.name}({');

c.props.forEach((p) {
if (!p.isNullable && p.assignmentString == null) {
buffer.write('@required ');
}
buffer.write('this.${p.name}');
if (p.type.startsWith('List')) {
buffer.write('${p.type} ${p.name}');
} else {
buffer.write('this.${p.name}');
}
if (p.assignmentString != null) {
buffer.write(p.assignmentString);
}
buffer.write(', ');
});

buffer.writeln('});');
buffer.write('})');
if (c.props.any((p) => p.type.startsWith('List'))) {
buffer.write(':');
final initializers = c.props.where((p) => p.type.startsWith('List')).map(
(p) =>
'${p.name} = (${p.name} != null) ? List.unmodifiable(${p.name}) : null');
buffer.write(initializers.join(','));
}

buffer.writeln(';');
return buffer;
}

Expand Down

0 comments on commit c097635

Please sign in to comment.