Possibly fix binop type inferrence
This commit is contained in:
		
							parent
							
								
									a680064b0f
								
							
						
					
					
						commit
						bb7347c97b
					
				| @ -415,6 +415,7 @@ impl Expression { | |||||||
|                 // First find unfiltered parameters to binop
 |                 // First find unfiltered parameters to binop
 | ||||||
|                 let lhs_res = lhs.typecheck(state, &typerefs, HintKind::None); |                 let lhs_res = lhs.typecheck(state, &typerefs, HintKind::None); | ||||||
|                 let rhs_res = rhs.typecheck(state, &typerefs, HintKind::None); |                 let rhs_res = rhs.typecheck(state, &typerefs, HintKind::None); | ||||||
|  |                 dbg!(&lhs_res, &rhs_res, &ret_ty); | ||||||
|                 let lhs_type = state.or_else(lhs_res, TypeKind::Vague(Vague::Unknown), lhs.1); |                 let lhs_type = state.or_else(lhs_res, TypeKind::Vague(Vague::Unknown), lhs.1); | ||||||
|                 let rhs_type = state.or_else(rhs_res, TypeKind::Vague(Vague::Unknown), rhs.1); |                 let rhs_type = state.or_else(rhs_res, TypeKind::Vague(Vague::Unknown), rhs.1); | ||||||
| 
 | 
 | ||||||
| @ -431,6 +432,8 @@ impl Expression { | |||||||
|                     params: (lhs_type.clone(), rhs_type.clone()), |                     params: (lhs_type.clone(), rhs_type.clone()), | ||||||
|                     operator: *op, |                     operator: *op, | ||||||
|                 }); |                 }); | ||||||
|  | 
 | ||||||
|  |                 dbg!(&binops); | ||||||
|                 // dbg!(&lhs_type, &rhs_type, &binops, &ret_ty, &expected_return_ty);
 |                 // dbg!(&lhs_type, &rhs_type, &binops, &ret_ty, &expected_return_ty);
 | ||||||
|                 if let Some(binop) = binops |                 if let Some(binop) = binops | ||||||
|                     .iter() |                     .iter() | ||||||
|  | |||||||
| @ -356,6 +356,12 @@ impl<'outer> ScopeTypeRefs<'outer> { | |||||||
|                         rhs_ref.narrow(&self.from_type(&rhs_widened).unwrap()); |                         rhs_ref.narrow(&self.from_type(&rhs_widened).unwrap()); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|  |                 (TypeRefKind::BinOp(_, lhs1, rhs1), TypeRefKind::BinOp(_, lhs2, rhs2)) => { | ||||||
|  |                     let mut lhs_ref = self.from_type(&lhs1).unwrap(); | ||||||
|  |                     let mut rhs_ref = self.from_type(&rhs1).unwrap(); | ||||||
|  |                     lhs_ref.narrow(&self.from_type(&lhs2).unwrap()); | ||||||
|  |                     rhs_ref.narrow(&self.from_type(&rhs2).unwrap()); | ||||||
|  |                 } | ||||||
|                 _ => {} |                 _ => {} | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user