// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package fetch

import (
	"net/http"
	"strings"

	"golang.org/x/pkgsite/internal"
	"golang.org/x/pkgsite/internal/derrors"
	"golang.org/x/pkgsite/internal/godoc"
	"golang.org/x/pkgsite/internal/proxy"
	"golang.org/x/pkgsite/internal/source"
	"golang.org/x/pkgsite/internal/stdlib"
	"golang.org/x/pkgsite/internal/testing/testhelper"
)

type testModule struct {
	mod        *proxy.Module
	fr         *FetchResult
	docStrings map[string][]string
}

var moduleOnePackage = &testModule{
	mod: &proxy.Module{
		ModulePath: "github.com/basic",
		Files: map[string]string{
			"README.md":  "THIS IS A README",
			"foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nimport \"net/http\"\nconst OK = http.StatusOK",
			"LICENSE":    testhelper.BSD0License,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/basic",
				HasGoMod:   false,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/basic",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "THIS IS A README",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "github.com/basic/foo",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo exports a helpful constant.",
						API:      []*internal.Symbol{{Name: "OK", Synopsis: "const OK", Section: "Constants", Kind: "Constant"}},
					}},
					Imports: []string{"net/http"},
				},
			},
		},
	},
}

var moduleMultiPackage = &testModule{
	mod: &proxy.Module{
		ModulePath: "github.com/my/module",
		Files: map[string]string{
			"go.mod":        "module github.com/my/module\n\ngo 1.12",
			"LICENSE":       testhelper.BSD0License,
			"README.md":     "README FILE FOR TESTING.",
			"bar/COPYING":   testhelper.MITLicense,
			"bar/README.md": "Another README FILE FOR TESTING.",
			"bar/bar.go": `
			// package bar
			package bar

			// Bar returns the string "bar".
			func Bar() string {
				return "bar"
			}`,
			"foo/LICENSE.md": testhelper.MITLicense,
			"foo/foo.go": `
			// package foo
			package foo

			import (
				"fmt"

				"github.com/my/module/bar"
			)

			// FooBar returns the string "foo bar".
			func FooBar() string {
				return fmt.Sprintf("foo %s", bar.Bar())
			}`,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/my/module",
				HasGoMod:   true,
				SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "v1.0.0"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "README FILE FOR TESTING.",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "bar",
						Path: "github.com/my/module/bar",
					},
					Readme: &internal.Readme{
						Filepath: "bar/README.md",
						Contents: "Another README FILE FOR TESTING.",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package bar",
						API:      []*internal.Symbol{{Name: "Bar", Synopsis: "func Bar() string", Section: "Functions", Kind: "Function"}},
					}},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "github.com/my/module/foo",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo",
						API:      []*internal.Symbol{{Name: "FooBar", Synopsis: "func FooBar() string", Section: "Functions", Kind: "Function"}},
					}},
					Imports: []string{"fmt", "github.com/my/module/bar"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"github.com/my/module/bar": {"Bar returns the string &#34;bar&#34;."},
		"github.com/my/module/foo": {"FooBar returns the string &#34;foo bar&#34;."},
	},
}

var moduleNoGoMod = &testModule{
	mod: &proxy.Module{
		ModulePath: "no.mod/module",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"p/p.go": `
				// Package p is inside a module where a go.mod
				// file hasn't been explicitly added yet.
				package p

				// Year is a year before go.mod files existed.
				const Year = 2009`,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "no.mod/module",
				HasGoMod:   false,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "no.mod/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "p",
						Path: "no.mod/module/p",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package p is inside a module where a go.mod file hasn't been explicitly added yet.",
						API: []*internal.Symbol{
							{
								Name:     "Year",
								Synopsis: "const Year",
								Section:  "Constants",
								Kind:     "Constant",
							},
						},
					}},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"no.mod/module/p": {"const Year = 2009"},
	},
}

var moduleEmpty = &testModule{
	mod: &proxy.Module{
		ModulePath: "emp.ty/module",
	},
	fr: &FetchResult{Module: &internal.Module{}},
}

var moduleBadPackages = &testModule{
	mod: &proxy.Module{
		ModulePath: "bad.mod/module",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"good/good.go": `
			// Package good is inside a module that has bad packages.
			package good

			// Good is whether this package is good.
			const Good = true`,

			"illegalchar/p.go": `
			package p

			func init() {
				var c00 uint8 = '\0';  // ERROR "oct|char"
				var c01 uint8 = '\07';  // ERROR "oct|char"
				var cx0 uint8 = '\x0';  // ERROR "hex|char"
				var cx1 uint8 = '\x';  // ERROR "hex|char"
				_, _, _, _ = c00, c01, cx0, cx1
			}
			`,
			"multiplepkgs/a.go": "package a",
			"multiplepkgs/b.go": "package b",
		},
	},
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.HasIncompletePackages),
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "bad.mod/module",
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.mod/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "good",
						Path: "bad.mod/module/good",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package good is inside a module that has bad packages.",
						API:      []*internal.Symbol{{Name: "Good", Synopsis: "const Good", Section: "Constants", Kind: "Constant"}},
					}},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				PackagePath: "bad.mod/module/good",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      200,
			},
			{
				PackagePath: "bad.mod/module/illegalchar",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      600,
			},
			{
				PackagePath: "bad.mod/module/multiplepkgs",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      600,
			},
		},
	},
	docStrings: map[string][]string{
		"bad.mod/module/good": {`const Good = <a href="/builtin#true">true</a>`},
	},
}

var moduleBuildConstraints = &testModule{
	mod: &proxy.Module{
		ModulePath: "build.constraints/module",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"cpu/cpu.go": `
					// Package cpu implements processor feature detection
					// used by the Go standard library.
					package cpu`,
			"cpu/cpu_arm.go":   "package cpu\n\nconst CacheLinePadSize = 1",
			"cpu/cpu_arm64.go": "package cpu\n\nconst CacheLinePadSize = 2",
			"cpu/cpu_x86.go":   "// +build 386 amd64 amd64p32\n\npackage cpu\n\nconst CacheLinePadSize = 3",
			"ignore/ignore.go": "// +build ignore\n\npackage ignore",
		},
	},
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.HasIncompletePackages),
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "build.constraints/module",
				HasGoMod:   false,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "build.constraints/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "cpu",
						Path: "build.constraints/module/cpu",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     "linux",
							GOARCH:   "amd64",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
							API: []*internal.Symbol{
								{
									Name:     "CacheLinePadSize",
									Synopsis: "const CacheLinePadSize",
									Section:  "Constants",
									Kind:     "Constant",
								},
							},
						},
						{
							GOOS:     "windows",
							GOARCH:   "amd64",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
							API: []*internal.Symbol{
								{
									Name:     "CacheLinePadSize",
									Synopsis: "const CacheLinePadSize",
									Section:  "Constants",
									Kind:     "Constant",
								},
							},
						},
						{
							GOOS:     "darwin",
							GOARCH:   "amd64",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
							API: []*internal.Symbol{
								{
									Name:     "CacheLinePadSize",
									Synopsis: "const CacheLinePadSize",
									Section:  "Constants",
									Kind:     "Constant",
								},
							},
						},
						{
							GOOS:     "js",
							GOARCH:   "wasm",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
						},
					},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				ModulePath:  "build.constraints/module",
				Version:     "v1.0.0",
				PackagePath: "build.constraints/module/cpu",
				Status:      http.StatusOK,
			},
			{
				ModulePath:  "build.constraints/module",
				Version:     "v1.0.0",
				PackagePath: "build.constraints/module/ignore",
				Status:      derrors.ToStatus(derrors.PackageBuildContextNotSupported),
			},
		},
	},
	docStrings: map[string][]string{
		"build.constraints/module/cpu": {"const CacheLinePadSize = 3"},
	},
}

var moduleNonRedist = &testModule{
	mod: &proxy.Module{
		ModulePath: "nonredistributable.mod/module",
		Files: map[string]string{
			"go.mod":          "module nonredistributable.mod/module\n\ngo 1.13",
			"LICENSE":         testhelper.BSD0License,
			"README.md":       "README FILE FOR TESTING.",
			"bar/baz/COPYING": testhelper.MITLicense,
			"bar/baz/baz.go": `
			// package baz
			package baz

			// Baz returns the string "baz".
			func Baz() string {
				return "baz"
			}
			`,
			"bar/LICENSE": testhelper.MITLicense,
			"bar/bar.go": `
			// package bar
			package bar

			// Bar returns the string "bar".
			func Bar() string {
				return "bar"
			}`,
			"foo/README.md":  "README FILE SHOW UP HERE BUT WILL BE REMOVED BEFORE DB INSERT",
			"foo/LICENSE.md": testhelper.UnknownLicense,
			"foo/foo.go": `
			// package foo
			package foo

			import (
				"fmt"

				"github.com/my/module/bar"
			)

			// FooBar returns the string "foo bar".
			func FooBar() string {
				return fmt.Sprintf("foo %s", bar.Bar())
			}`,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "nonredistributable.mod/module",
				HasGoMod:   true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "nonredistributable.mod/module",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "README FILE FOR TESTING.",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "bar",
						Path: "nonredistributable.mod/module/bar",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package bar",
						API:      []*internal.Symbol{{Name: "Bar", Synopsis: "func Bar() string", Section: "Functions", Kind: "Function"}},
					}},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "baz",
						Path: "nonredistributable.mod/module/bar/baz",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package baz",
						API:      []*internal.Symbol{{Name: "Baz", Synopsis: "func Baz() string", Section: "Functions", Kind: "Function"}},
					}},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "nonredistributable.mod/module/foo",
					},
					Readme: &internal.Readme{
						Filepath: "foo/README.md",
						Contents: "README FILE SHOW UP HERE BUT WILL BE REMOVED BEFORE DB INSERT",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo",
						API:      []*internal.Symbol{{Name: "FooBar", Synopsis: "func FooBar() string", Section: "Functions", Kind: "Function"}},
					}},
					Imports: []string{"fmt", "github.com/my/module/bar"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"nonredistributable.mod/module/bar":     {"Bar returns the string"},
		"nonredistributable.mod/module/bar/baz": {"Baz returns the string"},
		"nonredistributable.mod/module/foo":     {"FooBar returns the string"},
	},
}

var moduleBadImportPath = &testModule{
	mod: &proxy.Module{
		ModulePath: "bad.import.path.com",
		Files: map[string]string{
			"good/import/path/foo.go": "package foo",
			"bad/import path/foo.go":  "package foo",
		},
	},
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.HasIncompletePackages),
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "bad.import.path.com",
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.import.path.com",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.import.path.com/good",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.import.path.com/good/import",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "bad.import.path.com/good/import/path",
					},
					Documentation: []*internal.Documentation{{GOOS: internal.All, GOARCH: internal.All}},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				ModulePath:  "bad.import.path.com",
				PackagePath: "bad.import.path.com/bad/import path",
				Version:     "v1.0.0",
				Status:      derrors.ToStatus(derrors.PackageBadImportPath),
			},
			{
				ModulePath:  "bad.import.path.com",
				PackagePath: "bad.import.path.com/good/import/path",
				Version:     "v1.0.0",
				Status:      http.StatusOK,
			},
		},
	},
}

var moduleDocTest = &testModule{
	mod: &proxy.Module{
		ModulePath: "doc.test",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"permalink/doc.go": `
				// Package permalink is for testing the heading
				// permalink documentation rendering feature.
				//
				// This is a heading
				//
				// This is a paragraph.
				//
				// This is yet another
				// paragraph.
				//
				package permalink`,
		},
	},
	fr: &FetchResult{
		GoModPath: "doc.test",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "doc.test",
				HasGoMod:   false,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "doc.test",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "permalink",
						Path: "doc.test/permalink",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package permalink is for testing the heading permalink documentation rendering feature.",
					}},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"doc.test/permalink": {
			"<h4 id=\"hdr-This_is_a_heading\">This is a heading <a",
			"href=\"#hdr-This_is_a_heading\">¶</a></h4>",
		},
	},
}

var moduleDocTooLarge = &testModule{
	mod: &proxy.Module{
		ModulePath: "bigdoc.test",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"doc.go": "// This documentation is big.\n" +
				strings.Repeat("// Too big.\n", 100_000) +
				"package bigdoc",
		},
	},
	fr: &FetchResult{
		Status:    derrors.ToStatus(derrors.HasIncompletePackages),
		GoModPath: "bigdoc.test",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "bigdoc.test",
				HasGoMod:   false,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Name: "bigdoc",
						Path: "bigdoc.test",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "This documentation is big.",
					}},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				PackagePath: "bigdoc.test",
				ModulePath:  "bigdoc.test",
				Version:     "v1.0.0",
				Status:      derrors.ToStatus(derrors.PackageDocumentationHTMLTooLarge),
			},
		},
	},
	docStrings: map[string][]string{
		"bigdoc.test": {godoc.DocTooLargeReplacement},
	},
}

var moduleWasm = &testModule{
	mod: &proxy.Module{
		ModulePath: "github.com/my/module/js",
		Files: map[string]string{
			"README.md": "THIS IS A README",
			"LICENSE":   testhelper.BSD0License,
			"js/js.go": `
					// +build js,wasm

					// Package js only works with wasm.
					package js
					type Value int`,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/my/module/js",
				SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "js", "js/v1.0.0"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module/js",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "THIS IS A README",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "js",
						Path: "github.com/my/module/js/js",
					},
					Documentation: []*internal.Documentation{{
						Synopsis: "Package js only works with wasm.",
						GOOS:     "js",
						GOARCH:   "wasm",
						API:      []*internal.Symbol{{Name: "Value", Synopsis: "type Value int", Section: "Types", Kind: "Type"}},
					}},
				},
			},
		},
	},
}

var moduleAlternative = &testModule{
	mod: &proxy.Module{
		ModulePath: "github.com/my/module",
		Files:      map[string]string{"go.mod": "module canonical"},
	},
	fr: &FetchResult{
		GoModPath: "canonical",
	},
}

var moduleStd = &testModule{
	mod: &proxy.Module{
		ModulePath: stdlib.ModulePath,
		Version:    "v1.12.5",
		// No files necessary because the internal/stdlib package will read from
		// internal/stdlib/testdata.
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "std",
				Version:    "v1.12.5",
				CommitTime: stdlib.TestCommitTime,
				HasGoMod:   true,
				SourceInfo: source.NewStdlibInfo("v1.12.5"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path:              "std",
						IsRedistributable: true,
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "# The Go Programming Language\n",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "builtin",
						Path: "builtin",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package builtin provides documentation for Go's predeclared identifiers.",
						API: []*internal.Symbol{
							{
								Name:     "true",
								Synopsis: "const true",
								Section:  "Constants",
								Kind:     "Constant",
							},
							{
								Name:     "false",
								Synopsis: "const false",
								Section:  "Constants",
								Kind:     "Constant",
							},
							{
								Name:     "iota",
								Synopsis: "const iota",
								Section:  "Constants",
								Kind:     "Constant",
							},
							{
								Name:     "nil",
								Synopsis: "var nil",
								Section:  "Variables",
								Kind:     "Variable",
							},
							{
								Name:     "append",
								Synopsis: "func append(slice []Type, elems ...Type) []Type",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "cap",
								Synopsis: "func cap(v Type) int",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "close",
								Synopsis: "func close(c chan<- Type)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "complex",
								Synopsis: "func complex(r, i FloatType) ComplexType",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "copy",
								Synopsis: "func copy(dst, src []Type) int",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "delete",
								Synopsis: "func delete(m map[Type]Type1, key Type)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "imag",
								Synopsis: "func imag(c ComplexType) FloatType",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "len",
								Synopsis: "func len(v Type) int",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "make",
								Synopsis: "func make(t Type, size ...IntegerType) Type",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "new",
								Synopsis: "func new(Type) *Type",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "panic",
								Synopsis: "func panic(v interface{})",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "print",
								Synopsis: "func print(args ...Type)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "println",
								Synopsis: "func println(args ...Type)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "real",
								Synopsis: "func real(c ComplexType) FloatType",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "recover",
								Synopsis: "func recover() interface{}",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "ComplexType",
								Synopsis: "type ComplexType complex64",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "FloatType",
								Synopsis: "type FloatType float32",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "IntegerType",
								Synopsis: "type IntegerType int",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "Type",
								Synopsis: "type Type int",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "Type1",
								Synopsis: "type Type1 int",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "bool",
								Synopsis: "type bool bool",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "byte",
								Synopsis: "type byte = uint8",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "complex128",
								Synopsis: "type complex128 complex128",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "complex64",
								Synopsis: "type complex64 complex64",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "error",
								Synopsis: "type error interface{ ... }",
								Section:  "Types",
								Kind:     "Type",
								Children: []*internal.Symbol{
									{
										Name:       "error.Error",
										Synopsis:   "Error",
										Section:    "Types",
										Kind:       "Method",
										ParentName: "error",
									},
								},
							},
							{
								Name:     "float32",
								Synopsis: "type float32 float32",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "float64",
								Synopsis: "type float64 float64",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "int",
								Synopsis: "type int int",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "int16",
								Synopsis: "type int16 int16",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "int32",
								Synopsis: "type int32 int32",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "int64",
								Synopsis: "type int64 int64",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "int8",
								Synopsis: "type int8 int8",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "rune",
								Synopsis: "type rune = int32",
								Section:  "Types",
								Kind:     "Type"},

							{
								Name:     "string",
								Synopsis: "type string string",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "uint",
								Synopsis: "type uint uint",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "uint16",
								Synopsis: "type uint16 uint16",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "uint32",
								Synopsis: "type uint32 uint32",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "uint64",
								Synopsis: "type uint64 uint64",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "uint8",
								Synopsis: "type uint8 uint8",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "uintptr",
								Synopsis: "type uintptr uintptr",
								Section:  "Types",
								Kind:     "Type",
							},
						},
					}},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "cmd",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "main",
						Path: "cmd/pprof",
					},
					Readme: &internal.Readme{
						Filepath: "cmd/pprof/README",
						Contents: "This directory is the copy of Google's pprof shipped as part of the Go distribution.\n",
					},
					// cmd/pprof has a file with a build constraint that does not include js/wasm.
					// Since the set files isn't the same across all build contexts, we represent
					// every build context.
					Documentation: []*internal.Documentation{
						{
							GOOS:     "linux",
							GOARCH:   "amd64",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
						{
							GOOS:     "windows",
							GOARCH:   "amd64",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
						{
							GOOS:     "darwin",
							GOARCH:   "amd64",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
						{
							GOOS:     "js",
							GOARCH:   "wasm",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
					},
					Imports: []string{
						"cmd/internal/objfile",
						"crypto/tls",
						"debug/dwarf",
						"fmt",
						"github.com/google/pprof/driver",
						"github.com/google/pprof/profile",
						"golang.org/x/crypto/ssh/terminal",
						"io",
						"io/ioutil",
						"net/http",
						"net/url",
						"os",
						"regexp",
						"strconv",
						"strings",
						"sync",
						"time",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "context",
						Path: "context",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.",
						API: []*internal.Symbol{
							{
								Name:     "Canceled",
								Synopsis: "var Canceled",
								Section:  "Variables",
								Kind:     "Variable",
							},
							{
								Name:     "DeadlineExceeded",
								Synopsis: "var DeadlineExceeded",
								Section:  "Variables",
								Kind:     "Variable",
							},
							{
								Name:     "WithCancel",
								Synopsis: "func WithCancel(parent Context) (ctx Context, cancel CancelFunc)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "WithDeadline",
								Synopsis: "func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "WithTimeout",
								Synopsis: "func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)",
								Section:  "Functions",
								Kind:     "Function",
							},
							{
								Name:     "CancelFunc",
								Synopsis: "type CancelFunc func()",
								Section:  "Types",
								Kind:     "Type",
							},
							{
								Name:     "Context",
								Synopsis: "type Context interface{ ... }",
								Section:  "Types",
								Kind:     "Type",
								Children: []*internal.Symbol{
									{
										Name:       "Background",
										Synopsis:   "func Background() Context",
										Section:    "Types",
										Kind:       "Function",
										ParentName: "Context",
									},
									{
										Name:       "TODO",
										Synopsis:   "func TODO() Context",
										Section:    "Types",
										Kind:       "Function",
										ParentName: "Context",
									},
									{
										Name:       "WithValue",
										Synopsis:   "func WithValue(parent Context, key, val interface{}) Context",
										Section:    "Types",
										Kind:       "Function",
										ParentName: "Context",
									},
									{
										Name:       "Context.Deadline",
										Synopsis:   "Deadline",
										Section:    "Types",
										Kind:       "Method",
										ParentName: "Context",
									},
									{
										Name:       "Context.Done",
										Synopsis:   "Done",
										Section:    "Types",
										Kind:       "Method",
										ParentName: "Context",
									},
									{
										Name:       "Context.Err",
										Synopsis:   "Err",
										Section:    "Types",
										Kind:       "Method",
										ParentName: "Context",
									},
									{
										Name:       "Context.Value",
										Synopsis:   "Value",
										Section:    "Types",
										Kind:       "Method",
										ParentName: "Context",
									},
								},
							},
						},
					}},
					Imports: []string{"errors", "fmt", "reflect", "sync", "time"},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "encoding",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "json",
						Path: "encoding/json",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package json implements encoding and decoding of JSON as defined in RFC 7159.",
							API: []*internal.Symbol{
								{
									Name:     "Compact",
									Synopsis: "func Compact(dst *bytes.Buffer, src []byte) error",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "HTMLEscape",
									Synopsis: "func HTMLEscape(dst *bytes.Buffer, src []byte)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Indent",
									Synopsis: "func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Marshal",
									Synopsis: "func Marshal(v interface{}) ([]byte, error)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "MarshalIndent",
									Synopsis: "func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Unmarshal",
									Synopsis: "func Unmarshal(data []byte, v interface{}) error",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Valid",
									Synopsis: "func Valid(data []byte) bool",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Decoder",
									Synopsis: "type Decoder struct{}",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "NewDecoder",
											Synopsis:   "func NewDecoder(r io.Reader) *Decoder",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.Buffered",
											Synopsis:   "func (dec *Decoder) Buffered() io.Reader",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.Decode",
											Synopsis:   "func (dec *Decoder) Decode(v interface{}) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.DisallowUnknownFields",
											Synopsis:   "func (dec *Decoder) DisallowUnknownFields()",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.More",
											Synopsis:   "func (dec *Decoder) More() bool",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.Token",
											Synopsis:   "func (dec *Decoder) Token() (Token, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.UseNumber",
											Synopsis:   "func (dec *Decoder) UseNumber()",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
									},
								},
								{
									Name:     "Delim",
									Synopsis: "type Delim rune",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "Delim.String",
											Synopsis:   "func (d Delim) String() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Delim",
										},
									},
								},
								{
									Name:     "Encoder",
									Synopsis: "type Encoder struct{}",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "NewEncoder",
											Synopsis:   "func NewEncoder(w io.Writer) *Encoder",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Encoder",
										},
										{
											Name:       "Encoder.Encode",
											Synopsis:   "func (enc *Encoder) Encode(v interface{}) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Encoder",
										},
										{
											Name:       "Encoder.SetEscapeHTML",
											Synopsis:   "func (enc *Encoder) SetEscapeHTML(on bool)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Encoder",
										},
										{
											Name:       "Encoder.SetIndent",
											Synopsis:   "func (enc *Encoder) SetIndent(prefix, indent string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Encoder",
										},
									},
								},
								{
									Name:     "InvalidUTF8Error",
									Synopsis: "type InvalidUTF8Error struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "InvalidUTF8Error.S",
											Synopsis:   "S",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "InvalidUTF8Error",
										},
										{
											Name:       "InvalidUTF8Error.Error",
											Synopsis:   "func (e *InvalidUTF8Error) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "InvalidUTF8Error",
										},
									},
								},
								{
									Name:     "InvalidUnmarshalError",
									Synopsis: "type InvalidUnmarshalError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "InvalidUnmarshalError.Type",
											Synopsis:   "Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "InvalidUnmarshalError",
										},
										{
											Name:       "InvalidUnmarshalError.Error",
											Synopsis:   "func (e *InvalidUnmarshalError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "InvalidUnmarshalError",
										},
									},
								},
								{
									Name:     "Marshaler",
									Synopsis: "type Marshaler interface{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "Marshaler.MarshalJSON",
											Synopsis:   "MarshalJSON",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Marshaler",
										},
									},
								},
								{
									Name:     "MarshalerError",
									Synopsis: "type MarshalerError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "MarshalerError.Type",
											Synopsis:   "Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "MarshalerError",
										},
										{
											Name:       "MarshalerError.Err",
											Synopsis:   "Err",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "MarshalerError",
										},
										{
											Name:       "MarshalerError.Error",
											Synopsis:   "func (e *MarshalerError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "MarshalerError",
										},
									},
								},
								{
									Name:     "Number",
									Synopsis: "type Number string",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "Number.Float64",
											Synopsis:   "func (n Number) Float64() (float64, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Number",
										},
										{
											Name:       "Number.Int64",
											Synopsis:   "func (n Number) Int64() (int64, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Number",
										},
										{
											Name:       "Number.String",
											Synopsis:   "func (n Number) String() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Number",
										},
									},
								},
								{
									Name:     "RawMessage",
									Synopsis: "type RawMessage []byte",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "RawMessage.MarshalJSON",
											Synopsis:   "func (m RawMessage) MarshalJSON() ([]byte, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "RawMessage",
										},
										{
											Name:       "RawMessage.UnmarshalJSON",
											Synopsis:   "func (m *RawMessage) UnmarshalJSON(data []byte) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "RawMessage",
										},
									},
								},
								{
									Name:     "SyntaxError",
									Synopsis: "type SyntaxError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "SyntaxError.Offset",
											Synopsis:   "Offset",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "SyntaxError",
										},
										{
											Name:       "SyntaxError.Error",
											Synopsis:   "func (e *SyntaxError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "SyntaxError",
										},
									},
								},
								{
									Name:     "Token",
									Synopsis: "type Token interface{}",
									Section:  "Types",
									Kind:     "Type",
								},
								{
									Name:     "UnmarshalFieldError",
									Synopsis: "type UnmarshalFieldError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "UnmarshalFieldError.Key",
											Synopsis:   "Key",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalFieldError",
										},
										{
											Name:       "UnmarshalFieldError.Type",
											Synopsis:   "Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalFieldError",
										},
										{
											Name:       "UnmarshalFieldError.Field",
											Synopsis:   "Field",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalFieldError",
										},
										{
											Name:       "UnmarshalFieldError.Error",
											Synopsis:   "func (e *UnmarshalFieldError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnmarshalFieldError",
										},
									},
								},
								{
									Name:     "UnmarshalTypeError",
									Synopsis: "type UnmarshalTypeError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "UnmarshalTypeError.Value",
											Synopsis:   "Value",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Type",
											Synopsis:   "Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Offset",
											Synopsis:   "Offset",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Struct",
											Synopsis:   "Struct",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Field",
											Synopsis:   "Field",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Error",
											Synopsis:   "func (e *UnmarshalTypeError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnmarshalTypeError",
										},
									},
								},
								{
									Name:     "Unmarshaler",
									Synopsis: "type Unmarshaler interface{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "Unmarshaler.UnmarshalJSON",
											Synopsis:   "UnmarshalJSON",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Unmarshaler",
										},
									},
								},
								{
									Name:     "UnsupportedTypeError",
									Synopsis: "type UnsupportedTypeError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "UnsupportedTypeError.Type",
											Synopsis:   "Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnsupportedTypeError",
										},
										{
											Name:       "UnsupportedTypeError.Error",
											Synopsis:   "func (e *UnsupportedTypeError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnsupportedTypeError",
										},
									},
								},
								{
									Name:     "UnsupportedValueError",
									Synopsis: "type UnsupportedValueError struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "UnsupportedValueError.Value",
											Synopsis:   "Value",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnsupportedValueError",
										},
										{
											Name:       "UnsupportedValueError.Str",
											Synopsis:   "Str",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnsupportedValueError",
										},
										{
											Name:       "UnsupportedValueError.Error",
											Synopsis:   "func (e *UnsupportedValueError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnsupportedValueError",
										},
									},
								},
							},
						},
					},
					Imports: []string{
						"bytes",
						"encoding",
						"encoding/base64",
						"errors",
						"fmt",
						"io",
						"math",
						"reflect",
						"sort",
						"strconv",
						"strings",
						"sync",
						"unicode",
						"unicode/utf16",
						"unicode/utf8",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "errors",
						Path: "errors",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package errors implements functions to manipulate errors.",
						API:      []*internal.Symbol{{Name: "New", Synopsis: "func New(text string) error", Section: "Functions", Kind: "Function"}},
					}},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "flag",
						Path: "flag",
					},
					Imports: []string{"errors", "fmt", "io", "os", "reflect", "sort", "strconv", "strings", "time"},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package flag implements command-line flag parsing.",
							API: []*internal.Symbol{
								{
									Name:     "CommandLine",
									Synopsis: "var CommandLine",
									Section:  "Variables",
									Kind:     "Variable",
								},
								{
									Name:     "ErrHelp",
									Synopsis: "var ErrHelp",
									Section:  "Variables",
									Kind:     "Variable",
								},
								{
									Name:     "Usage",
									Synopsis: "var Usage",
									Section:  "Variables",
									Kind:     "Variable",
								},
								{
									Name:     "Arg",
									Synopsis: "func Arg(i int) string",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Args",
									Synopsis: "func Args() []string",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Bool",
									Synopsis: "func Bool(name string, value bool, usage string) *bool",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "BoolVar",
									Synopsis: "func BoolVar(p *bool, name string, value bool, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Duration",
									Synopsis: "func Duration(name string, value time.Duration, usage string) *time.Duration",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "DurationVar",
									Synopsis: "func DurationVar(p *time.Duration, name string, value time.Duration, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Float64",
									Synopsis: "func Float64(name string, value float64, usage string) *float64",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Float64Var",
									Synopsis: "func Float64Var(p *float64, name string, value float64, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Int",
									Synopsis: "func Int(name string, value int, usage string) *int",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Int64",
									Synopsis: "func Int64(name string, value int64, usage string) *int64",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Int64Var",
									Synopsis: "func Int64Var(p *int64, name string, value int64, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "IntVar",
									Synopsis: "func IntVar(p *int, name string, value int, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "NArg",
									Synopsis: "func NArg() int",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "NFlag",
									Synopsis: "func NFlag() int",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Parse",
									Synopsis: "func Parse()",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Parsed",
									Synopsis: "func Parsed() bool",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "PrintDefaults",
									Synopsis: "func PrintDefaults()",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Set",
									Synopsis: "func Set(name, value string) error",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "String",
									Synopsis: "func String(name string, value string, usage string) *string",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "StringVar",
									Synopsis: "func StringVar(p *string, name string, value string, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Uint",
									Synopsis: "func Uint(name string, value uint, usage string) *uint",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Uint64",
									Synopsis: "func Uint64(name string, value uint64, usage string) *uint64",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Uint64Var",
									Synopsis: "func Uint64Var(p *uint64, name string, value uint64, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "UintVar",
									Synopsis: "func UintVar(p *uint, name string, value uint, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "UnquoteUsage",
									Synopsis: "func UnquoteUsage(flag *Flag) (name string, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Var",
									Synopsis: "func Var(value Value, name string, usage string)",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "Visit",
									Synopsis: "func Visit(fn func(*Flag))",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "VisitAll",
									Synopsis: "func VisitAll(fn func(*Flag))",
									Section:  "Functions",
									Kind:     "Function",
								},
								{
									Name:     "ErrorHandling",
									Synopsis: "type ErrorHandling int",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "ContinueOnError",
											Synopsis:   "const ContinueOnError",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
										{
											Name:       "ExitOnError",
											Synopsis:   "const ExitOnError",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
										{
											Name:       "PanicOnError",
											Synopsis:   "const PanicOnError",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
									},
								},
								{
									Name:     "Flag",
									Synopsis: "type Flag struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "Lookup",
											Synopsis:   "func Lookup(name string) *Flag",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.Name",
											Synopsis:   "Name",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.Usage",
											Synopsis:   "Usage",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.Value",
											Synopsis:   "Value",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.DefValue",
											Synopsis:   "DefValue",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
									},
								},
								{
									Name:     "FlagSet",
									Synopsis: "type FlagSet struct{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{
											Name:       "NewFlagSet",
											Synopsis:   "func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Usage",
											Synopsis:   "Usage",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Arg",
											Synopsis:   "func (f *FlagSet) Arg(i int) string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Args",
											Synopsis:   "func (f *FlagSet) Args() []string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Bool",
											Synopsis:   "func (f *FlagSet) Bool(name string, value bool, usage string) *bool",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.BoolVar",
											Synopsis:   "func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Duration",
											Synopsis:   "func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.DurationVar",
											Synopsis:   "func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.ErrorHandling",
											Synopsis:   "func (f *FlagSet) ErrorHandling() ErrorHandling",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Float64",
											Synopsis:   "func (f *FlagSet) Float64(name string, value float64, usage string) *float64",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Float64Var",
											Synopsis:   "func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Init",
											Synopsis:   "func (f *FlagSet) Init(name string, errorHandling ErrorHandling)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Int",
											Synopsis:   "func (f *FlagSet) Int(name string, value int, usage string) *int",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Int64",
											Synopsis:   "func (f *FlagSet) Int64(name string, value int64, usage string) *int64",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Int64Var",
											Synopsis:   "func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.IntVar",
											Synopsis:   "func (f *FlagSet) IntVar(p *int, name string, value int, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Lookup",
											Synopsis:   "func (f *FlagSet) Lookup(name string) *Flag",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.NArg",
											Synopsis:   "func (f *FlagSet) NArg() int",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.NFlag",
											Synopsis:   "func (f *FlagSet) NFlag() int",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Name",
											Synopsis:   "func (f *FlagSet) Name() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Output",
											Synopsis:   "func (f *FlagSet) Output() io.Writer",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Parse",
											Synopsis:   "func (f *FlagSet) Parse(arguments []string) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Parsed",
											Synopsis:   "func (f *FlagSet) Parsed() bool",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.PrintDefaults",
											Synopsis:   "func (f *FlagSet) PrintDefaults()",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Set",
											Synopsis:   "func (f *FlagSet) Set(name, value string) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.SetOutput",
											Synopsis:   "func (f *FlagSet) SetOutput(output io.Writer)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.String",
											Synopsis:   "func (f *FlagSet) String(name string, value string, usage string) *string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.StringVar",
											Synopsis:   "func (f *FlagSet) StringVar(p *string, name string, value string, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Uint",
											Synopsis:   "func (f *FlagSet) Uint(name string, value uint, usage string) *uint",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Uint64",
											Synopsis:   "func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Uint64Var",
											Synopsis:   "func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.UintVar",
											Synopsis:   "func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Var",
											Synopsis:   "func (f *FlagSet) Var(value Value, name string, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Visit",
											Synopsis:   "func (f *FlagSet) Visit(fn func(*Flag))",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.VisitAll",
											Synopsis:   "func (f *FlagSet) VisitAll(fn func(*Flag))",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
									},
								},
								{
									Name:     "Getter",
									Synopsis: "type Getter interface{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{{
										Name:       "Getter.Get",
										Synopsis:   "Get",
										Section:    "Types",
										Kind:       "Method",
										ParentName: "Getter",
									}},
								},
								{
									Name:     "Value",
									Synopsis: "type Value interface{ ... }",
									Section:  "Types",
									Kind:     "Type",
									Children: []*internal.Symbol{
										{Name: "Value.String", Synopsis: "String", Section: "Types", Kind: "Method", ParentName: "Value"},
										{Name: "Value.Set", Synopsis: "Set", Section: "Types", Kind: "Method", ParentName: "Value"},
									},
								},
							},
						},
					},
				},
			},
		},
	},
}

var moduleMaster = &testModule{
	mod: &proxy.Module{
		ModulePath: "github.com/my/module",
		Files: map[string]string{
			"foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nconst Bar = 1",
		},
		Version: "v0.0.0-20200706064627-355bc3f705ed",
	},
	fr: &FetchResult{
		RequestedVersion: "master",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/my/module",
				Version:    "v0.0.0-20200706064627-355bc3f705ed",
				SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "355bc3f705ed"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "github.com/my/module/foo",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo exports a helpful constant.",
						API:      []*internal.Symbol{{Name: "Bar", Synopsis: "const Bar", Section: "Constants", Kind: "Constant"}},
					}},
				},
			},
		},
	},
}

var moduleLatest = &testModule{
	mod: &proxy.Module{
		ModulePath: "github.com/my/module",
		Files: map[string]string{
			"foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nconst Bar = 1",
		},
		Version: "v1.2.4",
	},
	fr: &FetchResult{
		RequestedVersion: "latest",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/my/module",
				Version:    "v1.2.4",
				SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "v1.2.4"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "github.com/my/module/foo",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo exports a helpful constant.",
						API:      []*internal.Symbol{{Name: "Bar", Synopsis: "const Bar", Section: "Constants", Kind: "Constant"}},
					}},
				},
			},
		},
	},
}

// moduleWithExamples returns a testModule that contains an example.
// It provides the common bits for the tests for package, function,
// type, and method examples below.
//
// The fetch result's documentation HTML is treated as a set
// of substrings that should appear in the generated documentation.
// The substrings are separated by a '~' character.
func moduleWithExamples(path string, api []*internal.Symbol, source, test string, docSubstrings ...string) *testModule {
	return &testModule{
		mod: &proxy.Module{
			ModulePath: path,
			Files: map[string]string{
				"LICENSE": testhelper.BSD0License,
				"example/example.go": `
// Package example contains examples.
package example
` + source,
				"example/example_test.go": `
package example_test
` + test,
			},
		},
		fr: &FetchResult{
			GoModPath: path,
			Module: &internal.Module{
				ModuleInfo: internal.ModuleInfo{
					ModulePath: path,
					HasGoMod:   false,
				},
				Units: []*internal.Unit{
					{
						UnitMeta: internal.UnitMeta{
							Path: path,
						},
					},
					{
						UnitMeta: internal.UnitMeta{
							Name: "example",
							Path: path + "/example",
						},
						Documentation: []*internal.Documentation{{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package example contains examples.",
							API:      api,
						}},
					},
				},
			},
		},
		docStrings: map[string][]string{
			path + "/example": docSubstrings,
		},
	}
}

var modulePackageExample = moduleWithExamples("package.example",
	nil,
	``,
	`import "fmt"

// Example for the package.
func Example() {
	fmt.Println("hello")
	// Output: hello
}
`, "Documentation-exampleButtonsContainer")

var moduleFuncExample = moduleWithExamples("func.example",
	[]*internal.Symbol{
		{
			Name:     "F",
			Synopsis: "func F()",
			Section:  "Functions",
			Kind:     "Function",
		},
	},
	`func F() {}
`, `import "func.example/example"

// Example for the function.
func ExampleF() {
	example.F()
}
`, "Documentation-exampleButtonsContainer")

var moduleTypeExample = moduleWithExamples("type.example",
	[]*internal.Symbol{{Name: "T", Synopsis: "type T struct{}", Section: "Types", Kind: "Type"}},
	`type T struct{}
`, `import "type.example/example"

// Example for the type.
func ExampleT() {
	example.T{}
}
`, "Documentation-exampleButtonsContainer")

var moduleMethodExample = moduleWithExamples("method.example",
	[]*internal.Symbol{
		{
			Name:     "T",
			Synopsis: "type T struct{}",
			Section:  "Types",
			Kind:     "Type",
			Children: []*internal.Symbol{
				{
					Name:       "T.M",
					Synopsis:   "func (*T) M()",
					Section:    "Types",
					Kind:       "Method",
					ParentName: "T",
				},
			},
		},
	},
	`type T struct {}

func (*T) M() {}
`, `import "method.example/example"

// Example for the method.
func ExampleT_M() {
	new(example.T).M()
}
`, "Documentation-exampleButtonsContainer")
