fn inspect_parameters()

in amzn-smt-string-transformer/src/transpiler_visitors.rs [72:104]


    fn inspect_parameters(&mut self, var_sym: ISymbol, t: &Term, sfc: StringFct) {
        if let Some(op) = t.op() {
            let mut ident_args = BTreeSet::new();
            // also track the string literal siblings; these contribute to what a node is built_from
            let mut string_lits = BTreeSet::<String>::new();
            self.char_level_substring_vars
                .extend(char_level_substrings_required(
                    op.args()
                        .into_iter()
                        .cloned()
                        .collect::<Vec<Term>>()
                        .as_slice(),
                    sfc,
                    &self.alpha_renaming_map,
                ));
            for arg in op.args() {
                if let Term::Variable(identifier) = arg {
                    let ident_sym = identifier.sym();
                    if self.string_var_list.contains(&ident_sym.clone()) {
                        ident_args.insert(ident_sym.clone());
                        self.callgraph.add_parent_child(&var_sym, ident_sym).ok();
                    }
                } else if let Term::Constant(c) = arg {
                    if let Constant::String(s) = c.as_ref() {
                        string_lits.insert(s.clone());
                    }
                }
            }
            self.callgraph
                .add_direct_siblings(ident_args, string_lits)
                .ok();
        }
    }