Conditional functions within functions

I hope you don’t mind, but I’d really like to understand this point a little better. Consider this example:

julia> function f(; a=2)
           println(typeof(a))
           a
       end
f (generic function with 1 method)

julia> f()
Int64
2

julia> f(a=2)
Int64
2

These two calls return the same thing, but the first one correctly infers that the return type is Int64, while the second one does not (according to @code_warntype). It seems like if keyword arguments were specialized on, then the compiler should be able to work out the return type in the second case as well.