litex/execute/
exec_let_stmt.rs1use crate::prelude::*;
2
3impl Runtime {
4 pub fn exec_let_stmt(&mut self, def_let_stmt: &DefLetStmt) -> Result<StmtResult, RuntimeError> {
5 let mut infer_result = self
6 .define_params_with_type(&def_let_stmt.param_def, false, ParamObjType::Identifier)
7 .map_err(|e| exec_stmt_error_with_stmt_and_cause(def_let_stmt.clone().into(), e))?;
8 for fact in def_let_stmt.facts.iter() {
9 let fact_infer_result = self
10 .verify_fact_well_defined_and_store_and_infer(
11 fact.clone(),
12 &VerifyState::new(0, false),
13 )
14 .map_err(|inner_exec_error| {
15 exec_stmt_error_with_stmt_and_cause(
16 def_let_stmt.clone().into(),
17 inner_exec_error,
18 )
19 })?;
20 infer_result.new_infer_result_inside(fact_infer_result);
21 infer_result.new_fact(fact);
23 }
24 Ok((NonFactualStmtSuccess::new(def_let_stmt.clone().into(), infer_result, vec![])).into())
25 }
26}