Skip to content

Commit 9cc02cd

Browse files
committed
Added custom error types for construction errors.
1 parent 9ed4f0d commit 9cc02cd

30 files changed

+305
-145
lines changed

benchmark/lib/simple_value.g.dart

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value/lib/built_value.dart

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,31 @@ class FlatBuiltValueToStringHelper implements BuiltValueToStringHelper {
255255
return stringResult;
256256
}
257257
}
258+
259+
/// [Error] indicating that a built_value class constructor was called with
260+
/// a `null` value for a field not marked `@nullable`.
261+
class BuiltValueNullFieldError extends Error {
262+
final String type;
263+
final String field;
264+
265+
BuiltValueNullFieldError(this.type, this.field);
266+
267+
@override
268+
String toString() =>
269+
'Tried to construct class "$type" with null field "$field". '
270+
'This is forbidden; to allow it, mark "$field" with @nullable.';
271+
}
272+
273+
/// [Error] indicating that a built_value class constructor was called with
274+
/// a missing or `dynamic` type parameter.
275+
class BuiltValueMissingGenericsError extends Error {
276+
final String type;
277+
final String parameter;
278+
279+
BuiltValueMissingGenericsError(this.type, this.parameter);
280+
281+
@override
282+
String toString() =>
283+
'Tried to construct class "$type" with missing or dynamic '
284+
'type argument "$parameter". All type arguments must be specified.';
285+
}

built_value_generator/lib/src/enum_source_class.g.dart

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/enum_source_field.g.dart

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/enum_source_library.g.dart

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/memoized_getter.g.dart

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/serializer_source_class.g.dart

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/serializer_source_field.g.dart

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/serializer_source_library.g.dart

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

built_value_generator/lib/src/value_source_class.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ abstract class ValueSourceClass
356356
result.writeln('{');
357357
for (final field in requiredFields) {
358358
result.writeln("if (${field.name} == null) "
359-
"throw new ArgumentError.notNull('${field.name}');");
359+
"throw new BuiltValueNullFieldError('${name}', '${field.name}');");
360360
}
361361
result.writeln('}');
362362
}
@@ -523,10 +523,9 @@ abstract class ValueSourceClass
523523
} else {
524524
result.writeln('{');
525525
for (final genericParameter in genericParameters) {
526-
result.writeln(
527-
'if ($genericParameter == dynamic) throw new ArgumentError.value('
528-
"'dynamic', '$genericParameter', "
529-
"'All type arguments must be specified');");
526+
result.writeln('if ($genericParameter == dynamic) '
527+
'throw new BuiltValueMissingGenericsError('
528+
"'$name', '$genericParameter');");
530529
}
531530
result.writeln('}');
532531
}

0 commit comments

Comments
 (0)