internal: ensure that runaway type-inference doesn't block the main loop

We have a bug where type-checking `per_query_memory_usage` takes a
couple of seconds. It also reveals another bug: our type inference is
not cancellable.
This commit is contained in:
Aleksey Kladov 2021-03-29 23:15:12 +03:00
parent 2381a54c2f
commit b35312d4af

View File

@ -119,6 +119,8 @@ impl<'a> InferenceContext<'a> {
}
fn infer_expr_inner(&mut self, tgt_expr: ExprId, expected: &Expectation) -> Ty {
self.db.check_canceled();
let body = Arc::clone(&self.body); // avoid borrow checker problem
let ty = match &body[tgt_expr] {
Expr::Missing => self.err_ty(),