Skip to content

Commit 84acab3

Browse files
committed
fix
1 parent 30c4a30 commit 84acab3

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

mypyc/irbuild/specialize.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
is_int64_rprimitive,
6767
is_int_rprimitive,
6868
is_list_rprimitive,
69+
is_str_rprimitive,
6970
is_uint8_rprimitive,
7071
list_rprimitive,
7172
set_rprimitive,
@@ -1011,12 +1012,18 @@ def translate_ord(builder: IRBuilder, expr: CallExpr, callee: RefExpr) -> Value
10111012
def specialize_int_to_bytes(builder: IRBuilder, expr: CallExpr, callee: RefExpr) -> Value | None:
10121013
# int.to_bytes(length, byteorder, signed=False)
10131014
# args: [self, length, byteorder, (optional) signed]
1014-
if len(expr.args) < 3 or len(expr.args) > 4:
1015+
if len(expr.args) == 2:
1016+
signed_arg = builder.false()
1017+
elif len(expr.args) == 3:
1018+
signed_arg = builder.accept(expr.args[2])
1019+
else:
1020+
return None
1021+
if not isinstance(callee, MemberExpr) or not is_str_rprimitive(builder.node_type(byteorder_expr)):
10151022
return None
1016-
self_arg = builder.accept(expr.args[0])
1017-
length_arg = builder.accept(expr.args[1])
1018-
byteorder_expr = expr.args[2]
1019-
signed_arg = builder.accept(expr.args[3]) if len(expr.args) == 4 else builder.false()
1023+
1024+
self_arg = builder.accept(callee.expr)
1025+
length_arg = builder.accept(expr.args[0])
1026+
byteorder_expr = expr.args[1]
10201027
if isinstance(byteorder_expr, StrExpr):
10211028
if byteorder_expr.value == "little":
10221029
return builder.call_c(

0 commit comments

Comments
 (0)