checker: c2v fixes (#14332)
							parent
							
								
									9fb8de14dd
								
							
						
					
					
						commit
						6a6c005dc0
					
				| 
						 | 
				
			
			@ -22,7 +22,8 @@ pub fn (mut c Checker) check_types(got ast.Type, expected ast.Type) bool {
 | 
			
		|||
		if expected == ast.voidptr_type {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
		if expected == ast.bool_type && (got.is_any_kind_of_pointer() || got.is_int()) {
 | 
			
		||||
		if (expected == ast.bool_type && (got.is_any_kind_of_pointer() || got.is_int()))
 | 
			
		||||
			|| ((expected.is_any_kind_of_pointer() || expected.is_int()) && got == ast.bool_type) {
 | 
			
		||||
			return true
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -50,9 +51,7 @@ pub fn (mut c Checker) check_types(got ast.Type, expected ast.Type) bool {
 | 
			
		|||
			}
 | 
			
		||||
		} else if got_sym.kind == .array_fixed {
 | 
			
		||||
			// Allow fixed arrays as `&i8` etc
 | 
			
		||||
			if expected_sym.is_number() {
 | 
			
		||||
				return true
 | 
			
		||||
			} else if expected.is_any_kind_of_pointer() {
 | 
			
		||||
			if expected_sym.is_number() || expected.is_any_kind_of_pointer() {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
		} else if expected_sym.kind == .array_fixed {
 | 
			
		||||
| 
						 | 
				
			
			@ -65,6 +64,14 @@ pub fn (mut c Checker) check_types(got ast.Type, expected ast.Type) bool {
 | 
			
		|||
					return true
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else if got_sym.kind == .array {
 | 
			
		||||
			if expected_sym.is_number() || expected.is_any_kind_of_pointer() {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
		} else if expected_sym.kind == .array {
 | 
			
		||||
			if got_sym.is_number() && got.is_any_kind_of_pointer() {
 | 
			
		||||
				return true
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if expected_sym.kind == .enum_ && got_sym.is_number() {
 | 
			
		||||
			// Allow enums as numbers
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -959,10 +959,10 @@ pub fn (mut c Checker) fn_call(mut node ast.CallExpr, mut continue_check &bool)
 | 
			
		|||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				// Allow `[32]i8` as `&i8` etc
 | 
			
		||||
				if (arg_typ_sym.kind == .array_fixed && (param_is_number
 | 
			
		||||
					|| param.typ.is_any_kind_of_pointer()))
 | 
			
		||||
					|| (param_typ_sym.kind == .array_fixed && (typ_is_number
 | 
			
		||||
					|| arg_typ.is_any_kind_of_pointer())) {
 | 
			
		||||
				if ((arg_typ_sym.kind == .array_fixed || arg_typ_sym.kind == .array)
 | 
			
		||||
					&& (param_is_number || param.typ.is_any_kind_of_pointer()))
 | 
			
		||||
					|| ((param_typ_sym.kind == .array_fixed || param_typ_sym.kind == .array)
 | 
			
		||||
					&& (typ_is_number || arg_typ.is_any_kind_of_pointer())) {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				// Allow `int` as `&i8`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue