Commit 6667ea1
committed
Don't trigger
The lint fired on return types such as `Box<[T; N]>`, suggesting to return the
array unboxed. The size of such a type depends on generic parameters and cannot
be computed here: `approx_ty_size` falls back to `0` for an array with a const-
generic length or a generic element type, so the size check always passed.
Use the type's layout directly and only lint when it can actually be computed.
This keeps the existing behaviour for concrete types (and for generic types with
a known layout such as `Box<Vec<T>>`) while no longer suggesting to unbox a value
whose size is unknown and potentially large.unnecessary_box_returns when the size depends on generics1 parent 3dcef78 commit 6667ea1
2 files changed
Lines changed: 18 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
85 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
86 | 91 | | |
87 | 92 | | |
88 | 93 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
74 | 84 | | |
75 | 85 | | |
76 | 86 | | |
| |||
0 commit comments