about summary refs log tree commit diff
path: root/library/std/src/thread/mod.rs
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-07-24 22:22:16 +0200
committerGitHub <noreply@github.com>2024-07-24 22:22:16 +0200
commit2ff33bb1df6ef62a8f325887324cecf4b00f5087 (patch)
tree4bfcdc377a72009800454a4ea58f58813b1d37c2 /library/std/src/thread/mod.rs
parented5dfed535b4be3a7ab0f4c0d73f274a7fe6165a (diff)
parente13eb37eeb3ccb447f33496fe86d77498558d2d5 (diff)
downloadrust-2ff33bb1df6ef62a8f325887324cecf4b00f5087.tar.gz
rust-2ff33bb1df6ef62a8f325887324cecf4b00f5087.zip
Rollup merge of #127717 - gurry:127441-stray-impl-sugg, r=compiler-errors
Fix malformed suggestion for repeated maybe unsized bounds

Fixes #127441

Now when we encounter something like `foo(a : impl ?Sized + ?Sized)`, instead of suggesting removal of both bounds and leaving `foo(a: impl )` behind, we suggest changing the first bound to `Sized` and removing the second bound, resulting in `foo(a: impl Sized)`.

Although the issue was reported for impl trait types, it also occurred with regular param bounds. So if we encounter `foo<T: ?Sized + ?Sized>(a: T)` we now detect that all the bounds are `?Sized` and therefore emit the suggestion to remove the entire predicate `: ?Sized + ?Sized` resulting in `foo<T>(a: T)`.

Lastly, if we encounter a situation where some of the bounds are something other than `?Sized`, then we emit separate removal suggestions for each `?Sized` bound. E.g. if we see `foo(a: impl ?Sized + Bar + ?Sized)` or `foo<T: ?Sized + Bar + ?Sized>(a: T)` we emit suggestions such that the user will be left with `foo(a : impl Bar)` or `foo<T: Bar>(a: T)` respectively.
Diffstat (limited to 'library/std/src/thread/mod.rs')
0 files changed, 0 insertions, 0 deletions