Binding docstring to struct field

Why does field docstring generation depend on where it was defined?

In a file:

# MyModule.jl
module MyModule
"A docstring"
struct A
    "a docstring"
    a::Int64
end
end
julia> include("MyModule.jl")
Main.MyModule

help?> MyModule.A.a
  a docstring

In the REPL

julia> ex = :(struct B
       "b docstring"
       b::Int64
       end);

julia> @eval $ex

help?> B.b
  B has fields b.
2 Likes

Bump, just in case anybody knows

I don’t know the underlying reason why, but observe in the REPL:

julia> struct B
           "b docstring"
            b::Int64
       end;

help?> B.b
  B has fields b.

while

julia> "Module B"
        struct B
           "b docstring"
            b::Int64
       end

help?> B.b
  b docstring

So it seems it’s not include versus REPL, but the use of a docstring for the module definition.

You can “see” the docstring registration via Docs.meta(Main).

Actually, possibly related to an open issue (from 2016):
docstrings for inner constructors are ignored · Issue #16730 · JuliaLang/julia · GitHub

1 Like