Browse Source

do not use primitive type names in TreeNodes; fixes #183

pull/143/merge
Siegfried Pammer 14 years ago
parent
commit
111a6ca292
  1. 72
      ICSharpCode.Decompiler/Ast/AstBuilder.cs
  2. 14
      ILSpy/CSharpLanguage.cs
  3. 7
      ILSpy/Language.cs
  4. 2
      ILSpy/TreeNodes/TypeTreeNode.cs

72
ICSharpCode.Decompiler/Ast/AstBuilder.cs

@ -28,7 +28,8 @@ namespace ICSharpCode.Decompiler.Ast @@ -28,7 +28,8 @@ namespace ICSharpCode.Decompiler.Ast
{
None = 0,
IncludeNamespace = 1,
IncludeTypeParameterDefinitions = 2
IncludeTypeParameterDefinitions = 2,
DoNotUsePrimitiveTypeNames = 4
}
public class AstBuilder : ICodeMappings
@ -462,39 +463,42 @@ namespace ICSharpCode.Decompiler.Ast @@ -462,39 +463,42 @@ namespace ICSharpCode.Decompiler.Ast
return new PrimitiveType("dynamic");
} else {
if (ns == "System") {
switch (name) {
case "SByte":
return new PrimitiveType("sbyte");
case "Int16":
return new PrimitiveType("short");
case "Int32":
return new PrimitiveType("int");
case "Int64":
return new PrimitiveType("long");
case "Byte":
return new PrimitiveType("byte");
case "UInt16":
return new PrimitiveType("ushort");
case "UInt32":
return new PrimitiveType("uint");
case "UInt64":
return new PrimitiveType("ulong");
case "String":
return new PrimitiveType("string");
case "Single":
return new PrimitiveType("float");
case "Double":
return new PrimitiveType("double");
case "Decimal":
return new PrimitiveType("decimal");
case "Char":
return new PrimitiveType("char");
case "Boolean":
return new PrimitiveType("bool");
case "Void":
return new PrimitiveType("void");
case "Object":
return new PrimitiveType("object");
if ((options & ConvertTypeOptions.DoNotUsePrimitiveTypeNames)
!= ConvertTypeOptions.DoNotUsePrimitiveTypeNames) {
switch (name) {
case "SByte":
return new PrimitiveType("sbyte");
case "Int16":
return new PrimitiveType("short");
case "Int32":
return new PrimitiveType("int");
case "Int64":
return new PrimitiveType("long");
case "Byte":
return new PrimitiveType("byte");
case "UInt16":
return new PrimitiveType("ushort");
case "UInt32":
return new PrimitiveType("uint");
case "UInt64":
return new PrimitiveType("ulong");
case "String":
return new PrimitiveType("string");
case "Single":
return new PrimitiveType("float");
case "Double":
return new PrimitiveType("double");
case "Decimal":
return new PrimitiveType("decimal");
case "Char":
return new PrimitiveType("char");
case "Boolean":
return new PrimitiveType("bool");
case "Void":
return new PrimitiveType("void");
case "Object":
return new PrimitiveType("object");
}
}
}

14
ILSpy/CSharpLanguage.cs

@ -508,6 +508,12 @@ namespace ICSharpCode.ILSpy @@ -508,6 +508,12 @@ namespace ICSharpCode.ILSpy
ConvertTypeOptions options = ConvertTypeOptions.IncludeTypeParameterDefinitions;
if (includeNamespace)
options |= ConvertTypeOptions.IncludeNamespace;
return TypeToString(options, type, typeAttributes);
}
string TypeToString(ConvertTypeOptions options, TypeReference type, ICustomAttributeProvider typeAttributes = null)
{
AstType astType = AstBuilder.ConvertType(type, typeAttributes, options);
StringWriter w = new StringWriter();
@ -556,6 +562,14 @@ namespace ICSharpCode.ILSpy @@ -556,6 +562,14 @@ namespace ICSharpCode.ILSpy
} else
return property.Name;
}
public override string FormatTypeName(TypeDefinition type)
{
if (type == null)
throw new ArgumentNullException("type");
return TypeToString(ConvertTypeOptions.DoNotUsePrimitiveTypeNames | ConvertTypeOptions.IncludeTypeParameterDefinitions, type);
}
public override bool ShowMember(MemberReference member)
{

7
ILSpy/Language.cs

@ -127,6 +127,13 @@ namespace ICSharpCode.ILSpy @@ -127,6 +127,13 @@ namespace ICSharpCode.ILSpy
throw new ArgumentNullException("property");
return property.Name;
}
public virtual string FormatTypeName(TypeDefinition type)
{
if (type == null)
throw new ArgumentNullException("type");
return type.Name;
}
/// <summary>
/// Used for WPF keyboard navigation.

2
ILSpy/TreeNodes/TypeTreeNode.cs

@ -59,7 +59,7 @@ namespace ICSharpCode.ILSpy.TreeNodes @@ -59,7 +59,7 @@ namespace ICSharpCode.ILSpy.TreeNodes
}
public override object Text {
get { return HighlightSearchMatch(this.Language.TypeToString(type, includeNamespace: false)); }
get { return HighlightSearchMatch(this.Language.FormatTypeName(type)); }
}
public bool IsPublicAPI {

Loading…
Cancel
Save