Skip to content

Commit 5db0223

Browse files
srittauJukkaL
authored andcommitted
Don't crash on reversible dunder methods with extra arguments (#5348)
Closes #5337.
1 parent 46cb764 commit 5db0223

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

mypy/checker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,7 @@ def check_reverse_op_method(self, defn: FuncItem,
10031003
reverse_type = reverse_type.copy_modified(arg_types=[reverse_type.arg_types[0]] * 2,
10041004
arg_kinds=[ARG_POS] * 2,
10051005
arg_names=[reverse_type.arg_names[0], "_"])
1006-
assert len(reverse_type.arg_types) == 2
1006+
assert len(reverse_type.arg_types) >= 2
10071007

10081008
forward_name = nodes.normal_from_reverse_op[reverse_name]
10091009
forward_inst = reverse_type.arg_types[1]

test-data/unit/check-expressions.test

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,10 @@ s = A() < B()
674674
n = A() < B() # E: Incompatible types in assignment (expression has type "str", variable has type "int")
675675
s = object() < B() # E: Unsupported operand types for > ("B" and "object")
676676

677+
[case testReversibleComparisonWithExtraArgument]
678+
class C:
679+
def __lt__(self, o: object, x: str = "") -> int: ...
680+
677681
[case testErrorContextAndBinaryOperators]
678682
import typing
679683
class A:

0 commit comments

Comments
 (0)