dpscript/ir/validator/checker/
cond.rs

1use super::IRChecker;
2use crate::{IRCheckerContext, IRCondition, Result, UnsourcedValidatorError};
3
4impl IRChecker for IRCondition {
5    fn check(&mut self, cx: &mut IRCheckerContext) -> Result<()> {
6        let blocks = cx.get_blocks();
7
8        if !blocks.contains_key(&self.if_block) {
9            return Err(UnsourcedValidatorError {
10                err: format!("Cannot find block: {}", self.if_block),
11            }
12            .into());
13        }
14
15        if !blocks.contains_key(&self.else_block) {
16            return Err(UnsourcedValidatorError {
17                err: format!("Cannot find block: {}", self.else_block),
18            }
19            .into());
20        }
21
22        if !blocks.contains_key(&self.join_block) {
23            return Err(UnsourcedValidatorError {
24                err: format!("Cannot find block: {}", self.join_block),
25            }
26            .into());
27        }
28
29        Ok(())
30    }
31}