8247: internal: ensure that runaway type-inference doesn't block the main loop r=flodiebold a=matklad
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.
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
}
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(),