JuliaMath / Infinities.jl

A Julia package for representing infinity in all its forms

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Potentially problematic method definition

jishnub opened this issue · comments

Base.to_shape(dims::Tuple{Vararg{Union{Infinity, Integer, AbstractUnitRange}}}) = map(Base.to_shape, dims)

Aqua flags this method as potential type-piracy (see JuliaTesting/Aqua.jl#173). I think this is fine, and the flag is a false positive, but why do we need this method? Is a real infinity used as an array size or index, as opposed to the integer ℵ₀?

It is indeed a false positive as all potential ambiguities have more restricted definitions eg

julia> @which Base.to_shape((),)
to_shape(::Tuple{})
     @ Base abstractarray.jl:851

Is a real infinity used as an array size or index, as opposed to the integer ℵ₀?

This is possibly just outdated code (it used to be the case that ∞ isa Integer hence played the role of ℵ₀). Alternatively it was to support a[∞] instead of a[ℵ₀].

Try deleting it and see if anything breaks?