# Return type of readline function

**URL:** <https://discourse.julialang.org/t/return-type-of-readline-function/115437>\
**Category:** General Usage\
**Tags:** type\
**Created:** [June 10, 2024, 3:57pm UTC](https://discourse.julialang.org/t/return-type-of-readline-function/115437 "2024-06-10T15:57:24Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![EarlMilktea](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/earlmilktea/32/209884_2.png) [@EarlMilktea](https://discourse.julialang.org/u/EarlMilktea)\
**Post date:** [June 10, 2024, 3:57pm UTC](https://discourse.julialang.org/t/return-type-of-readline-function/115437/1 "2024-06-10T15:57:24Z")

</div>

Suppose you want to read from stdin:

```julia
function main()
    println("Reading...")
    readline()
end

```

For this code, `@code_warntype` says the return type is `Any`, even though it seems really unlikely to me that `readline` returns non-`String` value.

Can it really occur?

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [June 10, 2024, 4:00pm UTC](https://discourse.julialang.org/t/return-type-of-readline-function/115437/2 "2024-06-10T16:00:55Z")

</div>

> [@EarlMilktea](#):
>
> For this code, `@code_warntype` says the return type is `Any`

It says `String` for me (Julia 1.10.3):

```julia
julia> @code_warntype main()
MethodInstance for main()
  from main() @ Main REPL[9]:1
Arguments
  #self#::Core.Const(main)
Body::String
1 ─ Main.println("Reading...")
│ %2 = Main.readline()::String
└── return %2

```

---

<div class="post-metadata">

**Author:** ![EarlMilktea](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/earlmilktea/32/209884_2.png) [@EarlMilktea](https://discourse.julialang.org/u/EarlMilktea)\
**Post date:** [June 11, 2024, 1:00pm UTC](https://discourse.julialang.org/t/return-type-of-readline-function/115437/3 "2024-06-11T13:00:16Z")

</div>

Interesting…

@stevengj

Could you tell me about your environment?  
I’m using Julia 1.10.4 on archlinux.

Here is the implementation of `readline`:

```julia
function readline(s::IOStream; keep::Bool=false)
    @_lock_ios s ccall(:jl_readuntil, Ref{String}, (Ptr{Cvoid}, UInt8, UInt8, UInt8), s.ios, '\n', 1, keep ? 0 : 2)
end

```

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [June 11, 2024, 1:04pm UTC](https://discourse.julialang.org/t/return-type-of-readline-function/115437/4 "2024-06-11T13:04:44Z")

</div>

> [@EarlMilktea](#):
>
> Could you tell me about your environment?  
> I’m using Julia 1.10.4 on archlinux.

I just updated to Julia 1.10.4, same result. I’m on `macOS (arm64-apple-darwin22.4.0)`.
