@@ -2151,13 +2151,16 @@ def gen_func_ir(self,
2151
2151
func_reg = self .instantiate_callable_class (fn_info )
2152
2152
else :
2153
2153
assert isinstance (fn_info .fitem , FuncDef )
2154
+ func_decl = self .mapper .func_to_decl [fn_info .fitem ]
2154
2155
if fn_info .is_decorated :
2155
2156
class_name = None if cdef is None else cdef .name
2156
- func_decl = FuncDecl (fn_info .name , class_name , self .module_name , sig )
2157
+ func_decl = FuncDecl (fn_info .name , class_name , self .module_name , sig ,
2158
+ func_decl .kind ,
2159
+ func_decl .is_prop_getter , func_decl .is_prop_setter )
2157
2160
func_ir = FuncIR (func_decl , blocks , env , fn_info .fitem .line ,
2158
2161
traceback_name = fn_info .fitem .name )
2159
2162
else :
2160
- func_ir = FuncIR (self . mapper . func_to_decl [ fn_info . fitem ] , blocks , env ,
2163
+ func_ir = FuncIR (func_decl , blocks , env ,
2161
2164
fn_info .fitem .line , traceback_name = fn_info .fitem .name )
2162
2165
return (func_ir , func_reg )
2163
2166
@@ -3348,7 +3351,12 @@ def translate_method_call(self, expr: CallExpr, callee: MemberExpr) -> Value:
3348
3351
if self .is_native_ref_expr (callee ):
3349
3352
# Call to module-level native function or such
3350
3353
return self .translate_call (expr , callee )
3351
- elif isinstance (callee .expr , RefExpr ) and callee .expr .node in self .mapper .type_to_ir :
3354
+ elif (
3355
+ isinstance (callee .expr , RefExpr )
3356
+ and isinstance (callee .expr .node , TypeInfo )
3357
+ and callee .expr .node in self .mapper .type_to_ir
3358
+ and self .mapper .type_to_ir [callee .expr .node ].has_method (callee .name )
3359
+ ):
3352
3360
# Call a method via the *class*
3353
3361
assert isinstance (callee .expr .node , TypeInfo )
3354
3362
ir = self .mapper .type_to_ir [callee .expr .node ]
0 commit comments