convert higher ranked Predicates to PredicateKind::ForAll#73503
convert higher ranked Predicates to PredicateKind::ForAll#73503bors merged 28 commits intorust-lang:masterfrom
Predicates to PredicateKind::ForAll#73503Conversation
66c7be0 to
9468dfb
Compare
641480c to
f2246c7
Compare
|
☔ The latest upstream changes (presumably #72936) made this pull request unmergeable. Please resolve the merge conflicts. |
8514396 to
eaa2952
Compare
|
☔ The latest upstream changes (presumably #73643) made this pull request unmergeable. Please resolve the merge conflicts. |
4403278 to
a4f1fcd
Compare
|
@bors try (I want to do a perf run) |
|
⌛ Trying commit a4f1fcd with merge 33ea641dd70d10df2f81ff66863ce09f631b8195... |
|
@rust-timer queue |
|
Awaiting bors try build completion |
|
☀️ Try build successful - checks-azure |
|
Queued 33ea641dd70d10df2f81ff66863ce09f631b8195 with parent ff5b446, future comparison URL. |
|
Finished benchmarking try commit (33ea641dd70d10df2f81ff66863ce09f631b8195): comparison url. |
|
OK, perf impact is basically neutral (maybe 1% slower on stress tests...), that's great. |
|
☔ The latest upstream changes (presumably #73743) made this pull request unmergeable. Please resolve the merge conflicts. |
4104127 to
6d55dfa
Compare
|
☔ The latest upstream changes (presumably #73978) made this pull request unmergeable. Please resolve the merge conflicts. |
There was a problem hiding this comment.
I think that Projections no longer need special casing (they no longer run the leak check at the top level).
There was a problem hiding this comment.
It seems like we do still need this.
Removing the specialcase for projections results in
Building stage1 std artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
Compiling compiler_builtins v0.1.32
Compiling core v0.0.0 (/home/lcnr/rust2/src/libcore)
Compiling cc v1.0.57
Compiling libc v0.2.71
Compiling autocfg v0.1.7
Compiling std v0.0.0 (/home/lcnr/rust2/src/libstd)
Compiling hashbrown v0.6.2
Compiling backtrace-sys v0.1.37
Compiling unwind v0.0.0 (/home/lcnr/rust2/src/libunwind)
error[E0599]: no method named `count` found for struct `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u32>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>` in the current scope
--> src/libcore/num/bignum.rs:173:74
|
100 | / macro_rules! define_bignum {
101 | | ($name:ident: type=$ty:ty, n=$n:expr) => {
102 | | /// Stack-allocated arbitrary-precision (up to certain limit) integer.
103 | | ///
... |
173 | | let zeros = digits.iter().rev().take_while(|&&x| x == 0).count();
| | ------------ ^^^^^ method not found in `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u32>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>`
| | |
| | doesn't satisfy `<_ as ops::function::FnOnce<(&&u32,)>>::Output = bool`
| | doesn't satisfy `_: ops::function::FnMut<(&&u32,)>`
... |
477 | | };
478 | | }
| |_- in this expansion of `define_bignum!`
...
483 | define_bignum!(Big32x40: type=Digit32, n=40);
| --------------------------------------------- in this macro invocation
|
::: src/libcore/iter/adapters/mod.rs:1803:1
|
1803 | pub struct TakeWhile<I, P> {
| --------------------------
| |
| method `count` not found for this
| doesn't satisfy `_: iter::traits::iterator::Iterator`
|
= note: the method `count` exists but the following trait bounds were not satisfied:
`<[closure@src/libcore/num/bignum.rs:173:60: 173:72] as ops::function::FnOnce<(&&u32,)>>::Output = bool`
which is required by `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u32>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
`[closure@src/libcore/num/bignum.rs:173:60: 173:72]: ops::function::FnMut<(&&u32,)>`
which is required by `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u32>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
`iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u32>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
which is required by `&mut iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u32>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
error[E0599]: no method named `count` found for struct `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u8>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>` in the current scope
--> src/libcore/num/bignum.rs:173:74
|
100 | / macro_rules! define_bignum {
101 | | ($name:ident: type=$ty:ty, n=$n:expr) => {
102 | | /// Stack-allocated arbitrary-precision (up to certain limit) integer.
103 | | ///
... |
173 | | let zeros = digits.iter().rev().take_while(|&&x| x == 0).count();
| | ------------ ^^^^^ method not found in `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u8>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>`
| | |
| | doesn't satisfy `<_ as ops::function::FnOnce<(&&u8,)>>::Output = bool`
| | doesn't satisfy `_: ops::function::FnMut<(&&u8,)>`
... |
477 | | };
478 | | }
| |_- in this expansion of `define_bignum!`
...
488 | define_bignum!(Big8x3: type=u8, n=3);
| ------------------------------------- in this macro invocation
|
::: src/libcore/iter/adapters/mod.rs:1803:1
|
1803 | pub struct TakeWhile<I, P> {
| --------------------------
| |
| method `count` not found for this
| doesn't satisfy `_: iter::traits::iterator::Iterator`
|
= note: the method `count` exists but the following trait bounds were not satisfied:
`<[closure@src/libcore/num/bignum.rs:173:60: 173:72] as ops::function::FnOnce<(&&u8,)>>::Output = bool`
which is required by `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u8>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
`[closure@src/libcore/num/bignum.rs:173:60: 173:72]: ops::function::FnMut<(&&u8,)>`
which is required by `iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u8>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
`iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u8>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
which is required by `&mut iter::adapters::TakeWhile<iter::adapters::Rev<slice::Iter<'_, u8>>, [closure@src/libcore/num/bignum.rs:173:60: 173:72]>: iter::traits::iterator::Iterator`
error: internal compiler error: src/librustc_middle/ich/impls_ty.rs:94:17: StableHasher: unexpected region RePlaceholder(Placeholder { universe: U1, name: BrAnon(0) })
cb12a23 to
105856c
Compare
6553ad6 to
1859a2b
Compare
1859a2b to
602ef6b
Compare
|
@bors r=nikomatsakis rollup=never |
|
📌 Commit 602ef6b has been approved by |
|
☀️ Test successful - checks-actions, checks-azure |
|
Perf triage: This was a 2.5% regression on stress tests and a 1-2% loss on serde and futures (real world tests). This was expected. |
implements step 2 of rust-lang/compiler-team#285
r? @nikomatsakis