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();
}
}