@@ -204,7 +204,7 @@ class JsonSerializableGenerator
204204 }
205205 }
206206
207- if (_implementsDartList (fieldType)) {
207+ if (_coreListChecker. isAssignableFromType (fieldType)) {
208208 var indexVal = "i${depth }" ;
209209
210210 var substitute = '${expression }[$indexVal ]' ;
@@ -247,7 +247,7 @@ class JsonSerializableGenerator
247247 }
248248 }
249249
250- if (_isDartIterable (searchType) || _isDartList (searchType)) {
250+ if (_coreIterableChecker. isAssignableFromType (searchType)) {
251251 var iterableGenericType =
252252 _getIterableGenericType (searchType as InterfaceType );
253253
@@ -257,7 +257,7 @@ class JsonSerializableGenerator
257257 "${_writeAccessToVar (itemVal , iterableGenericType , depth : depth +1 )}"
258258 ")" ;
259259
260- if (_isDartList (searchType)) {
260+ if (_coreListChecker. isAssignableFromType (searchType)) {
261261 output += "?.toList()" ;
262262 }
263263
@@ -287,24 +287,24 @@ String _fieldToJsonMapKey(String fieldName, FieldElement field) {
287287}
288288
289289DartType _getIterableGenericType (InterfaceType type) {
290- var iterableThing = _typeTest (type, _isDartIterable) as InterfaceType ;
290+ var iterableImplementation =
291+ _getImplementationType (type, _coreIterableChecker) as InterfaceType ;
291292
292- return iterableThing .typeArguments.single;
293+ return iterableImplementation .typeArguments.single;
293294}
294295
295- bool _implementsDartList (DartType type) => _typeTest (type, _isDartList) != null ;
296-
297- DartType _typeTest (DartType type, bool tester (DartType type)) {
298- if (tester (type)) return type;
296+ DartType _getImplementationType (DartType type, TypeChecker checker) {
297+ if (checker.isExactlyType (type)) return type;
299298
300299 if (type is InterfaceType ) {
301- var tests = type.interfaces.map ((type) => _typeTest (type, tester));
300+ var tests =
301+ type.interfaces.map ((type) => _getImplementationType (type, checker));
302302 var match = _firstNotNull (tests);
303303
304304 if (match != null ) return match;
305305
306306 if (type.superclass != null ) {
307- return _typeTest (type.superclass, tester );
307+ return _getImplementationType (type.superclass, checker );
308308 }
309309 }
310310 return null ;
@@ -313,8 +313,6 @@ DartType _typeTest(DartType type, bool tester(DartType type)) {
313313T _firstNotNull <T >(Iterable <T > values) =>
314314 values.firstWhere ((value) => value != null , orElse: () => null );
315315
316- bool _isDartIterable (DartType type) =>
317- const TypeChecker .fromUrl ('dart:core#Iterable' ).isExactlyType (type);
316+ final _coreIterableChecker = const TypeChecker .fromUrl ('dart:core#Iterable' );
318317
319- bool _isDartList (DartType type) =>
320- const TypeChecker .fromUrl ('dart:core#List' ).isExactlyType (type);
318+ final _coreListChecker = const TypeChecker .fromUrl ('dart:core#List' );
0 commit comments