Skip to content

Commit 31116c9

Browse files
authored
Don't list extension methods multiple times. (#836)
* Don't list extension methods multiple times. * Removed changes made to ExtensionMethodSet as the issue was fixed in the PythonExtensionBinder instead
1 parent d001118 commit 31116c9

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Src/IronPython/Runtime/Binding/PythonExtensionBinder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public PythonExtensionBinder(PythonBinder binder, ExtensionMethodSet extensionMe
2424
public override MemberGroup GetMember(MemberRequestKind actionKind, Type type, string name) {
2525
var res = base.GetMember(actionKind, type, name);
2626
if (res.Count == 0) {
27-
List<MemberTracker> trackers = new List<MemberTracker>();
27+
HashSet<MemberTracker> trackers = new HashSet<MemberTracker>();
2828

2929
foreach (var method in _extMethodSet.GetExtensionMethods(name)) {
3030
var parameters = method.GetParameters();
@@ -35,11 +35,11 @@ public override MemberGroup GetMember(MemberRequestKind actionKind, Type type, s
3535
var paramType = parameters[0].ParameterType;
3636

3737
if (IsApplicableExtensionMethod(type, paramType)) {
38-
trackers.Add(MemberTracker.FromMemberInfo(method, paramType));
38+
(trackers ??= new HashSet<MemberTracker>()).Add(MemberTracker.FromMemberInfo(method, paramType));
3939
}
4040
}
4141

42-
if (trackers.Count > 0) {
42+
if (trackers is not null) {
4343
return new MemberGroup(trackers.ToArray());
4444
}
4545
}

0 commit comments

Comments
 (0)