fix: Wrong Sized
predicate for generic_predicates_for_param
#17939
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I found this gathers wrong
Self: Sized
bound while implementing object safety, though I couldn't find proper test for this.If we call
generic_predicates_for_param
toBar
in the following code;it returns
T: Sized
andSelf: Sized
bound, because normaly, the?Sized
bound applied properly in L1059 with;rust-analyzer/crates/hir-ty/src/lower.rs
Lines 1035 to 1061 in 3723e59
But we filter them before it is lowered with that function here;
rust-analyzer/crates/hir-ty/src/lower.rs
Lines 1540 to 1586 in 3723e59
So, the
?Sized
bounded params are not gathered intoctx.unsized_types
and thus we are applying them implicitSized
bound here;rust-analyzer/crates/hir-ty/src/lower.rs
Lines 1591 to 1602 in 3723e59