diff --git a/src/protocol/eval/executor.rs b/src/protocol/eval/executor.rs index f95a61b3c62f75ac315120a8b9dfa3baac09d2a3..2e9946bb6cf62cb6001b1472e3a00f8fe9cae134 100644 --- a/src/protocol/eval/executor.rs +++ b/src/protocol/eval/executor.rs @@ -584,10 +584,12 @@ impl Prompt { unreachable!("executor calling 'get' on value {:?}", value) }; - match ctx.get(port_id, &mut self.store) { + match ctx.get(port_id) { Some(result) => { - // We have the result - cur_frame.expr_values.push_back(result) + // We have the result. Merge the `ValueGroup` with the + // stack/heap storage. + debug_assert_eq!(result.values.len(), 1); + result.into_stack(&mut cur_frame.expr_values, &mut self.store); }, None => { // Don't have the result yet, prepare the expression to @@ -639,7 +641,7 @@ impl Prompt { let port_id = match port_value_deref { Value::Input(port_id) => port_id, Value::Output(port_id) => port_id, - _ => unreachable!("executor calling 'fires' on value {:?}", value), + _ => unreachable!("executor calling 'fires' on value {:?}", port_value_deref), }; match ctx.fires(port_id) {