cgen: fixed array index for translated code
							parent
							
								
									725b472d37
								
							
						
					
					
						commit
						92bfd9b353
					
				|  | @ -189,6 +189,7 @@ fn (mut g Gen) gen_assign_stmt(node_ ast.AssignStmt) { | |||
| 		is_fixed_array_var := unaliased_right_sym.kind == .array_fixed && val !is ast.ArrayInit | ||||
| 			&& (val in [ast.Ident, ast.IndexExpr, ast.CallExpr, ast.SelectorExpr] | ||||
| 			|| (val is ast.CastExpr && (val as ast.CastExpr).expr !is ast.ArrayInit)) | ||||
| 			&& !g.pref.translated | ||||
| 		g.is_assign_lhs = true | ||||
| 		g.assign_op = node.op | ||||
| 		if val_type.has_flag(.optional) { | ||||
|  | @ -403,7 +404,7 @@ fn (mut g Gen) gen_assign_stmt(node_ ast.AssignStmt) { | |||
| 			} | ||||
| 			g.is_shared = var_type.has_flag(.shared_f) | ||||
| 			if !cloned { | ||||
| 				if is_fixed_array_var && !g.pref.translated { | ||||
| 				if is_fixed_array_var { | ||||
| 					// TODO Instead of the translated check, check if it's a pointer already
 | ||||
| 					// and don't generate memcpy &
 | ||||
| 					typ_str := g.typ(val_type).trim('*') | ||||
|  |  | |||
|  | @ -336,7 +336,7 @@ fn (mut g Gen) index_of_fixed_array(node ast.IndexExpr, sym ast.TypeSymbol) { | |||
| 	} | ||||
| 	g.write('[') | ||||
| 	direct := g.fn_decl != 0 && g.fn_decl.is_direct_arr | ||||
| 	if direct || node.index is ast.IntegerLiteral { | ||||
| 	if (direct || node.index is ast.IntegerLiteral) || g.pref.translated { | ||||
| 		g.expr(node.index) | ||||
| 	} else { | ||||
| 		// bounds check
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue