protospec_build/asg/
program.rs1use 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}