-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
convert higher ranked Predicate
s to PredicateKind::ForAll
#73503
Conversation
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. |
} | ||
} | ||
ty::PredicateAtom::Projection(projection) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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