Skip to content

Commit 987f776

Browse files
committed
Treat printing as more than a nothing-return write
As raised in <JuliaLang/julia#55198>, once we look at AbstractString types outside of Core/Base, their print methods can be meaningfully different to write + returning nothing. As such, instead of delegating printing to write, we need to call _ansi_writer asking it to use the print function.
1 parent 43fb018 commit 987f776

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/io.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,11 @@ write(io::IO, s::Union{<:AnnotatedString, SubString{<:AnnotatedString}}) =
253253
_ansi_writer(io, s, write)::Int
254254

255255
print(io::IO, s::Union{<:AnnotatedString, SubString{<:AnnotatedString}}) =
256+
(_ansi_writer(io, s, print); nothing)
257+
258+
# We need to make sure that printing to an `AnnotatedIOBuffer` calls `write` not `print`
259+
# so we get the specialised handling that `_ansi_writer` doesn't provide.
260+
print(io::Base.AnnotatedIOBuffer, s::Union{<:AnnotatedString, SubString{<:AnnotatedString}}) =
256261
(write(io, s); nothing)
257262

258263
escape_string(io::IO, s::Union{<:AnnotatedString, SubString{<:AnnotatedString}},

0 commit comments

Comments
 (0)