aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Matloob <matloob@golang.org>2019-12-13 16:53:28 -0500
committerMichael Matloob <matloob@golang.org>2019-12-16 17:34:59 +0000
commit499dc1c5d583a2a0735d4e408078819b84697e2e (patch)
tree202ddf825cbd4e636f9615905e4a274ae6119a3c
parenta3dc6da6d6d25666d24bab293c0990d1b07bb798 (diff)
downloadgo-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.txt13
-rw-r--r--src/go/doc/example.go3
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") {