-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
regression: as_place unwrap None #115778
Comments
Might be related to #110453 |
I've tried the first 2 crates (bonedaddy.ellidri and edu-sync), they compile on the current stable fail to compile on beta and nightly. Provisionally assigning P-high waiting for more investigation (Zulip discussion). @rustbot label -I-prioritize +P-high +T-compiler |
bisected to commit 7e4f5ecde93e629a44ad3678059c5cd364791d27, where in this commit originates the issue:
@rustbot label -e-needs-bisection |
Bisection probably leads to #111571 cc @jhpratt TIL to look at the perf builds results, they help getting more context. They told me tha PR 111571 is actually commit |
I'll take a look at this after RustConf. |
@apiraino Is it possible the bisection contained an error? I'm not seeing any possible connection. The errors seem unrelated, |
Ok, I give up on reproducing using the crate I am now a bit more confident the regression is in 34ccd04 (specifically #114022) cc @oli-obk (I see in that patch some code that is in the stacktraces). sorry @jhpratt for the ping and thanks for pointing me into the right direction :) |
No worries! Someone mentioned that it may have been incorrect at RustConf, but I wanted to have a chance to look into it myself before saying anything. I'll be unsubscribing from this issue; please ping if something needs my attention :) |
small, but not yet minimal repro. Should be good enough for the test suite. I'm looking into a fix now. use std::future::Future;
async fn bop() {
fold(run(), |mut foo| async move {
&mut foo.bar;
})
}
fn fold<Fut, F, U>(_: Foo<U>, f: F)
where
F: FnMut(Foo<U>) -> Fut,
{
loop {}
}
struct Foo<F> {
bar: Vec<F>,
}
fn run() -> Foo<impl Future<Output = ()>> {
loop {}
} |
I reverted all changes from #114022 and it does not appear to change behaviour. trying a local bisect on the minimal repro. edit: hmm weird, it also points to that PR. Trying again |
Only prevent field projections into opaque types, not types containing opaque types fixes rust-lang/rust#115778 I did not think that original condition through properly... I'll also need to check the similar check around the other `ProjectionKind::OpaqueCast` creation site (this one is in hir, the other one is in mir), but I'll do that change in another PR that doesn't go into a beta backport.
The text was updated successfully, but these errors were encountered: