diff --git a/src/longlonguint.jl b/src/longlonguint.jl index 00774a9..ce3a7ee 100644 --- a/src/longlonguint.jl +++ b/src/longlonguint.jl @@ -23,8 +23,8 @@ Base.zero(::Type{LongLongUInt{C}}) where {C} = LongLongUInt{C}(ntuple(_->UInt(0) Base.zero(::LongLongUInt{C}) where {C} = zero(LongLongUInt{C}) # convert from integers LongLongUInt{C}(x::T) where {C, T<:Integer} = LongLongUInt{C}(ntuple(i->i==C ? UInt(x) : zero(UInt), Val{C}())) -Base.promote_type(::Type{LongLongUInt{C}}, ::Type{Int}) where {C} = LongLongUInt{C} -Base.promote_type(::Type{LongLongUInt{C}}, ::Type{UInt}) where {C} = LongLongUInt{C} +Base.promote_rule(::Type{LongLongUInt{C}}, ::Type{Int}) where {C} = LongLongUInt{C} +Base.promote_rule(::Type{LongLongUInt{C}}, ::Type{UInt}) where {C} = LongLongUInt{C} function Base.mod(x::LongLongUInt{C}, D::Int) where {C} D == 2 ? mod(x.content[end], 2) : error("mod only supports 2") end @@ -134,4 +134,4 @@ function longinttype(n::Int, D::Int) end Base.hash(x::LongLongUInt{1}) = hash(x.content[1]) -Base.hash(x::LongLongUInt{C}) where{C} = hash(x.content) \ No newline at end of file +Base.hash(x::LongLongUInt{C}) where{C} = hash(x.content) diff --git a/test/longlonguint.jl b/test/longlonguint.jl index a53b5c3..22e645b 100644 --- a/test/longlonguint.jl +++ b/test/longlonguint.jl @@ -14,6 +14,7 @@ using Test, BitBasis @test x >> 1 == LongLongUInt((UInt(1), UInt(3) + UInt(1)<<63)) @test count_ones(x) == 4 @test ~x == LongLongUInt((~UInt(3), ~UInt(6))) + @test promote(UInt(1), LongLongUInt((3, 4))) == (LongLongUInt((0, 1)), LongLongUInt((3, 4))) y = LongLongUInt((5, 7)) @test one(y) == LongLongUInt((0, 1)) @@ -120,4 +121,4 @@ end xs = [LongLongUInt((3, 6)), LongLongUInt((3, 7)), LongLongUInt((2, 4))] sorted_xs = sort(xs) @test sorted_xs == [LongLongUInt((2, 4)), LongLongUInt((3, 6)), LongLongUInt((3, 7))] -end \ No newline at end of file +end