aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/infer
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-05-21 20:07:35 +0100
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-05-21 20:07:35 +0100
commit366ad6f03ba2296f09cb79ea139fa53a132fa651 (patch)
treeecada644ef5a0270689036d266d90eee899da560 /crates/ra_hir/src/ty/infer
parented943adb29e6eddb482377a21908a8ed66c6cc21 (diff)
parentced971ee9f877d866456bd0e34734056595b1a57 (diff)
Merge #1306
1306: Chalk fuel r=matklad a=flodiebold This switches Chalk to my fuel branch, and limits the fuel for trait solving. This should improve worst-case performance; for example, we can now run `ra_cli analysis-stats` against rustc again. This also fixes a bug found doing that. Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/ra_hir/src/ty/infer')
-rw-r--r--crates/ra_hir/src/ty/infer/unify.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/crates/ra_hir/src/ty/infer/unify.rs b/crates/ra_hir/src/ty/infer/unify.rs
index 8ca7e957d..bc9719725 100644
--- a/crates/ra_hir/src/ty/infer/unify.rs
+++ b/crates/ra_hir/src/ty/infer/unify.rs
@@ -56,7 +56,12 @@ where
56 self.var_stack.pop(); 56 self.var_stack.pop();
57 result 57 result
58 } else { 58 } else {
59 let free_var = InferTy::TypeVar(self.ctx.var_unification_table.find(inner)); 59 let root = self.ctx.var_unification_table.find(inner);
60 let free_var = match tv {
61 InferTy::TypeVar(_) => InferTy::TypeVar(root),
62 InferTy::IntVar(_) => InferTy::IntVar(root),
63 InferTy::FloatVar(_) => InferTy::FloatVar(root),
64 };
60 let position = self.add(free_var); 65 let position = self.add(free_var);
61 Ty::Bound(position as u32) 66 Ty::Bound(position as u32)
62 } 67 }