Commit 2c9fff8
Use type inference for blocktype instead of runtime mapreduce
The generic `blocktype(::AbstractArray)` previously used
`mapreduce(typeof, promote_type, blocks(a))` which relied on
aggressive const-propagation for type stability and failed on
empty arrays. Replace with `eltype_inferred(blocks(a))` which
uses static type parameters by default, with a `BlocksView`
specialization that uses `promote_op` for a tighter result.
Relax the `BlockedArray` `blocktype` test from `@constinferred`
to a plain subtype check since the inferred type may be abstract
or a Union depending on the parent array type.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent b89c568 commit 2c9fff8
3 files changed
Lines changed: 10 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
Lines changed: 7 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
| 3 | + | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
83 | 81 | | |
84 | 82 | | |
| 83 | + | |
| 84 | + | |
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
| |||
526 | 526 | | |
527 | 527 | | |
528 | 528 | | |
529 | | - | |
530 | 529 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
174 | 174 | | |
175 | 175 | | |
176 | 176 | | |
177 | | - | |
178 | | - | |
179 | | - | |
| 177 | + | |
| 178 | + | |
180 | 179 | | |
181 | 180 | | |
182 | 181 | | |
| |||
0 commit comments