-
Daniel Martí authored
In golang.org/cl/59413, the two-argument behavior of cmd/doc was changed to use findPackage instead of build.Import, meaning that the tool was more consistent and useful. However, it introduced a regression: $ go doc bytes Foo doc: no such package: bytes This is because the directory list search would not find Foo in bytes, and reach the end of the directory list - thus resulting in a "no such package" error, since no directory matched our first argument. Move the "no such package" error out of parseArgs, so that the "loop until something is printed" loop can have control over it. In particular, it is useful to know when we have reached the end of the list without any exact match, yet we did find one package matching "bytes": $ go doc bytes Foo doc: no symbol Foo in package bytes While at it, make the "no such package" error not be fatal so that we may test for it. It is important to have the test, as parseArgs may now return a nil package instead of exiting the entire program, potentially meaning a nil pointer dereference panic. Fixes #22810. Change-Id: I90cc6fd755e2d1675bea6d49a1c13cc18ac9bfb9 Reviewed-on: https://go-review.googlesource.com/78677 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
207c53e0