@@ -8,6 +8,7 @@ library dartdoc.element_type;
88import 'dart:collection' ;
99
1010import 'package:analyzer/dart/element/element.dart' ;
11+ import 'package:analyzer/dart/element/nullability_suffix.dart' ;
1112import 'package:analyzer/dart/element/type.dart' ;
1213import 'package:dartdoc/src/model.dart' ;
1314import 'package:dartdoc/src/model_utils.dart' ;
@@ -341,7 +342,7 @@ abstract class CallableElementTypeMixin implements ParameterizedElementType {
341342 if (type.typeFormals.isEmpty) {
342343 dartTypeArguments = type.typeArguments;
343344 } else {
344- dartTypeArguments = type.typeFormals.map ((f) => f.type );
345+ dartTypeArguments = type.typeFormals.map (_legacyTypeParameterType );
345346 }
346347 } else {
347348 DefinedElementType elementType = returnedFrom as DefinedElementType ;
@@ -353,7 +354,7 @@ abstract class CallableElementTypeMixin implements ParameterizedElementType {
353354 returnedFrom.type.element is GenericFunctionTypeElement ) {
354355 _typeArguments = (returnedFrom as DefinedElementType ).typeArguments;
355356 } else {
356- dartTypeArguments = type.typeFormals.map ((f) => f.type );
357+ dartTypeArguments = type.typeFormals.map (_legacyTypeParameterType );
357358 }
358359 }
359360 if (dartTypeArguments != null ) {
@@ -364,6 +365,20 @@ abstract class CallableElementTypeMixin implements ParameterizedElementType {
364365 }
365366 return _typeArguments;
366367 }
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+ }
367382}
368383
369384/// A callable type that may or may not be backed by a declaration using the generic
0 commit comments