From a8a2b7173d50dff558e0b6d087ebc058c8239dbf Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Thu, 22 Mar 2018 17:33:17 -0400 Subject: [PATCH] fix #26571, use 10 as the default base in `parse(T, ::Char)` --- base/parse.jl | 2 +- test/parse.jl | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/base/parse.jl b/base/parse.jl index 7c1f51117af5d..0abb7e623980f 100644 --- a/base/parse.jl +++ b/base/parse.jl @@ -33,7 +33,7 @@ julia> parse(Complex{Float64}, "3.2e-1 + 4.5im") """ parse(T::Type, str; base = Int) -function parse(::Type{T}, c::AbstractChar; base::Integer = 36) where T<:Integer +function parse(::Type{T}, c::AbstractChar; base::Integer = 10) where T<:Integer a::Int = (base <= 36 ? 10 : 36) 2 <= base <= 62 || throw(ArgumentError("invalid base: base must be 2 ≤ base ≤ 62, got $base")) d = '0' <= c <= '9' ? c-'0' : diff --git a/test/parse.jl b/test/parse.jl index 077d0fb508b66..4107fd3171f18 100644 --- a/test/parse.jl +++ b/test/parse.jl @@ -23,8 +23,12 @@ @test parse(Int,"-10") == -10 @test parse(Int64,"3830974272") == 3830974272 @test parse(Int64,"-3830974272") == -3830974272 + @test parse(Int,'3') == 3 @test parse(Int,'3', base = 8) == 3 +@test parse(Int, 'a', base=16) == 10 +@test_throws ArgumentError parse(Int, 'a') +@test_throws ArgumentError parse(Int,typemax(Char)) # Issue 20587 for T in Any[BigInt, Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8] @@ -173,9 +177,6 @@ parsehex(s) = parse(Int,s, base = 16) @test parse(Int, "3\u2003\u202F") == 3 @test_throws ArgumentError parse(Int, "3\u2003\u202F,") -@test parse(Int,'a') == 10 -@test_throws ArgumentError parse(Int,typemax(Char)) - @test parse(Int,"1234") == 1234 @test parse(Int,"0x1234") == 0x1234 @test parse(Int,"0o1234") == 0o1234