Only print chalk programs with CHALK_PRINT

This commit is contained in:
Wilco Kusee 2020-08-14 14:47:06 +02:00
parent 36052ce1a1
commit de282ddd86

View file

@ -167,20 +167,21 @@ fn solve(
remaining > 0 remaining > 0
}; };
let solution = if is_chalk_debug() { let mut solve = || {
if is_chalk_print() {
let logging_db = LoggingRustIrDatabase::new(context); let logging_db = LoggingRustIrDatabase::new(context);
let solve = || {
let solution = solver.solve_limited(&logging_db, goal, should_continue); let solution = solver.solve_limited(&logging_db, goal, should_continue);
log::debug!("chalk program:\n{}", logging_db); log::debug!("chalk program:\n{}", logging_db);
solution solution
} else {
solver.solve_limited(&context, goal, should_continue)
}
}; };
// don't set the TLS for Chalk unless Chalk debugging is active, to make // don't set the TLS for Chalk unless Chalk debugging is active, to make
// extra sure we only use it for debugging // extra sure we only use it for debugging
chalk::tls::set_current_program(db, solve) let solution =
} else { if is_chalk_debug() { chalk::tls::set_current_program(db, solve) } else { solve() };
solver.solve_limited(&context, goal, should_continue)
};
log::debug!("solve({:?}) => {:?}", goal, solution); log::debug!("solve({:?}) => {:?}", goal, solution);
@ -191,6 +192,10 @@ fn is_chalk_debug() -> bool {
std::env::var("CHALK_DEBUG").is_ok() std::env::var("CHALK_DEBUG").is_ok()
} }
fn is_chalk_print() -> bool {
std::env::var("CHALK_PRINT").is_ok()
}
fn solution_from_chalk( fn solution_from_chalk(
db: &dyn HirDatabase, db: &dyn HirDatabase,
solution: chalk_solve::Solution<Interner>, solution: chalk_solve::Solution<Interner>,