Skip to content

Commit d135dae

Browse files
Apply suggestions from Claude code review
1 parent 91d7a76 commit d135dae

6 files changed

Lines changed: 14 additions & 5 deletions

File tree

ICSharpCode.Decompiler.Tests/TestCases/Pretty/ExtensionEverything.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,14 @@ public static void TestExtensionProperty()
9090
Point point = new Point(3, 4);
9191
Console.WriteLine(point.X);
9292
Console.WriteLine(point.Y);
93+
// TODO implement use-site transformation
9394
//Console.WriteLine(point.Magnitude);
9495
}
9596

9697
public static void TestExtensionMethods()
9798
{
9899
List<string> collection = new List<string>();
100+
// TODO implement use-site transformation
99101
//Console.WriteLine(collection.IsEmpty);
100102
collection.AddIfNotNull("Hello");
101103
collection.AddIfNotNull(null);

ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -955,8 +955,12 @@ MethodDefinitionHandle FindImplementations(MethodDefinitionHandleCollection meth
955955
foreach (var h in methods)
956956
{
957957
var m = metadata.GetMethodDefinition(h);
958-
if (metadata.StringComparer.Equals(m.Name, name))
959-
return h;
958+
if (!metadata.StringComparer.Equals(m.Name, name))
959+
continue;
960+
961+
// TODO : use SignatureBlobComparer to ensure that the correct method is resolved
962+
963+
return h;
960964
}
961965
return default;
962966
}

ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
using System;
2020
using System.Collections.Generic;
21+
using System.Diagnostics;
2122
using System.Linq;
2223
using System.Reflection.Metadata;
2324

@@ -878,7 +879,8 @@ public static IType AsParameterizedType(this ITypeDefinition td)
878879
{
879880
throw new ArgumentNullException(nameof(member));
880881
}
881-
var td = member.DeclaringTypeDefinition!;
882+
var td = member.DeclaringTypeDefinition;
883+
Debug.Assert(td != null, "IMember.DeclaringTypeDefinition should never be null");
882884
return td.DeclaringTypeDefinition?.ExtensionInfo ?? td.DeclaringTypeDefinition?.DeclaringTypeDefinition?.ExtensionInfo;
883885
}
884886
}

ILSpy/TreeNodes/ExtensionTreeNode.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ private ITypeDefinition GetTypeDefinition()
6767
protected override void LoadChildren()
6868
{
6969
var extensionInfo = ContainerTypeDefinition.ExtensionInfo;
70-
var subst = new TypeParameterSubstitution(TypeParameters, null);
7170

7271
foreach (var property in extensionInfo.GetMembersOfGroup(MarkerMethod).OfType<IProperty>().OrderBy(p => p.Name, NaturalStringComparer.Instance))
7372
{

ILSpy/TreeNodes/PropertyTreeNode.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Diagnostics;
2021
using System.Reflection.Metadata;
2122
using System.Windows.Media;
2223

@@ -69,6 +70,7 @@ public static object GetText(IProperty property, Language language, bool include
6970
public static ImageSource GetIcon(IProperty property)
7071
{
7172
IMethod accessor = property.Getter ?? property.Setter;
73+
Debug.Assert(accessor != null, "Property must have at least one accessor");
7274
bool isExtension = property.ResolveExtensionInfo()?.InfoOfExtensionMember((IMethod)accessor.MemberDefinition) != null;
7375
return Images.GetIcon(property.IsIndexer ? MemberIcon.Indexer : MemberIcon.Property,
7476
Images.GetOverlayIcon(property.Accessibility), property.IsStatic, isExtension);

ILSpy/TreeNodes/TypeTreeNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ protected override void LoadChildren()
9797
var extensionInfo = TypeDefinition.ExtensionInfo;
9898
if (extensionInfo != null)
9999
{
100-
foreach (var extensionGroup in TypeDefinition.ExtensionInfo?.ExtensionGroups ?? [])
100+
foreach (var extensionGroup in extensionInfo.ExtensionGroups)
101101
{
102102
this.Children.Add(new ExtensionTreeNode(TypeDefinition, extensionGroup, ParentAssemblyNode));
103103
}

0 commit comments

Comments
 (0)