def rec(self, expr, prec, type_context=None, needed_dtype=None): if needed_dtype is None: return RecursiveMapper.rec(self, expr, prec, type_context) return self.wrap_in_typecast( self.infer_type(expr), needed_dtype, RecursiveMapper.rec(self, expr, PREC_NONE, type_context))
def rec(self, expr, type_context=None, needed_dtype=None): if needed_dtype is None: return RecursiveMapper.rec(self, expr, type_context) return self.wrap_in_typecast_lazy( lambda: self.infer_type(expr), needed_dtype, RecursiveMapper.rec(self, expr, type_context))
def rec(self, expr, prec, type_context=None, needed_dtype=None): if needed_dtype is None: return RecursiveMapper.rec(self, expr, prec, type_context) actual_type = self.infer_type(expr) if actual_type.kind == "c" and needed_dtype.kind == "c" and actual_type != needed_dtype: result = RecursiveMapper.rec(self, expr, PREC_NONE, type_context) return "%s_cast(%s)" % (self.complex_type_name(needed_dtype), result) elif actual_type.kind != "c" and needed_dtype.kind == "c": result = RecursiveMapper.rec(self, expr, PREC_NONE, type_context) return "%s_fromreal(%s)" % (self.complex_type_name(needed_dtype), result) else: return RecursiveMapper.rec(self, expr, prec, type_context)