diff --git a/src/protocol/eval/executor.rs b/src/protocol/eval/executor.rs index 25782476114ff1097fca333d48ad04a7afb1c099..45f0140c2ddca9f96eebf5ad99202de5d8489cb2 100644 --- a/src/protocol/eval/executor.rs +++ b/src/protocol/eval/executor.rs @@ -736,25 +736,25 @@ impl Prompt { Method::SelectStart => { let num_cases = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_uint32(); let num_ports = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_uint32(); - if !ctx.select_start(num_cases, num_ports) { - return Ok(EvalContinuation::SelectStart(num_cases, num_ports)) - } + + return Ok(EvalContinuation::SelectStart(num_cases, num_ports)); }, Method::SelectRegisterCasePort => { let case_index = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_uint32(); let port_index = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_uint32(); let port_value = self.store.maybe_read_ref(&cur_frame.expr_values.pop_front().unwrap()).as_port_id(); - if !ctx.performed_select_start() { - return Ok(EvalContinuation::SelectRegisterPort(case_index, port_index, port_value)); - } + return Ok(EvalContinuation::SelectRegisterPort(case_index, port_index, port_value)); }, Method::SelectWait => { match ctx.performed_select_wait() { Some(select_index) => { cur_frame.expr_values.push_back(Value::UInt32(select_index)); }, - None => return Ok(EvalContinuation::SelectWait), + None => { + cur_frame.expr_stack.push_back(ExprInstruction::EvalExpr(expr.this.upcast())); + return Ok(EvalContinuation::SelectWait) + }, } }, Method::UserComponent => {