-
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
Rudimentary heuristic to insert parentheses when needed for RPIT overcaptures lint #134142
Conversation
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.
We don't have basically any preexisting machinery to detect when parentheses are needed for types
We have hir::Generics::bounds_span_for_suggestions()
for bounds (on generic params I guess?). I don't know if you can leverage it here in some way or generalize it. I haven't looked at it for a while.
Edit: And yeah, it checks for TyKind::Ref
but not for TyKind::Ptr
, I've been meaning to fix that for some time.
cc #120929
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.
That's more about ambiguities introduced by the bound of the RPIT themselves. This fixes ambiguities having to do with the parent type of the RPIT. I think both could use fixing and unification, but I don't think I'll do it here.
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.
Thanks. This probably will still have more edge cases involving... more interesting combination of syntax, but this is a very nice improvement in the meantime.
@bors r+ rollup |
Rollup of 8 pull requests Successful merges: - rust-lang#134079 (Add a note saying that `{u8,i8}::from_{be,le,ne}_bytes` is meaningless) - rust-lang#134105 (Validate self in host predicates correctly) - rust-lang#134136 (Exercise const trait interaction with default fields) - rust-lang#134139 ([AIX] keep profile-rt symbol alive) - rust-lang#134141 (Remove more traces of anonymous ADTs) - rust-lang#134142 (Rudimentary heuristic to insert parentheses when needed for RPIT overcaptures lint) - rust-lang#134158 (Rename `projection_def_id` to `item_def_id`) - rust-lang#134160 (Add vacation entry for myself in triagebot.toml) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 8 pull requests Successful merges: - rust-lang#134079 (Add a note saying that `{u8,i8}::from_{be,le,ne}_bytes` is meaningless) - rust-lang#134105 (Validate self in host predicates correctly) - rust-lang#134136 (Exercise const trait interaction with default fields) - rust-lang#134139 ([AIX] keep profile-rt symbol alive) - rust-lang#134141 (Remove more traces of anonymous ADTs) - rust-lang#134142 (Rudimentary heuristic to insert parentheses when needed for RPIT overcaptures lint) - rust-lang#134158 (Rename `projection_def_id` to `item_def_id`) - rust-lang#134160 (Add vacation entry for myself in triagebot.toml) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#134142 - compiler-errors:paren-sug, r=jieyouxu Rudimentary heuristic to insert parentheses when needed for RPIT overcaptures lint We don't have basically any preexisting machinery to detect when parentheses are needed for *types*. AFAICT, all of the diagnostics we have for opaques just... fail when they suggest `+ 'a` when that's ambiguous. Fixes rust-lang#132853
We don't have basically any preexisting machinery to detect when parentheses are needed for types. AFAICT, all of the diagnostics we have for opaques just... fail when they suggest
+ 'a
when that's ambiguous.Fixes #132853