cgen: minor fixes
							parent
							
								
									c514f0b672
								
							
						
					
					
						commit
						fe6707b26d
					
				|  | @ -338,7 +338,7 @@ pub fn (a array) reverse() array { | |||
| 		data: vcalloc(a.cap * a.element_size) | ||||
| 	} | ||||
| 	for i in 0..a.len { | ||||
| 		C.memcpy(arr.data + i * arr.element_size, &a[a.len - 1 - i], arr.element_size) | ||||
| 		C.memcpy(arr.data + i * arr.element_size, &a.data[a.len - 1 - i], arr.element_size) | ||||
| 	} | ||||
| 	return arr | ||||
| } | ||||
|  | @ -412,7 +412,7 @@ pub fn (b []byte) hex() string { | |||
| 	mut hex := malloc(b.len * 2 + 1) | ||||
| 	mut dst_i := 0 | ||||
| 	for i in b { | ||||
| 		n0 := i >> 4  | ||||
| 		n0 := i >> 4 | ||||
| 		hex[dst_i++] = if n0 < 10 { n0 + `0` } else { n0 + 87 } | ||||
| 		n1 := i & 0xF | ||||
| 		hex[dst_i++] = if n1 < 10 { n1 + `0` } else { n1 + 87 } | ||||
|  |  | |||
|  | @ -392,10 +392,10 @@ fn (s string) add(a string) string { | |||
| 		str: malloc(new_len + 1) | ||||
| 	} | ||||
| 	for j in 0..s.len { | ||||
| 		res[j] = s[j] | ||||
| 		res.str[j] = s.str[j] | ||||
| 	} | ||||
| 	for j in 0..a.len { | ||||
| 		res[s.len + j] = a[j] | ||||
| 		res.str[s.len + j] = a.str[j] | ||||
| 	} | ||||
| 	res.str[new_len] = `\0` // V strings are not null terminated, but just in case
 | ||||
| 	return res | ||||
|  |  | |||
|  | @ -883,7 +883,7 @@ pub fn (c mut Checker) match_expr(node mut ast.MatchExpr) table.Type { | |||
| } | ||||
| 
 | ||||
| pub fn (c mut Checker) if_expr(node mut ast.IfExpr) table.Type { | ||||
| 	if c.expected_type != 0 { | ||||
| 	if c.expected_type != table.void_type { | ||||
| 		// sym := c.table.get_type_symbol(c.expected_type)
 | ||||
| 		// println('$c.file.path  $node.pos.line_nr IF: checker exp type = ' + sym.name)
 | ||||
| 		node.is_expr = true | ||||
|  |  | |||
|  | @ -1089,7 +1089,7 @@ fn (g mut Gen) ident(node ast.Ident) { | |||
| 		// TODO `is`
 | ||||
| 		match node.info { | ||||
| 			ast.IdentVar { | ||||
| 				if it.is_optional { | ||||
| 				if it.is_optional && !g.is_assign_expr { | ||||
| 					g.write('/*opt*/') | ||||
| 					styp := g.typ(it.typ)[7..] // Option_int => int TODO perf?
 | ||||
| 					g.write('(*($styp*)${name}.data)') | ||||
|  | @ -1103,6 +1103,7 @@ fn (g mut Gen) ident(node ast.Ident) { | |||
| } | ||||
| 
 | ||||
| fn (g mut Gen) if_expr(node ast.IfExpr) { | ||||
| 	// g.writeln('/* if is_expr=$node.is_expr */')
 | ||||
| 	// If expression? Assign the value to a temp var.
 | ||||
| 	// Previously ?: was used, but it's too unreliable.
 | ||||
| 	type_sym := g.table.get_type_symbol(node.typ) | ||||
|  | @ -1240,7 +1241,7 @@ fn (g mut Gen) index_expr(node ast.IndexExpr) { | |||
| 				g.write('))') | ||||
| 			} | ||||
| 		} | ||||
| 		else if sym.kind == .string { | ||||
| 		else if sym.kind == .string && !table.type_is_ptr(node.container_type) { | ||||
| 			g.write('string_at(') | ||||
| 			g.expr(node.left) | ||||
| 			g.write(', ') | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue