From 355a039b59f137abf1bb7ca1fcf2a068c3a5de08 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 2 Mar 2025 22:47:30 +0100 Subject: [PATCH] Sightly improve variable naming of known types such as EventArgs and Exceptions --- .../TestCases/ILPretty/GuessAccessors.cs | 12 +++---- .../TestCases/Pretty/ExceptionHandling.cs | 12 +++---- .../IL/Transforms/AssignVariableNames.cs | 34 +++++++++---------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/GuessAccessors.cs b/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/GuessAccessors.cs index 423ad4119..69ebf0db9 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/GuessAccessors.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/ILPretty/GuessAccessors.cs @@ -50,9 +50,9 @@ namespace ClassLibrary1 //IL_00e1: Expected O, but got Unknown //IL_00e1: Expected O, but got Unknown UnknownGenericClass val = new UnknownGenericClass(); - UnknownEventArgs val2 = (val.UnknownProperty = val.UnknownProperty); + UnknownEventArgs e = (val.UnknownProperty = val.UnknownProperty); List list = new List { - val[((object)val2).GetHashCode()] ?? "", + val[((object)e).GetHashCode()] ?? "", val.NotProperty, val.get_NotPropertyWithGeneric(42), val[42], @@ -61,10 +61,10 @@ namespace ClassLibrary1 }; val.OnEvent += Instance_OnEvent; val.OnEvent -= Instance_OnEvent; - UnknownEventArgs val3 = val[(UnknownEventArgs)null]; - val[new UnknownEventArgs()] = val3; - UnknownEventArgs val4 = val[new UnknownEventArgs(), new UnknownEventArgs()]; - val[new UnknownEventArgs(), new UnknownEventArgs()] = val4; + UnknownEventArgs e2 = val[(UnknownEventArgs)null]; + val[new UnknownEventArgs()] = e2; + UnknownEventArgs e3 = val[new UnknownEventArgs(), new UnknownEventArgs()]; + val[new UnknownEventArgs(), new UnknownEventArgs()] = e3; } public void MethodUnknownStatic() diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExceptionHandling.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExceptionHandling.cs index 82aba9ab6..2e47643f0 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExceptionHandling.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExceptionHandling.cs @@ -418,9 +418,9 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { Console.WriteLine(input); } - catch (TException val) + catch (TException ex) { - Console.WriteLine(val.Message); + Console.WriteLine(ex.Message); throw; } } @@ -452,9 +452,9 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { Console.WriteLine(input); } - catch (TException val) when (val.Message.Contains("Test")) + catch (TException ex) when (ex.Message.Contains("Test")) { - Console.WriteLine(val.Message); + Console.WriteLine(ex.Message); throw; } } @@ -465,9 +465,9 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { Console.WriteLine(input); } - catch (TException val) when (val.Message.Contains("Test")) + catch (TException ex) when (ex.Message.Contains("Test")) { - Console.WriteLine("{0} {1}", val, val.ToString()); + Console.WriteLine("{0} {1}", ex, ex.ToString()); } } diff --git a/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs b/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs index e0029d00e..dbe8c5dd4 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs @@ -729,22 +729,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms type = NullableType.GetUnderlyingType(((TypeWithElementType)type).ElementType); } - string name = type.Kind switch { - TypeKind.Array => "array", - TypeKind.Pointer => "ptr", - TypeKind.TypeParameter => "val", - TypeKind.Unknown => "val", - TypeKind.Dynamic => "val", - TypeKind.ByReference => "reference", - TypeKind.Tuple => "tuple", - TypeKind.NInt => "num", - TypeKind.NUInt => "num", - _ => null - }; - if (name != null) - { - return name; - } + string name; if (type.IsAnonymousType()) { name = "anon"; @@ -753,13 +738,28 @@ namespace ICSharpCode.Decompiler.IL.Transforms { name = "ex"; } + else if (type.Name.EndsWith("EventArgs", StringComparison.Ordinal)) + { + name = "e"; + } else if (type.IsCSharpNativeIntegerType()) { name = "num"; } else if (!typeNameToVariableNameDict.TryGetValue(type.FullName, out name)) { - name = type.Name; + name = type.Kind switch { + TypeKind.Array => "array", + TypeKind.Pointer => "ptr", + TypeKind.TypeParameter => "val", + TypeKind.Unknown => "val", + TypeKind.Dynamic => "val", + TypeKind.ByReference => "reference", + TypeKind.Tuple => "tuple", + TypeKind.NInt => "num", + TypeKind.NUInt => "num", + _ => type.Name + }; // remove the 'I' for interfaces if (name.Length >= 3 && name[0] == 'I' && char.IsUpper(name[1]) && char.IsLower(name[2])) name = name.Substring(1);