diff --git a/tests/snippets/tuple.py b/tests/snippets/tuple.py index f45aed3c6f..e7662b98dd 100644 --- a/tests/snippets/tuple.py +++ b/tests/snippets/tuple.py @@ -24,3 +24,6 @@ recursive = (recursive_list,) recursive_list.append(recursive) assert repr(recursive) == "([(...)],)" + +assert (None, "", 1).index(1) == 2 +assert 1 in (None, "", 1) diff --git a/vm/src/obj/objiter.rs b/vm/src/obj/objiter.rs index 2ceadda8c7..9fbc3a5d6d 100644 --- a/vm/src/obj/objiter.rs +++ b/vm/src/obj/objiter.rs @@ -77,7 +77,7 @@ fn contains(vm: &mut VirtualMachine, args: PyFuncArgs, iter_type: PyObjectRef) - ); loop { if let Some(element) = get_next_object(vm, iter)? { - let equal = vm.call_method(needle, "__eq__", vec![element.clone()])?; + let equal = vm._eq(needle.clone(), element.clone())?; if objbool::get_value(&equal) { return Ok(vm.new_bool(true)); } else { diff --git a/vm/src/obj/objlist.rs b/vm/src/obj/objlist.rs index 24dcf68ec3..3b7f6c38f3 100644 --- a/vm/src/obj/objlist.rs +++ b/vm/src/obj/objlist.rs @@ -256,7 +256,7 @@ fn list_index(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { required = [(list, Some(vm.ctx.list_type())), (needle, None)] ); for (index, element) in get_elements(list).iter().enumerate() { - let py_equal = vm.call_method(needle, "__eq__", vec![element.clone()])?; + let py_equal = vm._eq(needle.clone(), element.clone())?; if objbool::get_value(&py_equal) { return Ok(vm.context().new_int(index)); } @@ -296,7 +296,7 @@ fn list_contains(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { required = [(list, Some(vm.ctx.list_type())), (needle, None)] ); for element in get_elements(list).iter() { - match vm.call_method(needle, "__eq__", vec![element.clone()]) { + match vm._eq(needle.clone(), element.clone()) { Ok(value) => { if objbool::get_value(&value) { return Ok(vm.new_bool(true)); diff --git a/vm/src/obj/objtuple.rs b/vm/src/obj/objtuple.rs index f9338fb113..80835bac2f 100644 --- a/vm/src/obj/objtuple.rs +++ b/vm/src/obj/objtuple.rs @@ -264,7 +264,7 @@ pub fn tuple_index(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { required = [(tuple, Some(vm.ctx.tuple_type())), (needle, None)] ); for (index, element) in get_elements(tuple).iter().enumerate() { - let py_equal = vm.call_method(needle, "__eq__", vec![element.clone()])?; + let py_equal = vm._eq(needle.clone(), element.clone())?; if objbool::get_value(&py_equal) { return Ok(vm.context().new_int(index)); } @@ -279,7 +279,7 @@ pub fn tuple_contains(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult { required = [(tuple, Some(vm.ctx.tuple_type())), (needle, None)] ); for element in get_elements(tuple).iter() { - match vm.call_method(needle, "__eq__", vec![element.clone()]) { + match vm._eq(needle.clone(), element.clone()) { Ok(value) => { if objbool::get_value(&value) { return Ok(vm.new_bool(true));