@@ -2151,13 +2151,16 @@ def gen_func_ir(self,
21512151 func_reg = self .instantiate_callable_class (fn_info )
21522152 else :
21532153 assert isinstance (fn_info .fitem , FuncDef )
2154+ func_decl = self .mapper .func_to_decl [fn_info .fitem ]
21542155 if fn_info .is_decorated :
21552156 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 )
21572160 func_ir = FuncIR (func_decl , blocks , env , fn_info .fitem .line ,
21582161 traceback_name = fn_info .fitem .name )
21592162 else :
2160- func_ir = FuncIR (self . mapper . func_to_decl [ fn_info . fitem ] , blocks , env ,
2163+ func_ir = FuncIR (func_decl , blocks , env ,
21612164 fn_info .fitem .line , traceback_name = fn_info .fitem .name )
21622165 return (func_ir , func_reg )
21632166
@@ -3348,7 +3351,12 @@ def translate_method_call(self, expr: CallExpr, callee: MemberExpr) -> Value:
33483351 if self .is_native_ref_expr (callee ):
33493352 # Call to module-level native function or such
33503353 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+ ):
33523360 # Call a method via the *class*
33533361 assert isinstance (callee .expr .node , TypeInfo )
33543362 ir = self .mapper .type_to_ir [callee .expr .node ]
0 commit comments