From 431961d9966c3c2da72763a8bbb3fa3728abec88 Mon Sep 17 00:00:00 2001 From: "David J. C. Beach" Date: Thu, 18 Aug 2016 12:16:17 -0600 Subject: [PATCH] Implement convert(::Type{String}, x::Symbol) This is the underlying support for calling String(::Symbol). Bug fix for issue #16997 --- base/strings/basic.jl | 1 + test/strings/basic.jl | 1 + 2 files changed, 2 insertions(+) diff --git a/base/strings/basic.jl b/base/strings/basic.jl index 00a33f8ddc256..c2876fd04f87a 100644 --- a/base/strings/basic.jl +++ b/base/strings/basic.jl @@ -62,6 +62,7 @@ convert(::Type{Array{UInt8}}, s::AbstractString) = String(s).data convert(::Type{String}, s::AbstractString) = String(s) convert(::Type{Vector{Char}}, s::AbstractString) = collect(s) convert(::Type{Symbol}, s::AbstractString) = Symbol(s) +convert(::Type{String}, s::Symbol) = unsafe_string(Cstring(s)) ## generic supplied functions ## diff --git a/test/strings/basic.jl b/test/strings/basic.jl index 55398736d9976..e37371cb48fb4 100644 --- a/test/strings/basic.jl +++ b/test/strings/basic.jl @@ -55,6 +55,7 @@ let # make symbol with invalid char sym = Symbol(Char(0xdcdb)) @test string(sym) == string(Char(0xdcdb)) + @test String(sym) == string(Char(0xdcdb)) @test expand(sym) === sym res = string(parse(string(Char(0xdcdb)," = 1"),1,raise=false)[1]) @test res == """\$(Expr(:error, "invalid character \\\"\\udcdb\\\"\"))"""