diff --git a/json_serializable/lib/src/helper_core.dart b/json_serializable/lib/src/helper_core.dart index 6dadb7c1f..bf99f6962 100644 --- a/json_serializable/lib/src/helper_core.dart +++ b/json_serializable/lib/src/helper_core.dart @@ -126,6 +126,8 @@ String typeToCode(DartType type) { final typeArgumentsCode = typeArguments.map(typeToCode).join(', '); return '${type.element.name}<$typeArgumentsCode>'; } + } else if (type is TypeParameterType) { + return '${type.getDisplayString()} (type parameter)'; } throw UnimplementedError('(${type.runtimeType}) $type'); } diff --git a/json_serializable/test/json_serializable_test.dart b/json_serializable/test/json_serializable_test.dart index d64363556..cec29a125 100644 --- a/json_serializable/test/json_serializable_test.dart +++ b/json_serializable/test/json_serializable_test.dart @@ -63,6 +63,7 @@ const _expectedAnnotatedTests = [ 'InvalidChildClassFromJson3', 'InvalidFromFunc2Args', 'InvalidToFunc2Args', + 'Issue713', 'JsonConverterCtorParams', 'JsonConverterDuplicateAnnotations', 'JsonConverterNamedCtor', diff --git a/json_serializable/test/src/generic_test_input.dart b/json_serializable/test/src/generic_test_input.dart index 6b7a143d9..eeeaaf832 100644 --- a/json_serializable/test/src/generic_test_input.dart +++ b/json_serializable/test/src/generic_test_input.dart @@ -4,6 +4,16 @@ part of '_json_serializable_test_input.dart'; +@ShouldThrow( + 'Could not generate `fromJson` code for `result` because of type ' + '`TResult (type parameter)`.\n' + 'None of the provided `TypeHelper` instances support the defined type.', +) +@JsonSerializable() +class Issue713 { + List result; +} + @ShouldGenerate(r''' GenericClass _$GenericClassFromJson( Map json) {