// 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
	modfunc    func() *proxy.Module // call to get module if mod field is nil
	fr         *FetchResult
	docStrings map[string][]string
}

var singleUnits = []*internal.Unit{
	{
		UnitMeta: internal.UnitMeta{
			Path: "example.com/single",
		},
		Readme: &internal.Readme{
			Filepath: "README.md",
			Contents: "This is the README for a test module.",
		},
	},
	{
		UnitMeta: internal.UnitMeta{
			Name: "pkg",
			Path: "example.com/single/pkg",
		},
		Documentation: []*internal.Documentation{{
			GOOS:     internal.All,
			GOARCH:   internal.All,
			Synopsis: "Package pkg is a sample package.",
			API: []*internal.Symbol{
				{Name: "Version", Synopsis: `const Version = "v1.0.0"`, Section: "Constants", Kind: "Constant"},
				{Name: "V", Synopsis: "var V = Version", Section: "Variables", Kind: "Variable"},
				{Name: "G", Synopsis: "func G() int", Section: "Functions", Kind: "Function"},
				{
					Name:     "T",
					Synopsis: "type T int",
					Section:  "Types",
					Kind:     "Type",
					Children: []*internal.Symbol{{
						Name:       "F",
						Synopsis:   "func F(t time.Time, s string) (T, u)",
						Section:    "Types",
						Kind:       "Function",
						ParentName: "T",
					}},
				},
			},
		}},
		Imports: []string{"time"},
	},
}

var moduleOnePackage = &testModule{
	modfunc: func() *proxy.Module {
		return proxy.FindModule(testModules, "example.com/single", "v1.0.0")
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/single",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/single", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: singleUnits,
		},
	},
}

var moduleNoGoMod = &testModule{
	modfunc: func() *proxy.Module {
		return proxy.FindModule(testModules, "example.com/basic", "v1.0.0").
			ChangePath("example.com/nogo").
			DeleteFile("go.mod")
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/nogo",
				HasGoMod:          false,
				SourceInfo:        source.NewGitHubInfo("https://example.com/nogo", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Name: "basic",
						Path: "example.com/nogo",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "This is the README for a test module.",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package basic is a sample package.",
						API:      singleUnits[1].Documentation[0].API,
					}},
					Imports: []string{"time"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"no.mod/module/p": {"const Year = 2009"},
	},
}

var moduleMultiPackage = &testModule{
	modfunc: func() *proxy.Module { return proxy.FindModule(testModules, "example.com/multi", "v1.0.0") },
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/multi",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/multi", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "example.com/multi",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "README file for testing.",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "bar",
						Path: "example.com/multi/bar",
					},
					Readme: &internal.Readme{
						Filepath: "bar/README",
						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: "example.com/multi/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{"example.com/multi/bar", "fmt"},
				},
			},
		},
	},
	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 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",
				IsRedistributable: true,
			},
			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 = true",
							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{
	modfunc: func() *proxy.Module { return proxy.FindModule(testModules, "example.com/build-constraints", "") },
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.HasIncompletePackages),
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/build-constraints",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/build-constraints", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "example.com/build-constraints",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "cpu",
						Path: "example.com/build-constraints/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 = 3",
									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 = 3",
									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 = 3",
									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:  "example.com/build-constraints",
				Version:     "v1.0.0",
				PackagePath: "example.com/build-constraints/cpu",
				Status:      http.StatusOK,
			},
			{
				ModulePath:  "example.com/build-constraints",
				Version:     "v1.0.0",
				PackagePath: "example.com/build-constraints/ignore",
				Status:      derrors.ToStatus(derrors.PackageBuildContextNotSupported),
			},
		},
	},
	docStrings: map[string][]string{
		"build.constraints/module/cpu": {"const CacheLinePadSize = 3"},
	},
}

var moduleNonRedist = &testModule{
	modfunc: func() *proxy.Module { return proxy.FindModule(testModules, "example.com/nonredist", "") },
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/nonredist",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/nonredist", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "example.com/nonredist",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "README file for testing.",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "bar",
						Path: "example.com/nonredist/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: "example.com/nonredist/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: "unk",
						Path: "example.com/nonredist/unk",
					},
					Readme: &internal.Readme{
						Filepath: "unk/README.md",
						Contents: "README file will be removed before DB insert.",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package unk",
						API:      []*internal.Symbol{{Name: "FooBar", Synopsis: "func FooBar() string", Section: "Functions", Kind: "Function"}},
					}},
					Imports: []string{"example.com/nonredist/bar", "fmt"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"example.com/nonredist/bar":     {"Bar returns the string"},
		"example.com/nonredist/bar/baz": {"Baz returns the string"},
		"example.com/nonredist/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,
				IsRedistributable: true,
			},
			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,
				IsRedistributable: true,
			},
			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"),
				IsRedistributable: true,
			},
			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 moduleStdMaster = &testModule{
	mod: &proxy.Module{
		ModulePath: stdlib.ModulePath,
		Version:    "master",
		// No files necessary because the internal/stdlib package will read from
		// internal/stdlib/testdata.
	},
	fr: &FetchResult{
		RequestedVersion: "master",
		ResolvedVersion:  stdlib.TestVersion,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        stdlib.ModulePath,
				Version:           stdlib.TestVersion,
				CommitTime:        stdlib.TestCommitTime,
				HasGoMod:          true,
				SourceInfo:        source.NewStdlibInfo("master"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path:              "errors",
						Name:              "errors",
						IsRedistributable: true,
						ModuleInfo: internal.ModuleInfo{
							Version:           stdlib.TestVersion,
							ModulePath:        stdlib.ModulePath,
							IsRedistributable: true,
						},
					},
					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",
									GOOS:     internal.All,
									GOARCH:   internal.All,
								},
							},
						},
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path:              "std",
						IsRedistributable: true,
						ModuleInfo: internal.ModuleInfo{
							Version:           stdlib.TestVersion,
							ModulePath:        "std",
							IsRedistributable: true,
						},
					},
					Readme: &internal.Readme{Filepath: "README.md", Contents: "# The Go Programming Language\n"},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				PackagePath: "errors",
				ModulePath:  "std",
				Version:     stdlib.TestVersion,
				Status:      200,
			},
		},
	},
}

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"),
				IsRedistributable: true,
			},
			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 = 0 == 0 ...",
								Section:  "Constants",
								Kind:     "Constant",
							},
							{
								Name:     "false",
								Synopsis: "const true = 0 == 0 ...",
								Section:  "Constants",
								Kind:     "Constant",
							},
							{
								Name:     "iota",
								Synopsis: "const iota = 0",
								Section:  "Constants",
								Kind:     "Constant",
							},
							{
								Name:     "nil",
								Synopsis: "var nil Type",
								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 = errors.New("context canceled")`,
								Section:  "Variables",
								Kind:     "Variable",
							},
							{
								Name:     "DeadlineExceeded",
								Synopsis: "var DeadlineExceeded error = deadlineExceededError{}",
								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 = NewFlagSet(os.Args[0], ExitOnError)",
									Section:  "Variables",
									Kind:     "Variable",
								},
								{
									Name:     "ErrHelp",
									Synopsis: `var ErrHelp = errors.New("flag: help requested")`,
									Section:  "Variables",
									Kind:     "Variable",
								},
								{
									Name:     "Usage",
									Synopsis: "var Usage = func() { ... }",
									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 ErrorHandling = iota ...",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
										{
											Name:       "ExitOnError",
											Synopsis:   "const ContinueOnError ErrorHandling = iota ...",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
										{
											Name:       "PanicOnError",
											Synopsis:   "const ContinueOnError ErrorHandling = iota ...",
											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 = 1", 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 = 1", 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,
					IsRedistributable: true,
				},
				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")
