From ea001865c968c2d1dcc56b8bc9d9926e39e46743 Mon Sep 17 00:00:00 2001 From: de4dot Date: Mon, 5 Nov 2012 02:42:48 +0100 Subject: [PATCH] Rename FnPtr args, and also null type sigs params --- de4dot.code/renamer/TypeNames.cs | 17 +++++++++++++++++ dot10 | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/de4dot.code/renamer/TypeNames.cs b/de4dot.code/renamer/TypeNames.cs index 22fd2698..0b2a7c0c 100644 --- a/de4dot.code/renamer/TypeNames.cs +++ b/de4dot.code/renamer/TypeNames.cs @@ -25,11 +25,15 @@ namespace de4dot.code.renamer { abstract class TypeNames { protected Dictionary typeNames = new Dictionary(StringComparer.Ordinal); protected NameCreator genericParamNameCreator = new NameCreator("gparam_"); + protected NameCreator fnPtrNameCreator = new NameCreator("fnptr_"); + protected NameCreator unknownNameCreator = new NameCreator("unknown_"); protected Dictionary fullNameToShortName; protected Dictionary fullNameToShortNamePrefix; public string create(TypeSig typeRef) { typeRef = typeRef.RemovePinnedAndModifiers(); + if (typeRef == null) + return unknownNameCreator.create(); var gis = typeRef as GenericInstSig; if (gis != null) { if (gis.FullName == "System.Nullable`1" && @@ -41,6 +45,8 @@ namespace de4dot.code.renamer { string prefix = getPrefix(typeRef); var elementType = typeRef.ScopeType; + if (elementType == null && isFnPtrSig(typeRef)) + return fnPtrNameCreator.create(); if (isGenericParam(elementType)) return genericParamNameCreator.create(); @@ -65,6 +71,15 @@ namespace de4dot.code.renamer { return addTypeName(typeFullName, shortName, prefix).create(); } + bool isFnPtrSig(TypeSig sig) { + while (sig != null) { + if (sig is FnPtrSig) + return true; + sig = sig.Next; + } + return false; + } + bool isGenericParam(ITypeDefOrRef tdr) { var ts = tdr as TypeSpec; if (ts == null) @@ -106,6 +121,8 @@ namespace de4dot.code.renamer { typeNames[pair.Key] = pair.Value.clone(); } genericParamNameCreator.merge(other.genericParamNameCreator); + fnPtrNameCreator.merge(other.fnPtrNameCreator); + unknownNameCreator.merge(other.unknownNameCreator); return this; } diff --git a/dot10 b/dot10 index ebd41734..14a78f2a 160000 --- a/dot10 +++ b/dot10 @@ -1 +1 @@ -Subproject commit ebd41734e89ab48d63f317958e8a5741aad1f431 +Subproject commit 14a78f2ac7cf2460afede0dc63f867ec841c82f7