• Joe Tsai's avatar
    cmd/doc: handle embedded interfaces properly · f5758739
    Joe Tsai authored
    Changes made:
    * Disallow star expression on interfaces as this is not possible.
    * Show an embedded "error" in an interface as public similar to
    how godoc does it.
    * Properly handle selector expressions in both structs and interfaces.
    This is possible since a type may refer to something defined in
    another package (e.g. io.Reader).
    
    Before:
    <<<
    $ go doc runtime.Error
    type Error interface {
    
        // RuntimeError is a no-op function but
        // serves to distinguish types that are run time
        // errors from ordinary errors: a type is a
        // run time error if it has a RuntimeError method.
        RuntimeError()
        // Has unexported methods.
    }
    
    $ go doc compress/flate Reader
    doc: invalid program: unexpected type for embedded field
    doc: invalid program: unexpected type for embedded field
    type Reader interface {
        io.Reader
        io.ByteReader
    }
    >
    > After:
    > <<<
    > $ go doc runtime.Error
    > type Error interface {
    >     error
    >
    >     // RuntimeError is a no-op function but
    >     // serves to distinguish types that are run time
    >     // errors from ordinary errors: a type is a
    >     // run time error if it has a RuntimeError method.
    >     RuntimeError()
    > }
    >
    > $ go doc compress/flate Reader
    > type Reader interface {
    >     io.Reader
    >     io.ByteReader
    > }
    
    Fixes #16567
    
    Change-Id: I272dede971eee9f43173966233eb8810e4a8c907
    Reviewed-on: https://go-review.googlesource.com/25365Reviewed-by: 's avatarRob Pike <r@golang.org>
    Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    f5758739
doc_test.go 13.4 KB