-
Notifications
You must be signed in to change notification settings - Fork 13k
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
When encountering chained operators use heuristics to recover from bad turbofish #64909
Conversation
r? @eddyb (rust_highfive has picked a reviewer for you, use r? to override) |
This comment has been minimized.
This comment has been minimized.
ee2838b
to
8cd314b
Compare
r? @Centril |
12ef2af
to
b9f8c53
Compare
Since @varkor has done some work in this area it would be good if they could take a look as well. |
error: chained comparison operators require parentheses | ||
--> $DIR/require-parens-for-chained-comparison.rs:22:21 | ||
| | ||
LL | let _ = identity<u8>; | ||
| ^^^^ | ||
| | ||
= help: use the "turbofish" `::<...>` instead of `<...>` to specify type arguments | ||
= help: or use `(...)` if you meant to specify fn arguments | ||
|
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.
Possible heuristic: look-ahead to see if we have ;
-- at that point we can be sure it should be turbofish.
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.
This fails with let _: Box<('a) + Trait>;
.
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.
But that's in a type context not expression context?
(Can always follow up...)
r=me with reference to "turbofish" removed (per #64909 (comment)) and optionally #64909 (comment) and #64909 (comment) implemented. |
@bors r=Centril |
📌 Commit 76456e7 has been approved by |
⌛ Testing commit 76456e7 with merge 9b1ac2dd83494262a26554e0bf08c9b6407d43b6... |
When encountering chained operators use heuristics to recover from bad turbofish
Rollup of 7 pull requests Successful merges: - #64909 (When encountering chained operators use heuristics to recover from bad turbofish) - #65020 (Always mark rust and rust-call abi's as unwind) - #65064 (permit asyncawait-ondeck to be added by anyone) - #65066 ([const-prop] Fix ICE when trying to eval polymorphic promoted MIR) - #65100 (Replace GeneratorSubsts with SubstsRef) - #65101 (Upgrade librustc_macros dependencies) - #65105 (Split out some passes from librustc) Failed merges: r? @ghost
When encountering chained operators use heuristics to recover from bad turbofish
Rollup of 8 pull requests Successful merges: - #64708 (Stabilize `Option::as_deref` and `Option::as_deref_mut`) - #64909 (When encountering chained operators use heuristics to recover from bad turbofish) - #65011 (Do not ICE when dereferencing non-Copy raw pointer) - #65064 (permit asyncawait-ondeck to be added by anyone) - #65066 ([const-prop] Fix ICE when trying to eval polymorphic promoted MIR) - #65100 (Replace GeneratorSubsts with SubstsRef) - #65105 (Split out some passes from librustc) - #65106 (Allow unused attributes to avoid incremental bug) Failed merges: r? @ghost
When encountering chained operators use heuristics to recover from bad turbofish
💥 Test timed out |
@bors retry |
When encountering chained operators use heuristics to recover from bad turbofish
Rollup of 18 pull requests This contains changes from all the successful runs that bors marked as timed out, plus a revert of #63649 which appears to be the immediate cause of the timeouts. Successful merges: - #64708 (Stabilize `Option::as_deref` and `Option::as_deref_mut`) - #64728 (Stabilize UdpSocket::peer_addr) - #64765 (std: Reduce checks for `feature = "backtrace"`) - #64909 (When encountering chained operators use heuristics to recover from bad turbofish) - #65011 (Do not ICE when dereferencing non-Copy raw pointer) - #65064 (permit asyncawait-ondeck to be added by anyone) - #65066 ([const-prop] Fix ICE when trying to eval polymorphic promoted MIR) - #65100 (Replace GeneratorSubsts with SubstsRef) - #65105 (Split out some passes from librustc) - #65106 (Allow unused attributes to avoid incremental bug) - #65113 (Fix lonely backtick) - #65116 (Remove unneeded visit_statement definition) - #65118 (Update the documented default of -Z mutable-noalias) - #65123 (Account for macro invocation in `let mut $pat` diagnostic.) - #65124 (Replace some instances of `as *[const | mut] _` with `.cast()`) - #65126 (Fix typo on `now()` comments) - #65130 (lint: extern non-exhaustive types are improper) - #65151 (Revert #63649 - "Upgrade Emscripten targets to use upstream LLVM backend") Failed merges: r? @ghost
No description provided.