Skip to content

Commit 43e8fdd

Browse files
committed
avoid ambiguity
1 parent 22f4f8c commit 43e8fdd

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

src/InfiniteArrays.jl

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ import Statistics: mean, median
3535

3636
import FillArrays: AbstractFill, getindex_value
3737
import LazyArrays: LazyArrayStyle, _materialize, AbstractBandedLayout,
38-
ZerosLayout, VcatLayout, @lazymul, mulapplystyle
38+
ZerosLayout, VcatLayout, @lazymul, mulapplystyle, AbstractArrayApplyStyle,
39+
ArrayMuls
3940

4041
import DSP: conv
4142

@@ -93,9 +94,15 @@ UnitRange{T}(start::Integer, ::Infinity) where T<:Real = InfUnitRange{T}(start)
9394
Int(::Infinity) =
9495

9596
# stay lazy if infinite
96-
_materialize(M::Mul{<:Any,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneToInf,<:OneToInf}) = ApplyArray(M)
97-
_materialize(M::Mul{<:Any,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneToInf}) = ApplyArray(M)
98-
_materialize(M::Mul{<:Any,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneToInf,<:OneTo}) = ApplyArray(M)
99-
_materialize(M::Mul{<:Any,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneTo,<:OneToInf}) = ApplyArray(M)
97+
_materialize(M::Mul{<:AbstractArrayApplyStyle,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneToInf,<:OneToInf}) = ApplyArray(M)
98+
_materialize(M::Mul{<:AbstractArrayApplyStyle,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneToInf}) = ApplyArray(M)
99+
_materialize(M::Mul{<:AbstractArrayApplyStyle,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneToInf,<:OneTo}) = ApplyArray(M)
100+
_materialize(M::Mul{<:AbstractArrayApplyStyle,<:Tuple{Vararg{<:AbstractArray}}}, ::Tuple{<:OneTo,<:OneToInf}) = ApplyArray(M)
101+
_materialize(M::ArrayMuls, ::Tuple{<:OneToInf,<:OneToInf}) = ApplyArray(M)
102+
_materialize(M::ArrayMuls, ::Tuple{<:OneToInf}) = ApplyArray(M)
103+
_materialize(M::ArrayMuls, ::Tuple{<:OneToInf,<:OneTo}) = ApplyArray(M)
104+
_materialize(M::ArrayMuls, ::Tuple{<:OneTo,<:OneToInf}) = ApplyArray(M)
105+
106+
100107

101108
end # module

test/runtests.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,3 +585,17 @@ end
585585
@test repr(Vcat(1:∞)) == "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, …]"
586586
@test repr(Vcat(2,1:∞)) == "[2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, …]"
587587
end
588+
589+
@testset "*" begin
590+
A = Fill(1,3,∞)
591+
B = Diagonal(1:∞)
592+
C = Vcat([1,2,3], Zeros(∞))
593+
D = Vcat(Fill(1,3,∞), Zeros(∞,∞))
594+
595+
@test A*B isa ApplyArray
596+
@test size(A*B) == (3,∞)
597+
@test (A*B)[1:3,1:10] == Fill(1,3,10)*Diagonal(1:10)
598+
599+
@test_broken A*B*C isa ApplyArray
600+
@test A*B*D isa ApplyArray
601+
end

0 commit comments

Comments
 (0)