diff options
author | Michael Matloob <matloob@golang.org> | 2019-12-13 16:53:28 -0500 |
---|---|---|
committer | Michael Matloob <matloob@golang.org> | 2019-12-16 17:34:59 +0000 |
commit | 499dc1c5d583a2a0735d4e408078819b84697e2e (patch) | |
tree | 202ddf825cbd4e636f9615905e4a274ae6119a3c | |
parent | a3dc6da6d6d25666d24bab293c0990d1b07bb798 (diff) | |
download | go-499dc1c5d583a2a0735d4e408078819b84697e2e.tar.gz go-499dc1c5d583a2a0735d4e408078819b84697e2e.zip |
go/doc: ignore example functions with arguments
An Example function with arguments is not a valid example to be
run with go test. Don't return those functions from Examples. This
means that some functions that were previously showing up in
Examples will no longer show up. But those functions were not being
tested properly so the fact that they were showing up is misleading.
This fixes an issue where a confusing compiler error was showing
up when running go test on a file with an invalid example. While
that issue could have been fixed by returning an error, this is
more consistent with the behavior of go/doc.Examples, and the tests
checker in vet will catch this issue.
Fixes #35284
Change-Id: I2101a7d19f38522ef9c2e50967f9cfb30d28c730
Reviewed-on: https://go-review.googlesource.com/c/go/+/211357
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
-rw-r--r-- | src/cmd/go/testdata/script/test_bad_example.txt | 13 | ||||
-rw-r--r-- | src/go/doc/example.go | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/cmd/go/testdata/script/test_bad_example.txt b/src/cmd/go/testdata/script/test_bad_example.txt new file mode 100644 index 0000000000..1d147b663f --- /dev/null +++ b/src/cmd/go/testdata/script/test_bad_example.txt @@ -0,0 +1,13 @@ +# Tests that invalid examples are ignored. +# Verifies golang.org/issue/35284 +go test x_test.go + +-- x_test.go -- +package x + +import "fmt" + +func ExampleThisShouldNotHaveAParameter(thisShouldntExist int) { + fmt.Println("X") + // Output: +}
\ No newline at end of file diff --git a/src/go/doc/example.go b/src/go/doc/example.go index f337f2c2d7..868db8a23f 100644 --- a/src/go/doc/example.go +++ b/src/go/doc/example.go @@ -62,6 +62,9 @@ func Examples(testFiles ...*ast.File) []*Example { if !ok || f.Recv != nil { continue } + if params := f.Type.Params; params.List != nil { + continue // function has params; not a valid example + } numDecl++ name := f.Name.Name if isTest(name, "Test") || isTest(name, "Benchmark") { |