-
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
Fix ICE in diagnostics for parenthesized type arguments #122400
Conversation
@@ -449,7 +449,11 @@ impl<'a> Parser<'a> { | |||
prev_token_before_parsing: Token, | |||
error: &mut Diag<'_>, | |||
) { | |||
if ((style == PathStyle::Expr && self.parse_paren_comma_seq(|p| p.parse_expr()).is_ok()) | |||
if ((style == PathStyle::Expr |
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've pondered this in the original PR, too. We might be able to make this check more readable by rewriting it into sth. like that:
if !match style {
PathStyle::Expr => /* parse seq is ok */,
PathStyle::Pat => /* parse seq is ok */,
_ => false,
} {
return;
}
let (token::ModSep | token::RArrow) = self.token.kind else { return };
/* span suggestion verbose */
However that might be even more confusing lol ^^
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.
Or
match style {
PathStyle::Expr if let Ok(_) = /* parse seq */ => {}
PathStyle::Pat if let Ok(_) = /* parse seq */ => {}
_ => return,
}
let (token::ModSep | token::RArrow) = self.token.kind else { return };
/* span suggestion verbose */
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.
No need to apply my suggestions if they turn out to be illegible! Just throwing something out there because the check is growing in complexity :)
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.
Yes, I agree, the if
has grown into a chungus. I kinda like the match-if-let
variant, even though the empty body of the match arm kinda bothers me. But it looks more readable to me.
Also, shouldn't the token deconstruction should be more like this?
let (token::ModSep | token::RArrow) = self.token.kind else {
/* span suggestion verbose */
return;
};
Because we do not want to emit the suggestion when ModSep
or RArrow
is present.
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.
Oh, you are right about the last part, yes it should be sth. like if let ModSep | RArrow = … { return } /* suggestion */
@bors r+ rollup |
Fix ICE in diagnostics for parenthesized type arguments The second time is the charm 🤞 😁 Fixes rust-lang#122345 r? fmease
…iaskrgr Rollup of 10 pull requests Successful merges: - rust-lang#121820 (pattern analysis: Store field indices in `DeconstructedPat` to avoid virtual wildcards) - rust-lang#121908 (match lowering: don't collect test alternatives ahead of time) - rust-lang#122203 (Add `intrinsic_name` to get plain intrinsic name) - rust-lang#122226 (coverage: Remove or migrate all unstable values of `-Cinstrument-coverage`) - rust-lang#122255 (Use `min_exhaustive_patterns` in core & std) - rust-lang#122360 ( Don't Create `ParamCandidate` When Obligation Contains Errors ) - rust-lang#122375 (CFI: Break tests into smaller files) - rust-lang#122383 (Enable PR tracking review assignment for rust-lang/rust) - rust-lang#122386 (Move `Once` implementations to `sys`) - rust-lang#122400 (Fix ICE in diagnostics for parenthesized type arguments) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 10 pull requests Successful merges: - rust-lang#121820 (pattern analysis: Store field indices in `DeconstructedPat` to avoid virtual wildcards) - rust-lang#121908 (match lowering: don't collect test alternatives ahead of time) - rust-lang#122203 (Add `intrinsic_name` to get plain intrinsic name) - rust-lang#122226 (coverage: Remove or migrate all unstable values of `-Cinstrument-coverage`) - rust-lang#122255 (Use `min_exhaustive_patterns` in core & std) - rust-lang#122360 ( Don't Create `ParamCandidate` When Obligation Contains Errors ) - rust-lang#122383 (Enable PR tracking review assignment for rust-lang/rust) - rust-lang#122386 (Move `Once` implementations to `sys`) - rust-lang#122400 (Fix ICE in diagnostics for parenthesized type arguments) - rust-lang#122410 (rustdoc: do not preload fonts when browsing locally) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#122400 - wutchzone:122345, r=fmease Fix ICE in diagnostics for parenthesized type arguments The second time is the charm 🤞 😁 Fixes rust-lang#122345 r? fmease
The second time is the charm 🤞 😁
Fixes #122345
r? fmease