Fix value transfer in structs and arrays
This commit is contained in:
parent
9a4f0dc5d8
commit
8abee593f0
@ -415,12 +415,11 @@ impl mir::Expression {
|
||||
}
|
||||
}
|
||||
mir::ExprKind::Indexed(expression, val_t, idx_expr) => {
|
||||
dbg!(&expression, &idx_expr);
|
||||
let array = expression
|
||||
.codegen(scope, state)
|
||||
.codegen(scope, &state.load(true))
|
||||
.expect("array returned none!");
|
||||
let idx = idx_expr
|
||||
.codegen(scope, state)
|
||||
.codegen(scope, &state.load(true))
|
||||
.expect("index returned none!");
|
||||
|
||||
let mut ptr = scope
|
||||
@ -488,6 +487,8 @@ impl mir::Expression {
|
||||
let TypeDefinitionKind::Struct(struct_ty) = scope.get_typedef(&name).unwrap();
|
||||
let idx = struct_ty.find_index(field).unwrap();
|
||||
|
||||
dbg!(&scope.context);
|
||||
dbg!(&struct_val);
|
||||
let mut value = scope
|
||||
.block
|
||||
.build(Instr::GetStructElemPtr(struct_val, idx as u32))
|
||||
|
@ -1,13 +1,14 @@
|
||||
// Arithmetic, function calls and imports!
|
||||
|
||||
fn array() -> [u16; 4] {
|
||||
return [10, 15, 7, 9];
|
||||
fn array() -> [[[u16; 4];1];1] {
|
||||
return [[[10, 15, 7, 9]]];
|
||||
}
|
||||
|
||||
fn main() -> u16 {
|
||||
let mut list = array();
|
||||
|
||||
list[0][0][2] = 19;
|
||||
let a = 1;
|
||||
|
||||
return list[a + 1];
|
||||
return list[0][0][a + 1];
|
||||
}
|
||||
|
@ -19,5 +19,5 @@ fn main() -> u32 {
|
||||
let mut b = value[val1];
|
||||
b.second[2] = 99;
|
||||
|
||||
return value[0].second[2];
|
||||
return value[val1].second[2];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user