diff --git a/vm/src/vm.rs b/vm/src/vm.rs index 71e754b96..ba854e8c6 100644 --- a/vm/src/vm.rs +++ b/vm/src/vm.rs @@ -603,10 +603,13 @@ impl VirtualMachine { self.invoke(&function, args.insert(object.clone())) } else if let Some(PyBuiltinFunction { ref value }) = func_ref.payload() { value(self, args) - } else { - // TODO: is it safe to just invoke __call__ otherwise? - vm_trace!("invoke __call__ for: {:?}", &func_ref.payload); + } else if self.is_callable(&func_ref) { self.call_method(&func_ref, "__call__", args) + } else { + Err(self.new_type_error(format!( + "'{}' object is not callable", + func_ref.class().name + ))) } }