Fix binops not using hint properly
This commit is contained in:
		
							parent
							
								
									ef427f5e58
								
							
						
					
					
						commit
						8bbee5eb41
					
				| @ -385,10 +385,12 @@ impl Builder { | |||||||
|                 } |                 } | ||||||
|                 Instr::FunctionCall(fun, params) => { |                 Instr::FunctionCall(fun, params) => { | ||||||
|                     let param_types = self.function_data(&fun).params; |                     let param_types = self.function_data(&fun).params; | ||||||
|  |                     dbg!(¶ms, ¶m_types); | ||||||
|                     if param_types.len() != params.len() { |                     if param_types.len() != params.len() { | ||||||
|                         return Err(()); // TODO error: invalid amount of params
 |                         return Err(()); // TODO error: invalid amount of params
 | ||||||
|                     } |                     } | ||||||
|                     for (a, b) in param_types.iter().zip(params) { |                     for (a, b) in param_types.iter().zip(params) { | ||||||
|  |                         dbg!(b.get_type(&self)?); | ||||||
|                         if *a != b.get_type(&self)? { |                         if *a != b.get_type(&self)? { | ||||||
|                             return Err(()); // TODO error: params do not match
 |                             return Err(()); // TODO error: params do not match
 | ||||||
|                         } |                         } | ||||||
|  | |||||||
| @ -408,7 +408,7 @@ impl Expression { | |||||||
|             ExprKind::BinOp(op, lhs, rhs) => { |             ExprKind::BinOp(op, lhs, rhs) => { | ||||||
|                 // TODO make sure lhs and rhs can actually do this binary
 |                 // TODO make sure lhs and rhs can actually do this binary
 | ||||||
|                 // operation once relevant
 |                 // operation once relevant
 | ||||||
|                 let lhs_res = lhs.typecheck(state, &typerefs, None); |                 let lhs_res = lhs.typecheck(state, &typerefs, hint_t); | ||||||
|                 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_res = rhs.typecheck(state, &typerefs, Some(&lhs_type)); |                 let rhs_res = rhs.typecheck(state, &typerefs, Some(&lhs_type)); | ||||||
|                 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); | ||||||
|  | |||||||
| @ -1,3 +1,5 @@ | |||||||
|  | struct SDL_Thing {} | ||||||
|  | 
 | ||||||
| extern fn SDL_malloc(size: u64) -> *SDL_Thing; | extern fn SDL_malloc(size: u64) -> *SDL_Thing; | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user