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                short_exec_error(
13                    stmt_for_fact_errors.clone(),
14                    "",
15                    Some(well_defined_error),
16                    vec![],
17                )
18            })?;
19        self.store_exist_or_and_chain_atomic_fact_without_well_defined_verified_and_infer(
20            fact.clone(),
21        )
22        .map_err(|store_fact_error| {
23            short_exec_error(stmt_for_fact_errors, "", Some(store_fact_error), vec![])
24        })
25    }
26
27    pub fn verify_or_and_chain_atomic_fact_well_defined_and_store_and_infer(
28        &mut self,
29        fact: &OrAndChainAtomicFact,
30        verify_state: &VerifyState,
31    ) -> Result<InferResult, RuntimeError> {
32        let stmt_for_fact_errors: Stmt = fact.clone().to_fact().into();
33        self.verify_or_and_chain_atomic_fact_well_defined(fact, verify_state)
34            .map_err(|well_defined_error| {
35                short_exec_error(
36                    stmt_for_fact_errors.clone(),
37                    "",
38                    Some(well_defined_error),
39                    vec![],
40                )
41            })?;
42        self.store_or_and_chain_atomic_fact_without_well_defined_verified_and_infer(fact.clone())
43            .map_err(|store_fact_error| {
44                short_exec_error(stmt_for_fact_errors, "", Some(store_fact_error), vec![])
45            })
46    }
47
48    pub fn verify_fact_well_defined_and_store_and_infer(
49        &mut self,
50        fact: Fact,
51        verify_state: &VerifyState,
52    ) -> Result<InferResult, RuntimeError> {
53        let stmt_for_fact_errors: Stmt = fact.clone().into();
54        self.verify_well_defined_and_store_and_infer(fact, verify_state)
55            .map_err(|e| short_exec_error(stmt_for_fact_errors, "", Some(e), vec![]))
56    }
57}