@@ -42,6 +42,9 @@ abstract class Type extends TType {
4242 /** Gets the `i`th type parameter of this type, if any. */
4343 abstract TypeParameter getTypeParameter ( int i ) ;
4444
45+ /** Gets the the default type for the `i`th type parameter, if any. */
46+ TypeMention getTypeParameterDefault ( int i ) { none ( ) }
47+
4548 /** Gets a type parameter of this type. */
4649 final TypeParameter getATypeParameter ( ) { result = this .getTypeParameter ( _) }
4750
@@ -87,6 +90,10 @@ class StructType extends StructOrEnumType, TStruct {
8790 result = TTypeParamTypeParameter ( struct .getGenericParamList ( ) .getTypeParam ( i ) )
8891 }
8992
93+ override TypeMention getTypeParameterDefault ( int i ) {
94+ result = struct .getGenericParamList ( ) .getTypeParam ( i ) .getDefaultType ( )
95+ }
96+
9097 override string toString ( ) { result = struct .getName ( ) .getText ( ) }
9198
9299 override Location getLocation ( ) { result = struct .getLocation ( ) }
@@ -108,6 +115,10 @@ class EnumType extends StructOrEnumType, TEnum {
108115 result = TTypeParamTypeParameter ( enum .getGenericParamList ( ) .getTypeParam ( i ) )
109116 }
110117
118+ override TypeMention getTypeParameterDefault ( int i ) {
119+ result = enum .getGenericParamList ( ) .getTypeParam ( i ) .getDefaultType ( )
120+ }
121+
111122 override string toString ( ) { result = enum .getName ( ) .getText ( ) }
112123
113124 override Location getLocation ( ) { result = enum .getLocation ( ) }
@@ -133,6 +144,10 @@ class TraitType extends Type, TTrait {
133144 any ( AssociatedTypeTypeParameter param | param .getTrait ( ) = trait and param .getIndex ( ) = i )
134145 }
135146
147+ override TypeMention getTypeParameterDefault ( int i ) {
148+ result = trait .getGenericParamList ( ) .getTypeParam ( i ) .getDefaultType ( )
149+ }
150+
136151 override string toString ( ) { result = trait .toString ( ) }
137152
138153 override Location getLocation ( ) { result = trait .getLocation ( ) }
0 commit comments