]> git.lizzy.rs Git - rust.git/commit
auto merge of #18386 : nikomatsakis/rust/issue-18208, r=pnkfelix
authorbors <bors@rust-lang.org>
Tue, 28 Oct 2014 12:26:50 +0000 (12:26 +0000)
committerbors <bors@rust-lang.org>
Tue, 28 Oct 2014 12:26:50 +0000 (12:26 +0000)
commit58dc0a05abb98ae2db65ca20e70f3bab51f8bf92
treef64c3f902c7602acfcff0aada7d0709ec45ab4a5
parent9a778bc550c22c50117ee42ef5cf7510622fb036
parent1da73ff12642182c9049630c3625f44f718c6c2f
auto merge of #18386 : nikomatsakis/rust/issue-18208, r=pnkfelix

Avoid O(n^2) performance by reconsidering the full set of obligations only when we are about to report an error (#18208). I found it is still important to consider the full set in order to make tests like `let x: Vec<_> = obligations.iter().collect()` work.

I think we lack the infrastructure to write a regression test for this, but when I did manual testing I found a massive reduction in type-checking time for extreme examples like those found in #18208 vs stage0.

f? @dotdash