Skip to content

Commit 01e552d

Browse files
Update ll_builder.py
1 parent 38be1e6 commit 01e552d

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

mypyc/irbuild/ll_builder.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,8 +1238,9 @@ def gen_method_call(
12381238
if isinstance(base.type, RInstance):
12391239
name = name if base.type.class_ir.is_ext_class else fast_name
12401240

1241-
def build_args() -> list[Value]:
1242-
decl = base.type.class_ir.method_decl(name)
1241+
def build_args(typ: RInstance) -> list[Value]:
1242+
nonlocal arg_kinds, arg_names
1243+
decl = typ.class_ir.method_decl(name)
12431244
if arg_kinds is None:
12441245
assert arg_names is None, "arg_kinds not present but arg_names is"
12451246
arg_kinds = [ARG_POS for _ in arg_values]
@@ -1257,7 +1258,7 @@ def build_args() -> list[Value]:
12571258
base.type.class_ir.is_ext_class or base.type.class_ir.has_method(fast_name)
12581259
) and not base.type.class_ir.builtin_base:
12591260
if base.type.class_ir.has_method(name):
1260-
arg_values = build_args()
1261+
arg_values = build_args(base.type)
12611262
return self.add(MethodCall(base, name, arg_values, line))
12621263
elif base.type.class_ir.has_attr(name):
12631264
function = self.add(GetAttr(base, name, line))
@@ -1268,7 +1269,7 @@ def build_args() -> list[Value]:
12681269
# does this really work tho? must check more. why wasnt this done before? what do all the if checks do above?
12691270
decl = base.type.class_ir.method_decl(name)
12701271
# should this be a MethodCall?
1271-
arg_values = build_args()
1272+
arg_values = build_args(base.type)
12721273
return self.call(decl, arg_values, [ARG_POS] * len(arg_values), [None], line)
12731274

12741275
elif isinstance(base.type, RUnion):

0 commit comments

Comments
 (0)