(programs: &Vec<PathBuf>, deopt: &Deopt)
| 96 | } |
| 97 | |
| 98 | pub fn infer_constraints(programs: &Vec<PathBuf>, deopt: &Deopt) -> Result<APIConstraints> { |
| 99 | let mut constraints: HashMap<String, Vec<Constraint>> = HashMap::new(); |
| 100 | for program in programs { |
| 101 | static_infer::infer_constraints(program, deopt, &mut constraints)?; |
| 102 | } |
| 103 | let mut refined = static_infer::refine_constraints(constraints.clone()); |
| 104 | dynamic_infer::infer(&mut refined, deopt)?; |
| 105 | save_constraints(&refined, deopt)?; |
| 106 | Ok(constraints) |
| 107 | } |
| 108 | |
| 109 | fn save_constraints(constraints: &APIConstraints, deopt: &Deopt) -> Result<()> { |
| 110 | let save_path: PathBuf = [deopt.get_library_misc_dir()?, "constraint.json".into()] |
no test coverage detected