From 03933708d0a9279c7bba224ffbeb788aff58746e Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 3 Sep 2017 11:45:29 +0200 Subject: [PATCH] Fix #837 - typeof(T) is not fully decompiled --- .../CSharp/Transforms/ReplaceMethodCallsWithOperators.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs b/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs index e36bc998d..5ce5ff332 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs @@ -67,7 +67,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms } switch (method.FullName) { - case "System.Type System.Type::GetTypeFromHandle(System.RuntimeTypeHandle)": + case "System.Type.GetTypeFromHandle": if (arguments.Length == 1) { if (typeHandleOnTypeOfPattern.IsMatch(arguments[0])) { invocationExpression.ReplaceWith(((MemberReferenceExpression)arguments[0]).Target); @@ -75,17 +75,14 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms } } break; - case "System.Reflection.FieldInfo System.Reflection.FieldInfo::GetFieldFromHandle(System.RuntimeFieldHandle)": + case "System.Reflection.FieldInfo.GetFieldFromHandle": if (arguments.Length == 1) { MemberReferenceExpression mre = arguments[0] as MemberReferenceExpression; if (mre != null && mre.MemberName == "FieldHandle" && mre.Target.Annotation() != null) { invocationExpression.ReplaceWith(mre.Target); return; } - } - break; - case "System.Reflection.FieldInfo System.Reflection.FieldInfo::GetFieldFromHandle(System.RuntimeFieldHandle,System.RuntimeTypeHandle)": - if (arguments.Length == 2) { + } else if (arguments.Length == 2) { MemberReferenceExpression mre1 = arguments[0] as MemberReferenceExpression; MemberReferenceExpression mre2 = arguments[1] as MemberReferenceExpression; if (mre1 != null && mre1.MemberName == "FieldHandle" && mre1.Target.Annotation() != null) {