diff --git a/mypyc/irbuild/ll_builder.py b/mypyc/irbuild/ll_builder.py index 79ad4cc62822..336123eb377c 100644 --- a/mypyc/irbuild/ll_builder.py +++ b/mypyc/irbuild/ll_builder.py @@ -2260,7 +2260,11 @@ def builtin_len(self, val: Value, line: int, use_pyssize_t: bool = False) -> Val """ typ = val.type size_value = None - if is_list_rprimitive(typ) or is_tuple_rprimitive(typ) or is_bytes_rprimitive(typ): + if isinstance(typ, RTuple): + return Integer( + len(typ.types), c_pyssize_t_rprimitive if use_pyssize_t else short_int_rprimitive + ) + elif is_list_rprimitive(typ) or is_tuple_rprimitive(typ) or is_bytes_rprimitive(typ): size_value = self.primitive_op(var_object_size, [val], line) elif is_set_rprimitive(typ) or is_frozenset_rprimitive(typ): elem_address = self.add(GetElementPtr(val, PySetObject, "used"))