diff --git a/src/protocol/eval/executor.rs b/src/protocol/eval/executor.rs index 8a80bd8dce90a3dc81de4d03d545a90e2b1a5d27..8ea043156fec0af942858ff46cb79ce861946c6a 100644 --- a/src/protocol/eval/executor.rs +++ b/src/protocol/eval/executor.rs @@ -171,6 +171,12 @@ impl Frame { self.expr_stack.push_back(ExprInstruction::PushValToFront); self.serialize_expression(heap, *value_expr_id); } + }, + Literal::Tuple(value_expr_ids) => { + for value_expr_id in value_expr_ids { + self.expr_stack.push_back(ExprInstruction::PushValToFront); + self.serialize_expression(heap, *value_expr_id); + } } } }, @@ -553,6 +559,12 @@ impl Prompt { ); Value::Array(heap_pos) } + Literal::Tuple(lit_value) => { + let heap_pos = transfer_expression_values_front_into_heap( + cur_frame, &mut self.store, lit_value.len() + ); + Value::Tuple(heap_pos) + } }; cur_frame.expr_values.push_back(value);