Skip to content

Commit d3505c4

Browse files
authored
promote_rule for RangeCumSum (#220)
1 parent bca3a6b commit d3505c4

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ArrayLayouts"
22
uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "1.8.0"
4+
version = "1.9.0-dev"
55

66
[deps]
77
FillArrays = "1a297f60-69ca-5386-bcde-b61e274b549b"

src/cumsum.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ axes(c::RangeCumsum) = axes(c.range)
1212

1313
Base.parent(r::RangeCumsum) = r.range
1414

15+
function Base.promote_rule(::Type{RangeCumsum{T1, R1}}, ::Type{RangeCumsum{T2, R2}}) where {T1,T2,R1,R2}
16+
R = promote_type(R1, R2)
17+
RangeCumsum{promote_type(T1, T2), R}
18+
end
19+
1520
==(a::RangeCumsum, b::RangeCumsum) = a.range == b.range
1621
BroadcastStyle(::Type{<:RangeCumsum{<:Any,RR}}) where RR = BroadcastStyle(RR)
1722

test/test_cumsum.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ cmpop(p) = isinteger(real(first(p))) && isinteger(real(step(p))) ? (==) : (≈)
3636
@test repr(r) == "$RangeCumsum($p)"
3737
end
3838

39+
@testset "promote" begin
40+
r1 = RangeCumsum(Int8(1):Int8(3))
41+
r2 = RangeCumsum(Float32(1):Float32(3))
42+
@test promote(r1, r2) == (r2, r2)
43+
end
44+
3945
a,b = RangeCumsum(Base.OneTo(5)), RangeCumsum(Base.OneTo(6))
4046
@test union(a,b) union(b,a) b
4147
@test sort!(copy(a)) == a

0 commit comments

Comments
 (0)