|
|
@ -272,26 +272,32 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax |
|
|
|
return astType; |
|
|
|
return astType; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
AstType astType; |
|
|
|
AstType astType; |
|
|
|
if (type is ITypeDefinition typeDef) { |
|
|
|
switch (type) { |
|
|
|
if (ShowTypeParametersForUnboundTypes) { |
|
|
|
case ITypeDefinition _: |
|
|
|
astType = ConvertTypeHelper(typeDef, typeDef.TypeArguments); |
|
|
|
case UnknownType _: |
|
|
|
} else if (typeDef.TypeParameterCount > 0) { |
|
|
|
if (type.IsUnbound()) { |
|
|
|
// Unbound type
|
|
|
|
if (ShowTypeParametersForUnboundTypes) { |
|
|
|
IType[] typeArguments = new IType[typeDef.TypeParameterCount]; |
|
|
|
astType = ConvertTypeHelper(type, type.TypeArguments); |
|
|
|
for (int i = 0; i < typeArguments.Length; i++) { |
|
|
|
} else { |
|
|
|
typeArguments[i] = SpecialType.UnboundTypeArgument; |
|
|
|
IType[] typeArguments = new IType[type.TypeParameterCount]; |
|
|
|
|
|
|
|
for (int i = 0; i < typeArguments.Length; i++) { |
|
|
|
|
|
|
|
typeArguments[i] = SpecialType.UnboundTypeArgument; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
astType = ConvertTypeHelper(type, typeArguments); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
astType = ConvertTypeHelper(type, EmptyList<IType>.Instance); |
|
|
|
} |
|
|
|
} |
|
|
|
astType = ConvertTypeHelper(typeDef, typeArguments); |
|
|
|
break; |
|
|
|
} else { |
|
|
|
case ParameterizedType pt: |
|
|
|
astType = ConvertTypeHelper(typeDef, EmptyList<IType>.Instance); |
|
|
|
if (AlwaysUseBuiltinTypeNames && pt.IsKnownType(KnownTypeCode.NullableOfT)) { |
|
|
|
} |
|
|
|
return ConvertType(pt.TypeArguments[0]).MakeNullableType(); |
|
|
|
} else if (type is ParameterizedType pt) { |
|
|
|
} |
|
|
|
if (AlwaysUseBuiltinTypeNames && pt.IsKnownType(KnownTypeCode.NullableOfT)) { |
|
|
|
astType = ConvertTypeHelper(pt.GenericType, pt.TypeArguments); |
|
|
|
return ConvertType(pt.TypeArguments[0]).MakeNullableType(); |
|
|
|
break; |
|
|
|
} |
|
|
|
default: |
|
|
|
astType = ConvertTypeHelper(pt.GenericType, pt.TypeArguments); |
|
|
|
astType = MakeSimpleType(type.Name); |
|
|
|
} else { |
|
|
|
break; |
|
|
|
astType = MakeSimpleType(type.Name); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
if (type.Nullability == Nullability.Nullable) { |
|
|
|
if (type.Nullability == Nullability.Nullable) { |
|
|
|
AddTypeAnnotation(astType, type.ChangeNullability(Nullability.Oblivious)); |
|
|
|
AddTypeAnnotation(astType, type.ChangeNullability(Nullability.Oblivious)); |
|
|
|