From 88b51d2e630738f9396e3825eafd90d03727ec0d Mon Sep 17 00:00:00 2001 From: Shengyu Zhang Date: Tue, 23 Aug 2022 02:27:04 +0000 Subject: [PATCH] go/printer: make ExampleFprint correctly run as online example MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit function "ExampleFprint" will be rewritten to function "main" when displayed on the godoc pages, so the online example is failed to run: Output: panic: function not found goroutine 1 [running]: main.parseFunc({0x4f772e, 0xf}, {0x4f713f, 0xd}) /tmp/sandbox1264544227/prog.go:23 +0x13b main.main() /tmp/sandbox1264544227/prog.go:30 +0x45 See: https://pkg.go.dev/go/printer#example-Fprint Add printSelf function to prevent the function not found when running in godoc sandbox. Beside, deleting the dummy test function to make the example show the entire file, as we want to show the newly added printSelf function. Change-Id: Ia2b772937081b58a0fce9860838959c95f2d650c GitHub-Last-Rev: bac11891735e48b8ffe99cd1096bcb3f08c6575d GitHub-Pull-Request: golang/go#53141 Reviewed-on: https://go-review.googlesource.com/c/go/+/409314 TryBot-Result: Gopher Robot Run-TryBot: Daniel Martí Reviewed-by: Heschi Kreinick Reviewed-by: Bryan Mills Reviewed-by: Daniel Martí --- src/go/printer/example_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/go/printer/example_test.go b/src/go/printer/example_test.go index 30816931a8..f7d72d136d 100644 --- a/src/go/printer/example_test.go +++ b/src/go/printer/example_test.go @@ -12,12 +12,8 @@ import ( "go/printer" "go/token" "strings" - "testing" ) -// Dummy test function so that godoc does not use the entire file as example. -func Test(*testing.T) {} - func parseFunc(filename, functionname string) (fun *ast.FuncDecl, fset *token.FileSet) { fset = token.NewFileSet() if file, err := parser.ParseFile(fset, filename, nil, 0); err == nil { @@ -31,11 +27,11 @@ func parseFunc(filename, functionname string) (fun *ast.FuncDecl, fset *token.Fi panic("function not found") } -func ExampleFprint() { +func printSelf() { // Parse source file and extract the AST without comments for // this function, with position information referring to the // file set fset. - funcAST, fset := parseFunc("example_test.go", "ExampleFprint") + funcAST, fset := parseFunc("example_test.go", "printSelf") // Print the function body into buffer buf. // The file set is provided to the printer so that it knows @@ -52,9 +48,13 @@ func ExampleFprint() { // Print the cleaned-up body text to stdout. fmt.Println(s) +} + +func ExampleFprint() { + printSelf() - // output: - // funcAST, fset := parseFunc("example_test.go", "ExampleFprint") + // Output: + // funcAST, fset := parseFunc("example_test.go", "printSelf") // // var buf bytes.Buffer // printer.Fprint(&buf, fset, funcAST.Body) -- 2.50.0