Skip to content

Commit 150a837

Browse files
committed
Update package to 0.7
1 parent b78b405 commit 150a837

File tree

5 files changed

+59
-76
lines changed

5 files changed

+59
-76
lines changed

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ os:
44
- linux
55
- osx
66
julia:
7-
- 0.5
8-
- 0.6
7+
- 0.7
8+
- 1.0
99
- nightly
1010
notifications:
1111
email: false
@@ -15,4 +15,4 @@ notifications:
1515
# - julia -e 'Pkg.clone(pwd()); Pkg.build("RoundingIntegers"); Pkg.test("RoundingIntegers"; coverage=true)'
1616
after_success:
1717
# push coverage results to Codecov
18-
- julia -e 'cd(Pkg.dir("RoundingIntegers")); Pkg.add("Coverage"); using Coverage; Codecov.submit(Codecov.process_folder())'
18+
- julia -e 'using RoundingIntegers, Pkg; cd(dirname(dirname(pathof(RoundingIntegers)))); Pkg.add("Coverage"); using Coverage; Codecov.submit(Codecov.process_folder())'

REQUIRE

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
julia 0.7
2-
Compat 0.17

appveyor.yml

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
environment:
22
matrix:
3-
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x86/0.5/julia-0.5-latest-win32.exe"
4-
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x64/0.5/julia-0.5-latest-win64.exe"
5-
- JULIA_URL: "https://julialangnightlies-s3.julialang.org/bin/winnt/x86/julia-latest-win32.exe"
6-
- JULIA_URL: "https://julialangnightlies-s3.julialang.org/bin/winnt/x64/julia-latest-win64.exe"
3+
- julia_version: 0.7
4+
- julia_version: 1
5+
- julia_version: nightly
6+
7+
platform:
8+
- x86 # 32-bit
9+
- x64 # 64-bit
10+
11+
# # Uncomment the following lines to allow failures on nightly julia
12+
# # (tests will run but not make your overall status red)
13+
# matrix:
14+
# allow_failures:
15+
# - julia_version: nightly
716

817
branches:
918
only:
@@ -17,19 +26,18 @@ notifications:
1726
on_build_status_changed: false
1827

1928
install:
20-
- ps: "[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12"
21-
# Download most recent Julia Windows binary
22-
- ps: (new-object net.webclient).DownloadFile(
23-
$env:JULIA_URL,
24-
"C:\projects\julia-binary.exe")
25-
# Run installer silently, output to C:\projects\julia
26-
- C:\projects\julia-binary.exe /S /D=C:\projects\julia
29+
- ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1"))
2730

2831
build_script:
29-
# Need to convert from shallow to complete for Pkg.clone to work
30-
- IF EXIST .git\shallow (git fetch --unshallow)
31-
- C:\projects\julia\bin\julia -e "versioninfo();
32-
Pkg.clone(pwd(), \"RoundingIntegers\"); Pkg.build(\"RoundingIntegers\")"
32+
- echo "%JL_BUILD_SCRIPT%"
33+
- C:\julia\bin\julia -e "%JL_BUILD_SCRIPT%"
3334

3435
test_script:
35-
- C:\projects\julia\bin\julia -e "Pkg.test(\"RoundingIntegers\")"
36+
- echo "%JL_TEST_SCRIPT%"
37+
- C:\julia\bin\julia -e "%JL_TEST_SCRIPT%"
38+
39+
# # Uncomment to support code coverage upload. Should only be enabled for packages
40+
# # which would have coverage gaps without running on Windows
41+
# on_success:
42+
# - echo "%JL_CODECOV_SCRIPT%"
43+
# - C:\julia\bin\julia -e "%JL_CODECOV_SCRIPT%"

src/RoundingIntegers.jl

Lines changed: 29 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
module RoundingIntegers
22

3-
using Compat
4-
import Base: <, <=, +, -, *, ~, &, |, $, <<, >>, >>>
3+
import Base: <, <=, +, -, *, ~, &, |, <<, >>, >>>, xor
54

65
export RSigned, RUnsigned, RInteger
76
export RInt8, RUInt8, RInt16, RUInt16, RInt32, RUInt32, RInt64, RUInt64,
@@ -63,62 +62,40 @@ rtype(x::Union{Signed,Unsigned}) = rtype(typeof(x))
6362
# RIntegers are largely about assignment; for usage, we convert to
6463
# standard integers at the drop of a hat.
6564

66-
Base.promote_rule(::Type{T}, ::Type{RI}) where {T<:Number,RI<:RInteger} =
65+
Base.promote_rule(::Type{RI}, ::Type{T}) where {T<:Number,RI<:RInteger} =
6766
promote_type(T, itype(RI))
68-
# Resolve ambiguities
69-
Base.promote_rule(::Type{Bool}, ::Type{RI}) where {RI<:RInteger} =
70-
promote_type(Bool, itype(RI))
71-
Base.promote_rule(::Type{BigInt}, ::Type{RI}) where {RI<:RInteger} =
72-
promote_type(BigInt, itype(RI))
73-
Base.promote_rule(::Type{BigFloat}, ::Type{RI}) where {RI<:RInteger} =
74-
promote_type(BigFloat, itype(RI))
75-
Base.promote_rule(::Type{Complex{T}}, ::Type{RI}) where {T<:Real,RI<:RInteger} =
76-
promote_type(Complex{T}, itype(RI))
77-
Base.promote_rule(::Type{Rational{T}}, ::Type{RI}) where {T<:Integer,RI<:RInteger} =
78-
promote_type(Rational{T}, itype(RI))
79-
Base.promote_rule(::Type{<:Irrational}, ::Type{RI}) where {RI<:RInteger} =
80-
promote_type(Float64, itype(RI))
81-
82-
Signed(x::RSigned) = reinterpret(itype(x), x)
83-
Unsigned(x::RUnsigned) = reinterpret(itype(x), x)
67+
68+
Base.Signed(x::RSigned) = reinterpret(itype(x), x)
69+
Base.Unsigned(x::RUnsigned) = reinterpret(itype(x), x)
8470
RSigned(x::Signed) = reinterpret(rtype(x), x)
8571
RUnsigned(x::Unsigned) = reinterpret(rtype(x), x)
86-
Integer(x::RSigned) = Signed(x)
87-
Integer(x::RUnsigned) = Unsigned(x)
72+
Base.Integer(x::RSigned) = Signed(x)
73+
Base.Integer(x::RUnsigned) = Unsigned(x)
8874
RInteger(x::Signed) = RSigned(x)
8975
RInteger(x::Unsigned) = RUnsigned(x)
9076

91-
# Basic conversions
92-
# @inline Base.convert{T<:RSigned}(::Type{T}, x::T) = x
93-
# @inline Base.convert{T<:RUnsigned}(::Type{T}, x::T) = x
94-
@inline Base.convert(::Type{T}, x::T) where {T<:RInteger} = x
95-
@inline Base.convert(::Type{T}, x::RInteger) where {T<:RInteger} =
96-
RInteger(convert(itype(T), Integer(x)))
97-
@inline Base.convert(::Type{T}, x::Integer) where {T<:RInteger} = RInteger(convert(itype(T), x))
98-
@inline Base.convert(::Type{T}, x::AbstractFloat) where {T<:RInteger} =
99-
RInteger(round(itype(T), digits=x))
100-
@inline Base.convert(::Type{T}, x::Number) where {T<:RInteger} =
101-
convert(T, convert(itype(T), x))
77+
Base.AbstractFloat(x::RInteger) = AbstractFloat(Integer(x))
78+
79+
RInt8(x::Int8) = reinterpret(RInt8, x)
80+
RUInt8(x::UInt8) = reinterpret(RUInt8, x)
81+
RInt16(x::Int16) = reinterpret(RInt16, x)
82+
RUInt16(x::UInt16) = reinterpret(RUInt16, x)
83+
RInt32(x::Int32) = reinterpret(RInt32, x)
84+
RUInt32(x::UInt32) = reinterpret(RUInt32, x)
85+
RInt64(x::Int64) = reinterpret(RInt64, x)
86+
RUInt64(x::UInt64) = reinterpret(RUInt64, x)
87+
RInt128(x::Int128) = reinterpret(RInt128, x)
88+
RUInt128(x::UInt128) = reinterpret(RUInt128, x)
89+
90+
(::Type{R})(x::Integer) where R<:RInteger = R(convert(itype(R), x))
91+
(::Type{R})(x::Float16) where R<:RInteger = R(round(itype(R), x))
92+
(::Type{R})(x::BigFloat) where R<:RInteger = R(round(itype(R), x))
93+
(::Type{R})(x::Rational) where R<:RInteger = R(round(itype(R), x))
94+
(::Type{R})(x::Complex) where R<:RInteger = R(round(itype(R), x))
95+
(::Type{R})(x::AbstractFloat) where R<:RInteger = R(round(itype(R), x))
10296

10397
@inline Base.convert(::Type{T}, x::RInteger) where {T<:Number} = convert(T, Integer(x))
10498

105-
# Resolve ambiguities
106-
Base.convert(::Type{Integer}, x::RInteger) = Integer(x)
107-
Base.convert(::Type{BigInt}, x::RInteger) = convert(BigInt, Integer(x))
108-
Base.convert(::Type{T}, x::BigInt) where {T<:RInteger} = RInteger(convert(itype(T), x))
109-
Base.convert(::Type{BigFloat}, x::RInteger) = convert(BigFloat, Integer(x))
110-
Base.convert(::Type{T}, x::BigFloat) where {T<:RInteger} = RInteger(convert(itype(T), x))
111-
Base.convert(::Type{Complex{T}}, x::RInteger) where {T<:Real} = convert(Complex{T}, Integer(x))
112-
Base.convert(::Type{T}, z::Complex) where {T<:RInteger} = RInteger(convert(itype(T), z))
113-
Base.convert(::Type{Complex}, x::RInteger) = Complex(x)
114-
Base.convert(::Type{T}, x::Rational) where {T<:RInteger} = RInteger(convert(itype(T)), x)
115-
Base.convert(::Type{Rational{T}}, x::RInteger) where {T<:Integer} =
116-
convert(Rational{T}, Integer(x))
117-
Base.convert(::Type{Rational}, x::RInteger) = convert(Rational{typeof(x)}, x)
118-
Base.convert(::Type{Float16}, x::RInteger) = convert(Float16, Integer(x))
119-
Base.convert(::Type{T}, x::Float16) where {T<:RInteger} = RInteger(convert(itype(T), x))
120-
Base.convert(::Type{Bool}, x::RInteger) = convert(Bool, Integer(x))
121-
12299
# rem conversions
123100
@inline Base.rem(x::T, ::Type{T}) where {T<:RInteger} = T
124101
@inline Base.rem(x::Integer, ::Type{T}) where {T<:RInteger} = RInteger(rem(x, itype(T)))
@@ -135,6 +112,8 @@ Base.count_ones(x::RInteger) = count_ones(Integer(x))
135112
Base.leading_zeros(x::RInteger) = leading_zeros(Integer(x))
136113
Base.trailing_zeros(x::RInteger) = trailing_zeros(Integer(x))
137114
Base.ndigits0z(x::RInteger) = Base.ndigits0z(Integer(x))
115+
Base.ndigits0zpb(x::RSigned, b::Integer) = Base.ndigits0zpb(abs(Integer(x)), Int(b))
116+
Base.ndigits0zpb(x::RUnsigned, b::Integer) = Base.ndigits0zpb(Integer(x), Int(b))
138117

139118
# A few operations preserve the type
140119
-(x::RInteger) = RInteger(-Integer(x))
@@ -156,8 +135,7 @@ Base.ndigits0z(x::RInteger) = Base.ndigits0z(Integer(x))
156135
*(x::T, y::T) where {T<:RInteger} = RInteger(Integer(x) * Integer(y))
157136
(&)(x::T, y::T) where {T<:RInteger} = RInteger(Integer(x) & Integer(y))
158137
(|)(x::T, y::T) where {T<:RInteger} = RInteger(Integer(x) | Integer(y))
159-
# ($){T<:RInteger}(x::T, y::T) = RInteger(Integer(x) $ Integer(y))
160-
Compat.xor(x::T, y::T) where {T<:RInteger} = RInteger(xor(Integer(x), Integer(y)))
138+
xor(x::T, y::T) where {T<:RInteger} = RInteger(xor(Integer(x), Integer(y)))
161139

162140
Base.rem(x::T, y::T) where {T<:RInteger} = RInteger(rem(Integer(x), Integer(y)))
163141
Base.mod(x::T, y::T) where {T<:RInteger} = RInteger(mod(Integer(x), Integer(y)))

test/runtests.jl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
using Compat, Test
2-
ambs0 = detect_ambiguities(Base, Core, Compat)
1+
using Test
32
using RoundingIntegers
4-
ambs1 = detect_ambiguities(Base, Core, Compat, RoundingIntegers)
5-
@test isempty(setdiff(ambs1, ambs0))
3+
@test isempty(detect_ambiguities(Base, Core, RoundingIntegers))
64

75
@testset "Basics" begin
86
r16 = RInt16(3)
@@ -57,7 +55,7 @@ ambs1 = detect_ambiguities(Base, Core, Compat, RoundingIntegers)
5755
@test !signbit(r)
5856
@test copysign(r, r) === r
5957
@test unsigned(r) === RUInt(5)
60-
@test hex(r) == "5"
58+
@test string(r, base=16) == "5"
6159

6260
@test string(RInt(7.2)) == "7"
6361
end

0 commit comments

Comments
 (0)