@@ -8,6 +8,7 @@ library dartdoc.element_type;
8
8
import 'dart:collection' ;
9
9
10
10
import 'package:analyzer/dart/element/element.dart' ;
11
+ import 'package:analyzer/dart/element/nullability_suffix.dart' ;
11
12
import 'package:analyzer/dart/element/type.dart' ;
12
13
import 'package:dartdoc/src/model.dart' ;
13
14
import 'package:dartdoc/src/model_utils.dart' ;
@@ -341,7 +342,7 @@ abstract class CallableElementTypeMixin implements ParameterizedElementType {
341
342
if (type.typeFormals.isEmpty) {
342
343
dartTypeArguments = type.typeArguments;
343
344
} else {
344
- dartTypeArguments = type.typeFormals.map ((f) => f.type );
345
+ dartTypeArguments = type.typeFormals.map (_legacyTypeParameterType );
345
346
}
346
347
} else {
347
348
DefinedElementType elementType = returnedFrom as DefinedElementType ;
@@ -353,7 +354,7 @@ abstract class CallableElementTypeMixin implements ParameterizedElementType {
353
354
returnedFrom.type.element is GenericFunctionTypeElement ) {
354
355
_typeArguments = (returnedFrom as DefinedElementType ).typeArguments;
355
356
} else {
356
- dartTypeArguments = type.typeFormals.map ((f) => f.type );
357
+ dartTypeArguments = type.typeFormals.map (_legacyTypeParameterType );
357
358
}
358
359
}
359
360
if (dartTypeArguments != null ) {
@@ -364,6 +365,20 @@ abstract class CallableElementTypeMixin implements ParameterizedElementType {
364
365
}
365
366
return _typeArguments;
366
367
}
368
+
369
+ /// Return the [TypeParameterType] with the legacy nullability for the given
370
+ /// type parameter [element] .
371
+ ///
372
+ /// TODO(scheglov) This method is a work around that fact that DartDoc
373
+ /// currently represents both type formals and uses of them as actual types,
374
+ /// as [TypeParameterType] s. This was not perfect, but worked before NNBD.
375
+ /// With NNBD types have nullability suffixes, but type formals should not.
376
+ /// Eventually we should separate models for type formals and types.
377
+ static TypeParameterType _legacyTypeParameterType (
378
+ TypeParameterElement element,
379
+ ) {
380
+ return element.instantiate (nullabilitySuffix: NullabilitySuffix .star);
381
+ }
367
382
}
368
383
369
384
/// A callable type that may or may not be backed by a declaration using the generic
0 commit comments