◐ Shell
reader mode source ↗
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ details about the cause of the failure
- Fix non-delegate types incorrectly appearing as callable.
- Indexers can now be used with interface objects
- Fixed a bug where indexers could not be used if they were inherited

## [2.5.0][] - 2020-06-14

Expand Down
6 changes: 5 additions & 1 deletion src/runtime/slots/mp_length.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public static MethodInfo Method
}
}

public static bool CanAssgin(Type clrType)
{
if (typeof(ICollection).IsAssignableFrom(clrType))
{
Expand All @@ -36,6 +36,10 @@ public static bool CanAssgin(Type clrType)
{
return true;
}
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion src/runtime/typemanager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ internal static IntPtr CreateType(ManagedType impl, Type clrType)
InitializeSlots(type, impl.GetType(), slotsHolder);

if (Marshal.ReadIntPtr(type, TypeOffset.mp_length) == IntPtr.Zero
&& mp_length_slot.CanAssgin(clrType))
{
InitializeSlot(type, TypeOffset.mp_length, mp_length_slot.Method, slotsHolder);
}
Expand Down
14 changes: 14 additions & 0 deletions src/tests/test_mp_length.py
Original file line number Diff line number Diff line change
@@ -47,3 +47,17 @@ def test_custom_generic_collection_explicit___len__():
s.Add(1)
s.Add(10)
assert len(s) == 2
Toggle all file notes Toggle all file annotations