Handle coercion on binary operator RHS

This commit is contained in:
Laurențiu Nicola 2021-08-21 17:54:45 +03:00
parent 3f4c515223
commit 104d6124d7
2 changed files with 20 additions and 1 deletions

View file

@ -679,7 +679,8 @@ impl<'a> InferenceContext<'a> {
let lhs_ty = self.infer_expr(*lhs, &lhs_expectation);
let lhs_ty = self.resolve_ty_shallow(&lhs_ty);
let rhs_expectation = op::binary_op_rhs_expectation(*op, lhs_ty.clone());
let rhs_ty = self.infer_expr(*rhs, &Expectation::has_type(rhs_expectation));
let rhs_ty =
self.infer_expr_coerce(*rhs, &Expectation::has_type(rhs_expectation));
let rhs_ty = self.resolve_ty_shallow(&rhs_ty);
let ret = op::binary_op_return_ty(*op, lhs_ty.clone(), rhs_ty.clone());