Skip to content

Missing dispatches in the unitless case #332

@SebastianM-C

Description

@SebastianM-C

Here are some examples I found

julia> x,y = promote(1u"m", 1)
(1 m, 1)

julia> atan(1)
0.7853981633974483

julia> atan(y)
ERROR: MethodError: no method matching atan(::Quantity{Int64,NoDims,Unitful.FreeUnits{(),NoDims,nothing}})
Closest candidates are:
  atan(::Unitful.AbstractQuantity{T,D,U}, ::Unitful.AbstractQuantity{T,D,U}) where {T, D, U} at C:\Users\sebastian\.julia\packages\Unitful\PZjMS\src\quantities.jl:187
  atan(::Unitful.AbstractQuantity{T1,D,U1}, ::Unitful.AbstractQuantity{T2,D,U2}) where {T1, T2, D, U1, U2} at C:\Users\sebastian\.julia\packages\Unitful\PZjMS\src\quantities.jl:185
  atan(::Unitful.AbstractQuantity, ::Unitful.AbstractQuantity) at C:\Users\sebastian\.julia\packages\Unitful\PZjMS\src\quantities.jl:188
  ...
Stacktrace:
 [1] top-level scope at none:0

julia> xy
false

julia> yy
ERROR: type Int64 has no field val
Stacktrace:
 [1] getproperty(::Int64, ::Symbol) at .\Base.jl:33
 [2] isapprox(::Quantity{Int64,NoDims,Unitful.FreeUnits{(),NoDims,nothing}}, ::Quantity{Int64,NoDims,Unitful.FreeUnits{(),NoDims,nothing}}; atol::Int64, kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at C:\Users\sebastian\.julia\packages\Unitful\PZjMS\src\quantities.jl:245
 [3] isapprox(::Quantity{Int64,NoDims,Unitful.FreeUnits{(),NoDims,nothing}}, ::Quantity{Int64,NoDims,Unitful.FreeUnits{(),NoDims,nothing}}) at C:\Users\sebastian\.julia\packages\Unitful\PZjMS\src\quantities.jl:245
 [4] top-level scope at none:0

I could try to make a PR adding the methods for the particular cases I run into, but I'm not sure if that's the best solution. The discussion in #128 seems related.

Using ustrip is ok for user code or a package that already depends on Unitful, but in the case of writing generic code in a package that does not depend on Unitful, I don't know how to proceed (hence this issue).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions