Repository navigation
1.67 regression with ……::{opaque#0}<'_> does not live long enough error #107516
Description
Discussed in https://users.rust-lang.org/t/rust-1-67-lifetime-error-compiles-with-1-66-what-changed/88483 and described on zotero/citeproc-rs#154. I can reproduce a regression in 1.67.0 using the current latest commit “2ab195a1e6f84f0ff284813ece61dc62096abbfe” in the zotero/citeproc-rs repo.
This issue was first incorrectly thought of as a sort of “duplicate” of #107426, since that issue originally claimed a 1.67 regression, too, but actually regressed in 1.66, and on a deliberate soundness fix (#95474).
However, bisection of the above-mentioned commit on citeproc-rs points to a different PR, that is
Glancing at it, that PR does not look like it’s supposed to break anything. @rustbot label regression-from-stable-to-stable, T-compiler, E-needs-mcve
Compilation error
error: `QuoteSplitter<'_, impl Iterator<Item = (usize, char)> + '_>::events::{opaque#0}<'_>` does not live long enough
--> crates/io/src/output/parse_quotes.rs:419:47
|
419 | | MicroNode::Formatted(..) => EachSplitter::Index(Some(ix)),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: `QuoteSplitter<'_, impl Iterator<Item = (usize, char)> + '_>::events::{opaque#0}<'_>` does not live long enough
--> crates/io/src/output/parse_quotes.rs:430:21
|
430 | / EachSplitter::Splitter {
431 | | index: ix,
432 | | splitter,
433 | | seen_any: Some(false),
434 | | }
| |_____________________^
error: could not compile `citeproc-io` due to 2 previous errors
bisection
searched toolchains a28f3c88e50a77bc2a91889241248c4543854e61 through b7bc90fea3b441234a84b49fdafeb75815eebbab
********************************************************************************
Regression in 7fe6f36224e92db6fbde952e0b7e50863161f6ee
********************************************************************************
==================================================================================
= Please file this regression report on the rust-lang/rust GitHub repository =
= New issue: https://github.com/rust-lang/rust/issues/new =
= Known issues: https://github.com/rust-lang/rust/issues =
= Copy and paste the text below into the issue report thread. Thanks! =
==================================================================================
searched nightlies: from nightly-2022-09-10 to nightly-2023-01-20
regressed nightly: nightly-2022-11-22
searched commit range: https://github.com/rust-lang/rust/compare/a28f3c88e50a77bc2a91889241248c4543854e61...b7bc90fea3b441234a84b49fdafeb75815eebbab
regressed commit: https://github.com/rust-lang/rust/commit/7fe6f36224e92db6fbde952e0b7e50863161f6ee
<details>
<summary>bisected with <a href='https://github.com/rust-lang/cargo-bisect-rustc'>cargo-bisect-rustc</a> v0.6.5</summary>
Host triple: x86_64-unknown-linux-gnu
Reproduce with:
```bash
cargo bisect-rustc --prompt --access github --start 2022-09-10 --end 2023-01-20 --regress error
```
Activity
[-]1.67 regression with `……::{opaque#0}<'_>` does not live long enough` error[/-][+]1.67 regression with `` `……::{opaque#0}<'_>` does not live long enough` error[/+][-]1.67 regression with `` `……::{opaque#0}<'_>` does not live long enough` error[/-][+]1.67 regression with `` `……::{opaque#0}<'_>`` does not live long enough` error[/+][-]1.67 regression with `` `……::{opaque#0}<'_>`` does not live long enough` error[/-][+]1.67 regression with `` `……::{opaque#0}<'_>` does not live long enough`` error[/+][-]1.67 regression with `` `……::{opaque#0}<'_>` does not live long enough`` error[/-][+]1.67 regression with `……::{opaque#0}<'_> does not live long enough` error[/+]steffahn commentedon Jan 31, 2023
@rustbot label A-impl-trait
Ping @cjgillot because of the regressing PR.
apiraino commentedon Feb 2, 2023
WG-prioritization assigning priority (Zulip discussion).
@rustbot label -I-prioritize +P-critical
pnkfelix commentedon Feb 2, 2023
(I'm planning to do a MCVE hunt for this after I take care of a beta- and stable-backport that is slightly higher priority.)
2 remaining items
compiler-errors commentedon Feb 14, 2023
Partially minimized:
wesleywiser commentedon Feb 16, 2023
Would someone from @rust-lang/types be able to investigate this regression a bit? Thanks! 🙂
aliemjay commentedon Feb 28, 2023
Minimized further:
(edit: pnkfelix took liberty of updating the example so that it is more clearly a regression, in terms of having something that successfully compiles on sufficiently old compilers.)
pnkfelix commentedon Mar 2, 2023
Hmm. I get errors from @aliemjay 's example even on old compilers, of the form:
The easiest way to sidestep this is to revise the supposed MCVE with one that uses a sized type, like
()oru32, instead ofstr. (I went ahead and edited the example to reflect this.)jackh726 commentedon Mar 2, 2023
@pnkfelix I was also having trouble, but all it takes is edition 2021
pnkfelix commentedon Mar 2, 2023
Oh yeah, this is the Array::into_iter thing I bet, okay.
aliemjay commentedon Mar 3, 2023
Fixed by #108691 (hopefully, because there are many ways for minimization to get wrong). It turned out fixing #108592 first was not necessary.
@rustbot claim