baf1494374
9807: Implicit `Sized` bounds r=iDawer a=iDawer This should close #8984 `hir_ty`: - Type parameters, associated types and `impl Trait` are `Sized` by deafault except `Self` in a trait. - Implicit `Sized` bound is added to end of predicate list. It does not check if such bound is present already. Also it does not track the bound is implicit. - Allowed ambiguous unsize coercion if Chalk returns definite guidance. - Allowed ambiguous autoderef if Chalk returns definite guidance. `hir_def`: - `ItemTree` pretty printing shows `?Sized` bounds. `HirDisplay`: - `impl Trait` with weird bounds rendered correctly. - `Sized`/`?Sized` bounds are not shown if they are default. ### Perf `./target/rust-analyzer-baseline_8a843113 -q analysis-stats --memory-usage .` ``` Database loaded: 1.63s, 287minstr, 91mb crates: 38, mods: 741, decls: 15914, fns: 11835 Item Collection: 26.80s, 73ginstr, 338mb exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 174 Inference: 50.28s, 116ginstr, 516mb Total: 77.08s, 189ginstr, 855mb ``` `./target/rust-analyzer-sized-fixed_ambig_coercion-de074fe6 -q analysis-stats --memory-usage .` ``` Database loaded: 1.63s, 287minstr, 91mb crates: 38, mods: 741, decls: 15914, fns: 11835 Item Collection: 26.95s, 73ginstr, 338mb exprs: 318994, ??ty: 398 (0%), ?ty: 435 (0%), !ty: 166 Inference: 96.39s, 234ginstr, 543mb Total: 123.33s, 307ginstr, 881mb ``` Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com> |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |