Skip to main content

litex/execute/
exec_verify_then_store_facts.rs

1use crate::prelude::*;
2
3impl Runtime {
4    pub fn verify_exist_or_and_chain_atomic_fact_well_defined_and_store_and_infer(
5        &mut self,
6        fact: &ExistOrAndChainAtomicFact,
7        verify_state: &VerifyState,
8    ) -> Result<InferResult, RuntimeError> {
9        let stmt_for_fact_errors: Stmt = fact.clone().to_fact().into();
10        self.verify_exist_or_and_chain_atomic_fact_well_defined(fact, verify_state)
11            .map_err(|well_defined_error| {
12                exec_stmt_error_with_stmt_and_cause(
13                    stmt_for_fact_errors.clone(),
14                    well_defined_error,
15                )
16            })?;
17        self.store_exist_or_and_chain_atomic_fact_without_well_defined_verified_and_infer(
18            fact.clone(),
19        )
20        .map_err(|store_fact_error| {
21            exec_stmt_error_with_stmt_and_cause(stmt_for_fact_errors, store_fact_error)
22        })
23    }
24
25    pub fn verify_or_and_chain_atomic_fact_well_defined_and_store_and_infer(
26        &mut self,
27        fact: &OrAndChainAtomicFact,
28        verify_state: &VerifyState,
29    ) -> Result<InferResult, RuntimeError> {
30        let stmt_for_fact_errors: Stmt = fact.clone().to_fact().into();
31        self.verify_or_and_chain_atomic_fact_well_defined(fact, verify_state)
32            .map_err(|well_defined_error| {
33                exec_stmt_error_with_stmt_and_cause(
34                    stmt_for_fact_errors.clone(),
35                    well_defined_error,
36                )
37            })?;
38        self.store_or_and_chain_atomic_fact_without_well_defined_verified_and_infer(fact.clone())
39            .map_err(|store_fact_error| {
40                exec_stmt_error_with_stmt_and_cause(stmt_for_fact_errors, store_fact_error)
41            })
42    }
43
44    pub fn verify_fact_well_defined_and_store_and_infer(
45        &mut self,
46        fact: Fact,
47        verify_state: &VerifyState,
48    ) -> Result<InferResult, RuntimeError> {
49        let stmt_for_fact_errors: Stmt = fact.clone().into();
50        self.verify_well_defined_and_store_and_infer(fact, verify_state)
51            .map_err(|e| exec_stmt_error_with_stmt_and_cause(stmt_for_fact_errors, e))
52    }
53}