protospec_build/asg/
program.rs

1use super::*;
2
3#[derive(Debug)]
4pub struct Program {
5    pub types: IndexMap<String, Arc<Field>>,
6    pub consts: IndexMap<String, Arc<Const>>,
7    pub transforms: IndexMap<String, Arc<Transform>>,
8    pub functions: IndexMap<String, Arc<Function>>,
9}
10
11impl Program {
12    pub fn scan_cycles(&self) {
13        for (_, field) in &self.types {
14            let mut interior_fields = IndexSet::new();
15            field.get_indirect_contained_fields(&mut interior_fields);
16            if interior_fields.contains(&field.name) {
17                field.is_maybe_cyclical.set(true);
18            }
19        }
20    }
21}