-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups #145474
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
Conversation
r? @fee1-dead rustbot has assigned @fee1-dead. Use |
let hi = self.prev_token.span; | ||
let mut diag = self | ||
.dcx() | ||
.struct_span_err(lo.to(hi), "precise capturing lists may not be parenthesized"); |
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.
First time that the term "precise capturing list" is used (in the compiler). In the AST validator, we emit diagnostics mentioning "precise capturing syntax" but "[…] syntax may not be parenthesized" feels super off to me (mixing of abstraction levels) but I'm L2, so.
The Reference and the AST use "use-bounds" essentially but the problem with that is the fact that later compiler stages (and the release blog post, GH issues & other documents) all use "precise capturing" when referring to this feature (in general or from a semantic standpoint specifically), so I was hesitant to deviate too far from this generally accepted terminology in user-facing output.
(Re. the phrasing "[…] not supported" for such things, I really don't like it; it should either be "not supported yet" + actual official proposal or it's plainly ungrammatical, no in-between.)
58928f4
to
ca5569e
Compare
ca5569e
to
f8f7c27
Compare
nice @bors r+ rollup |
…1-dead Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups Fixes rust-lang#145470. First commit fixes the issue, second one performs some desperately needed cleanups. The fix shouldn't be a breaking change because IINM the parser always ensures that all brackets are balanced (via a buffer of brackets). Meaning even though we used to accept `(use<>` as a valid precise capturing list, it was guaranteed that we would fail in the end.
…1-dead Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups Fixes rust-lang#145470. First commit fixes the issue, second one performs some desperately needed cleanups. The fix shouldn't be a breaking change because IINM the parser always ensures that all brackets are balanced (via a buffer of brackets). Meaning even though we used to accept `(use<>` as a valid precise capturing list, it was guaranteed that we would fail in the end.
Rollup of 33 pull requests Successful merges: - #139345 (Extend `QueryStability` to handle `IntoIterator` implementations) - #140740 (Add `-Zindirect-branch-cs-prefix`) - #142079 (nll-relate: improve hr opaque types support) - #142938 (implement std::fs::set_permissions_nofollow on unix) - #144767 (Correct some grammar in integer documentation) - #144906 (Require approval from t-infra instead of t-release on tier bumps) - #144983 (Rehome 37 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`) - #145025 (run spellcheck as a tidy extra check in ci) - #145166 (suggest using `pub(crate)` for E0364) - #145255 (dec2flt: Provide more valid inputs examples) - #145306 (Add tracing to various miscellaneous functions) - #145336 (Hide docs for `core::unicode`) - #145429 (Couple of codegen_fn_attrs improvements) - #145452 (Do not strip binaries in bootstrap everytime if they are unchanged) - #145464 (Stabilize `const_pathbuf_osstring_new` feature) - #145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups) - #145486 (Fix `unicode_data.rs` mention message) - #145493 (remove `should_render` in `PrintAttribute` derive) - #145505 (Simplify span caches) - #145510 (Visit and print async_fut local for async drop.) - #145511 (Rust build fails on OpenBSD after using file_lock feature) - #145532 (resolve: debug for block module) - #145533 (Reorder `lto` options from most to least optimizing) - #145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.) - #145538 (bufreader::Buffer::backshift: don't move the uninit bytes) - #145542 (triagebot: Don't warn no-mentions on subtree updates) - #145549 (Update rust maintainers in openharmony.md) - #145550 (Avoid using `()` in `derive(From)` output.) - #145556 (Allow stability attributes on extern crates) - #145560 (Remove unused `PartialOrd`/`Ord` from bootstrap) - #145568 (ignore frontmatters in `TokenStream::new`) - #145571 (remove myself from some adhoc-groups and pings) - #145576 (Add change tracker entry for `--timings`) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 15 pull requests Successful merges: - #145338 (actually provide the correct args to coroutine witnesses) - #145429 (Couple of codegen_fn_attrs improvements) - #145452 (Do not strip binaries in bootstrap everytime if they are unchanged) - #145464 (Stabilize `const_pathbuf_osstring_new` feature) - #145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups) - #145486 (Fix `unicode_data.rs` mention message) - #145490 (Trace some basic I/O operations in bootstrap) - #145493 (remove `should_render` in `PrintAttribute` derive) - #145500 (Port must_use to the new target checking) - #145505 (Simplify span caches) - #145510 (Visit and print async_fut local for async drop.) - #145511 (Rust build fails on OpenBSD after using file_lock feature) - #145532 (resolve: debug for block module) - #145533 (Reorder `lto` options from most to least optimizing) - #145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of #145474 - fmease:paren-use-bounds-fix, r=fee1-dead Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups Fixes #145470. First commit fixes the issue, second one performs some desperately needed cleanups. The fix shouldn't be a breaking change because IINM the parser always ensures that all brackets are balanced (via a buffer of brackets). Meaning even though we used to accept `(use<>` as a valid precise capturing list, it was guaranteed that we would fail in the end.
Rollup of 15 pull requests Successful merges: - rust-lang/rust#145338 (actually provide the correct args to coroutine witnesses) - rust-lang/rust#145429 (Couple of codegen_fn_attrs improvements) - rust-lang/rust#145452 (Do not strip binaries in bootstrap everytime if they are unchanged) - rust-lang/rust#145464 (Stabilize `const_pathbuf_osstring_new` feature) - rust-lang/rust#145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups) - rust-lang/rust#145486 (Fix `unicode_data.rs` mention message) - rust-lang/rust#145490 (Trace some basic I/O operations in bootstrap) - rust-lang/rust#145493 (remove `should_render` in `PrintAttribute` derive) - rust-lang/rust#145500 (Port must_use to the new target checking) - rust-lang/rust#145505 (Simplify span caches) - rust-lang/rust#145510 (Visit and print async_fut local for async drop.) - rust-lang/rust#145511 (Rust build fails on OpenBSD after using file_lock feature) - rust-lang/rust#145532 (resolve: debug for block module) - rust-lang/rust#145533 (Reorder `lto` options from most to least optimizing) - rust-lang/rust#145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 15 pull requests Successful merges: - rust-lang#145338 (actually provide the correct args to coroutine witnesses) - rust-lang#145429 (Couple of codegen_fn_attrs improvements) - rust-lang#145452 (Do not strip binaries in bootstrap everytime if they are unchanged) - rust-lang#145464 (Stabilize `const_pathbuf_osstring_new` feature) - rust-lang#145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups) - rust-lang#145486 (Fix `unicode_data.rs` mention message) - rust-lang#145490 (Trace some basic I/O operations in bootstrap) - rust-lang#145493 (remove `should_render` in `PrintAttribute` derive) - rust-lang#145500 (Port must_use to the new target checking) - rust-lang#145505 (Simplify span caches) - rust-lang#145510 (Visit and print async_fut local for async drop.) - rust-lang#145511 (Rust build fails on OpenBSD after using file_lock feature) - rust-lang#145532 (resolve: debug for block module) - rust-lang#145533 (Reorder `lto` options from most to least optimizing) - rust-lang#145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.) r? `@ghost` `@rustbot` modify labels: rollup
Fixes #145470.
First commit fixes the issue, second one performs some desperately needed cleanups.
The fix shouldn't be a breaking change because IINM the parser always ensures that all brackets are balanced (via a buffer of brackets). Meaning even though we used to accept
(use<>
as a valid precise capturing list, it was guaranteed that we would fail in the end.