add broken attempt to get list.set to use list.replace under the hood

This commit is contained in:
Brendan Hansknecht 2022-02-27 01:21:02 -08:00
parent d9e9c28889
commit 4d42d81c63

View file

@ -2408,6 +2408,7 @@ fn list_set(symbol: Symbol, var_store: &mut VarStore) -> Def {
let bool_var = var_store.fresh(); let bool_var = var_store.fresh();
let len_var = var_store.fresh(); let len_var = var_store.fresh();
let elem_var = var_store.fresh(); let elem_var = var_store.fresh();
let replace_record_var = var_store.fresh();
let list_arg_var = var_store.fresh(); // Uniqueness type Attr differs between let list_arg_var = var_store.fresh(); // Uniqueness type Attr differs between
let list_ret_var = var_store.fresh(); // the arg list and the returned list let list_ret_var = var_store.fresh(); // the arg list and the returned list
@ -2437,18 +2438,24 @@ fn list_set(symbol: Symbol, var_store: &mut VarStore) -> Def {
}, },
), ),
// then-branch // then-branch
no_region( no_region(Access {
// List.setUnsafe list index elem record_var: replace_record_var,
RunLowLevel { ext_var: var_store.fresh(),
op: LowLevel::ListSet, field_var: list_ret_var,
args: vec![ loc_expr: Box::new(no_region(
(list_arg_var, Var(arg_list)), // List.replaceUnsafe list index elem
(len_var, Var(arg_index)), RunLowLevel {
(elem_var, Var(arg_elem)), op: LowLevel::ListReplaceUnsafe,
], args: vec![
ret_var: list_ret_var, (list_arg_var, Var(arg_list)),
}, (len_var, Var(arg_index)),
), (elem_var, Var(arg_elem)),
],
ret_var: replace_record_var,
},
)),
field: "list".into(),
}),
)], )],
final_else: Box::new( final_else: Box::new(
// else-branch // else-branch