| // 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/proxytest" |
| "golang.org/x/pkgsite/internal/source" |
| "golang.org/x/pkgsite/internal/stdlib" |
| "golang.org/x/pkgsite/internal/testing/testhelper" |
| ) |
| |
| type testModule struct { |
| mod *proxytest.Module |
| modfunc func() *proxytest.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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Version", |
| Synopsis: "const Version", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "V", |
| Synopsis: "var V = Version", |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "G", |
| Synopsis: "func G() int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "T", |
| Synopsis: "type T int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "F", |
| Synopsis: "func F(t time.Time, s string) (T, u)", |
| Section: "Types", |
| Kind: "Function", |
| ParentName: "T", |
| }, |
| }, |
| }, |
| }, |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| Imports: []string{"time"}, |
| }, |
| } |
| |
| var moduleOnePackage = &testModule{ |
| modfunc: func() *proxytest.Module { |
| return proxytest.FindModule(testModules, "example.com/single", "v1.0.0") |
| }, |
| fr: &FetchResult{ |
| HasGoMod: true, |
| 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() *proxytest.Module { |
| return proxytest.FindModule(testModules, "example.com/basic", "v1.0.0"). |
| ChangePath("example.com/nogo"). |
| DeleteFile("go.mod") |
| }, |
| fr: &FetchResult{ |
| HasGoMod: false, |
| 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, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| Imports: []string{"time"}, |
| }, |
| }, |
| }, |
| }, |
| docStrings: map[string][]string{ |
| "no.mod/module/p": {"const Year = 2009"}, |
| }, |
| } |
| |
| var moduleMultiPackage = &testModule{ |
| modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/multi", "v1.0.0") }, |
| fr: &FetchResult{ |
| HasGoMod: true, |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Bar", |
| Synopsis: "func Bar() string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| { |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "FooBar", |
| Synopsis: "func FooBar() string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| }, |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| Imports: []string{"example.com/multi/bar", "fmt"}, |
| }, |
| }, |
| }, |
| }, |
| docStrings: map[string][]string{ |
| "github.com/my/module/bar": {"Bar returns the string "bar"."}, |
| "github.com/my/module/foo": {"FooBar returns the string "foo bar"."}, |
| }, |
| } |
| |
| var moduleEmpty = &testModule{ |
| mod: &proxytest.Module{ |
| ModulePath: "emp.ty/module", |
| }, |
| fr: &FetchResult{Module: &internal.Module{}}, |
| } |
| |
| var moduleNoGo = &testModule{ |
| mod: &proxytest.Module{ |
| ModulePath: "no.go/files", |
| Files: map[string]string{"go.mod": "module no.go/files"}, |
| }, |
| fr: &FetchResult{Module: &internal.Module{}}, |
| } |
| |
| var moduleBadPackages = &testModule{ |
| mod: &proxytest.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", |
| // For the package at the root, all files are excluded by build constraints. |
| "root.go": ` |
| //go:build tools |
| |
| package main |
| `, |
| }, |
| }, |
| fr: &FetchResult{ |
| Status: derrors.ToStatus(derrors.HasIncompletePackages), |
| Module: &internal.Module{ |
| ModuleInfo: internal.ModuleInfo{ |
| ModulePath: "bad.mod/module", |
| IsRedistributable: true, |
| }, |
| Units: []*internal.Unit{ |
| { |
| // The module itself. |
| 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{{ |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Good", |
| Synopsis: "const Good", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }}, |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| PackageVersionStates: []*internal.PackageVersionState{ |
| { |
| PackagePath: "bad.mod/module", |
| ModulePath: "bad.mod/module", |
| Version: "v1.0.0", |
| Status: 600, |
| }, |
| { |
| 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, //TODO(jba): this should be InvalidContents (604), not a build context error |
| }, |
| { |
| 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() *proxytest.Module { |
| return proxytest.FindModule(testModules, "example.com/build-constraints", "") |
| }, |
| fr: &FetchResult{ |
| Status: derrors.ToStatus(derrors.HasIncompletePackages), |
| HasGoMod: true, |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| 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.", |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{ |
| internal.BuildContextLinux, internal.BuildContextWindows, |
| internal.BuildContextDarwin, internal.BuildContextJS, |
| }, |
| }, |
| }, |
| }, |
| 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"}, |
| }, |
| } |
| |
| // The package in this module is broken for one build context, but not all. |
| var moduleBadBuildContext = &testModule{ |
| mod: &proxytest.Module{ |
| ModulePath: "github.com/bad-context", |
| Files: map[string]string{ |
| "pkg/linux.go": ` |
| // +build linux js |
| |
| package pkg`, |
| "pkg/js.go": ` |
| // +build js |
| |
| package js`, |
| }, |
| }, |
| fr: &FetchResult{ |
| Module: &internal.Module{ |
| ModuleInfo: internal.ModuleInfo{ |
| ModulePath: "github.com/bad-context", |
| HasGoMod: false, |
| IsRedistributable: false, |
| }, |
| Units: []*internal.Unit{ |
| { |
| UnitMeta: internal.UnitMeta{ |
| Path: "github.com/bad-context", |
| }, |
| }, |
| { |
| UnitMeta: internal.UnitMeta{ |
| Name: "pkg", |
| Path: "github.com/bad-context/pkg", |
| }, |
| Documentation: []*internal.Documentation{{ |
| GOOS: "linux", |
| GOARCH: "amd64", |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextLinux}, |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| var moduleNonRedist = &testModule{ |
| modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/nonredist", "") }, |
| fr: &FetchResult{ |
| HasGoMod: true, |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Bar", |
| Synopsis: "func Bar() string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| { |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Baz", |
| Synopsis: "func Baz() string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| { |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "FooBar", |
| Synopsis: "func FooBar() string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| 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: &proxytest.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}}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| 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: &proxytest.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{ |
| HasGoMod: false, |
| 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.", |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| }, |
| 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\" aria-label=\"Go to This is a heading\">¶</a></h4>", |
| }, |
| }, |
| } |
| |
| var moduleDocTooLarge = &testModule{ |
| mod: &proxytest.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{ |
| HasGoMod: false, |
| 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.", |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| PackageVersionStates: []*internal.PackageVersionState{ |
| { |
| PackagePath: "bigdoc.test", |
| ModulePath: "bigdoc.test", |
| Version: "v1.0.0", |
| Status: 200, |
| }, |
| }, |
| }, |
| docStrings: map[string][]string{ |
| "bigdoc.test": {godoc.DocTooLargeReplacement}, |
| }, |
| } |
| |
| var moduleWasm = &testModule{ |
| mod: &proxytest.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{ |
| { |
| SymbolMeta: internal.SymbolMeta{Name: "Value", |
| Synopsis: "type Value int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextJS}, |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| var moduleAlternative = &testModule{ |
| mod: &proxytest.Module{ |
| ModulePath: "github.com/my/module", |
| Files: map[string]string{"go.mod": "module canonical"}, |
| }, |
| fr: &FetchResult{ |
| GoModPath: "canonical", |
| }, |
| } |
| |
| // See known_alternatives.go |
| var moduleKnownAlternative = &testModule{ |
| mod: &proxytest.Module{ |
| ModulePath: "github.com/msopentech/azure-sdk-for-go", |
| }, |
| fr: &FetchResult{ |
| Status: derrors.ToStatus(derrors.AlternativeModule), |
| }, |
| } |
| |
| var moduleStdMaster = &testModule{ |
| mod: &proxytest.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.TestMasterVersion, |
| HasGoMod: true, |
| Module: &internal.Module{ |
| ModuleInfo: internal.ModuleInfo{ |
| ModulePath: stdlib.ModulePath, |
| Version: stdlib.TestMasterVersion, |
| CommitTime: stdlib.TestCommitTime, |
| HasGoMod: true, |
| SourceInfo: source.NewStdlibInfoForTest("master"), |
| IsRedistributable: true, |
| }, |
| Units: []*internal.Unit{ |
| { |
| UnitMeta: internal.UnitMeta{ |
| Path: "errors", |
| Name: "errors", |
| ModuleInfo: internal.ModuleInfo{ |
| Version: stdlib.TestMasterVersion, |
| ModulePath: stdlib.ModulePath, |
| IsRedistributable: true, |
| }, |
| }, |
| IsRedistributable: true, |
| Documentation: []*internal.Documentation{ |
| { |
| GOOS: internal.All, |
| GOARCH: internal.All, |
| Synopsis: "Package errors implements functions to manipulate errors.", |
| API: []*internal.Symbol{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "New", |
| Synopsis: "func New(text string) error", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| GOOS: internal.All, |
| GOARCH: internal.All, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| { |
| UnitMeta: internal.UnitMeta{ |
| Path: "std", |
| ModuleInfo: internal.ModuleInfo{ |
| Version: stdlib.TestMasterVersion, |
| ModulePath: "std", |
| IsRedistributable: true, |
| }, |
| }, |
| IsRedistributable: true, |
| }, |
| }, |
| }, |
| PackageVersionStates: []*internal.PackageVersionState{ |
| { |
| PackagePath: "errors", |
| ModulePath: "std", |
| Version: stdlib.TestMasterVersion, |
| Status: 200, |
| }, |
| }, |
| }, |
| } |
| |
| var moduleStd = &testModule{ |
| mod: &proxytest.Module{ |
| ModulePath: stdlib.ModulePath, |
| Version: "v1.12.5", |
| // No files necessary because the internal/stdlib package will read from |
| // internal/stdlib/testdata. |
| }, |
| fr: &FetchResult{ |
| HasGoMod: true, |
| Module: &internal.Module{ |
| ModuleInfo: internal.ModuleInfo{ |
| ModulePath: "std", |
| Version: "v1.12.5", |
| CommitTime: stdlib.TestCommitTime, |
| HasGoMod: true, |
| SourceInfo: source.NewStdlibInfoForTest("v1.12.5"), |
| IsRedistributable: true, |
| }, |
| Units: []*internal.Unit{ |
| { |
| UnitMeta: internal.UnitMeta{ |
| Path: "std", |
| }, |
| IsRedistributable: true, |
| }, |
| { |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "true", |
| Synopsis: "const true", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "false", |
| Synopsis: "const false", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "iota", |
| Synopsis: "const iota", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "nil", |
| Synopsis: "var nil Type", |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "append", |
| Synopsis: "func append(slice []Type, elems ...Type) []Type", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "cap", |
| Synopsis: "func cap(v Type) int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "close", |
| Synopsis: "func close(c chan<- Type)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "complex", |
| Synopsis: "func complex(r, i FloatType) ComplexType", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "copy", |
| Synopsis: "func copy(dst, src []Type) int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "delete", |
| Synopsis: "func delete(m map[Type]Type1, key Type)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "imag", |
| Synopsis: "func imag(c ComplexType) FloatType", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "len", |
| Synopsis: "func len(v Type) int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "make", |
| Synopsis: "func make(t Type, size ...IntegerType) Type", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "new", |
| Synopsis: "func new(Type) *Type", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "panic", |
| Synopsis: "func panic(v interface{})", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "print", |
| Synopsis: "func print(args ...Type)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "println", |
| Synopsis: "func println(args ...Type)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "real", |
| Synopsis: "func real(c ComplexType) FloatType", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "recover", |
| Synopsis: "func recover() interface{}", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "ComplexType", |
| Synopsis: "type ComplexType complex64", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "FloatType", |
| Synopsis: "type FloatType float32", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "IntegerType", |
| Synopsis: "type IntegerType int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Type", |
| Synopsis: "type Type int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Type1", |
| Synopsis: "type Type1 int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "bool", |
| Synopsis: "type bool bool", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "byte", |
| Synopsis: "type byte = uint8", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "complex128", |
| Synopsis: "type complex128 complex128", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "complex64", |
| Synopsis: "type complex64 complex64", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "error", |
| Synopsis: "type error interface{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "error.Error", |
| Synopsis: "Error func() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "error", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "float32", |
| Synopsis: "type float32 float32", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "float64", |
| Synopsis: "type float64 float64", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "int", |
| Synopsis: "type int int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "int16", |
| Synopsis: "type int16 int16", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "int32", |
| Synopsis: "type int32 int32", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "int64", |
| Synopsis: "type int64 int64", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "int8", |
| Synopsis: "type int8 int8", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "rune", |
| Synopsis: "type rune = int32", |
| Section: "Types", |
| Kind: "Type"}, |
| }, |
| |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "string", |
| Synopsis: "type string string", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "uint", |
| Synopsis: "type uint uint", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "uint16", |
| Synopsis: "type uint16 uint16", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "uint32", |
| Synopsis: "type uint32 uint32", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "uint64", |
| Synopsis: "type uint64 uint64", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "uint8", |
| Synopsis: "type uint8 uint8", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "uintptr", |
| Synopsis: "type uintptr uintptr", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| { |
| 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.", |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{ |
| internal.BuildContextLinux, internal.BuildContextWindows, |
| internal.BuildContextDarwin, internal.BuildContextJS, |
| }, |
| 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", |
| "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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Canceled", |
| Synopsis: `var Canceled = errors.New("context canceled")`, |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "DeadlineExceeded", |
| Synopsis: "var DeadlineExceeded error = deadlineExceededError{}", |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "WithCancel", |
| Synopsis: "func WithCancel(parent Context) (ctx Context, cancel CancelFunc)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "WithDeadline", |
| Synopsis: "func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "WithTimeout", |
| Synopsis: "func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "CancelFunc", |
| Synopsis: "type CancelFunc func()", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Context", |
| Synopsis: "type Context interface{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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 func() (deadline time.Time, ok bool)", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Context", |
| }, |
| { |
| Name: "Context.Done", |
| Synopsis: "Done func() <-chan struct{}", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Context", |
| }, |
| { |
| Name: "Context.Err", |
| Synopsis: "Err func() error", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Context", |
| }, |
| { |
| Name: "Context.Value", |
| Synopsis: "Value func(key interface{}) interface{}", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Context", |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Compact", |
| Synopsis: "func Compact(dst *bytes.Buffer, src []byte) error", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "HTMLEscape", |
| Synopsis: "func HTMLEscape(dst *bytes.Buffer, src []byte)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Indent", |
| Synopsis: "func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Marshal", |
| Synopsis: "func Marshal(v interface{}) ([]byte, error)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "MarshalIndent", |
| Synopsis: "func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Unmarshal", |
| Synopsis: "func Unmarshal(data []byte, v interface{}) error", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Valid", |
| Synopsis: "func Valid(data []byte) bool", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Decoder", |
| Synopsis: "type Decoder struct{}", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Delim", |
| Synopsis: "type Delim rune", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "Delim.String", |
| Synopsis: "func (d Delim) String() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Delim", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Encoder", |
| Synopsis: "type Encoder struct{}", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "InvalidUTF8Error", |
| Synopsis: "type InvalidUTF8Error struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "InvalidUTF8Error.S", |
| Synopsis: "S string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "InvalidUTF8Error", |
| }, |
| { |
| Name: "InvalidUTF8Error.Error", |
| Synopsis: "func (e *InvalidUTF8Error) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "InvalidUTF8Error", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "InvalidUnmarshalError", |
| Synopsis: "type InvalidUnmarshalError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "InvalidUnmarshalError.Type", |
| Synopsis: "Type reflect.Type", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "InvalidUnmarshalError", |
| }, |
| { |
| Name: "InvalidUnmarshalError.Error", |
| Synopsis: "func (e *InvalidUnmarshalError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "InvalidUnmarshalError", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Marshaler", |
| Synopsis: "type Marshaler interface{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "Marshaler.MarshalJSON", |
| Synopsis: "MarshalJSON func() ([]byte, error)", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Marshaler", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "MarshalerError", |
| Synopsis: "type MarshalerError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "MarshalerError.Type", |
| Synopsis: "Type reflect.Type", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "MarshalerError", |
| }, |
| { |
| Name: "MarshalerError.Err", |
| Synopsis: "Err error", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "MarshalerError", |
| }, |
| { |
| Name: "MarshalerError.Error", |
| Synopsis: "func (e *MarshalerError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "MarshalerError", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Number", |
| Synopsis: "type Number string", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "RawMessage", |
| Synopsis: "type RawMessage []byte", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "SyntaxError", |
| Synopsis: "type SyntaxError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "SyntaxError.Offset", |
| Synopsis: "Offset int64", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "SyntaxError", |
| }, |
| { |
| Name: "SyntaxError.Error", |
| Synopsis: "func (e *SyntaxError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "SyntaxError", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Token", |
| Synopsis: "type Token interface{}", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "UnmarshalFieldError", |
| Synopsis: "type UnmarshalFieldError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "UnmarshalFieldError.Key", |
| Synopsis: "Key string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalFieldError", |
| }, |
| { |
| Name: "UnmarshalFieldError.Type", |
| Synopsis: "Type reflect.Type", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalFieldError", |
| }, |
| { |
| Name: "UnmarshalFieldError.Field", |
| Synopsis: "Field reflect.StructField", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalFieldError", |
| }, |
| { |
| Name: "UnmarshalFieldError.Error", |
| Synopsis: "func (e *UnmarshalFieldError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "UnmarshalFieldError", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "UnmarshalTypeError", |
| Synopsis: "type UnmarshalTypeError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "UnmarshalTypeError.Value", |
| Synopsis: "Value string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalTypeError", |
| }, |
| { |
| Name: "UnmarshalTypeError.Type", |
| Synopsis: "Type reflect.Type", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalTypeError", |
| }, |
| { |
| Name: "UnmarshalTypeError.Offset", |
| Synopsis: "Offset int64", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalTypeError", |
| }, |
| { |
| Name: "UnmarshalTypeError.Struct", |
| Synopsis: "Struct string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalTypeError", |
| }, |
| { |
| Name: "UnmarshalTypeError.Field", |
| Synopsis: "Field string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnmarshalTypeError", |
| }, |
| { |
| Name: "UnmarshalTypeError.Error", |
| Synopsis: "func (e *UnmarshalTypeError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "UnmarshalTypeError", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Unmarshaler", |
| Synopsis: "type Unmarshaler interface{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "Unmarshaler.UnmarshalJSON", |
| Synopsis: "UnmarshalJSON func([]byte) error", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Unmarshaler", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "UnsupportedTypeError", |
| Synopsis: "type UnsupportedTypeError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "UnsupportedTypeError.Type", |
| Synopsis: "Type reflect.Type", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnsupportedTypeError", |
| }, |
| { |
| Name: "UnsupportedTypeError.Error", |
| Synopsis: "func (e *UnsupportedTypeError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "UnsupportedTypeError", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "UnsupportedValueError", |
| Synopsis: "type UnsupportedValueError struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "UnsupportedValueError.Value", |
| Synopsis: "Value reflect.Value", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnsupportedValueError", |
| }, |
| { |
| Name: "UnsupportedValueError.Str", |
| Synopsis: "Str string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "UnsupportedValueError", |
| }, |
| { |
| Name: "UnsupportedValueError.Error", |
| Synopsis: "func (e *UnsupportedValueError) Error() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "UnsupportedValueError", |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "New", |
| Synopsis: "func New(text string) error", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| { |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "CommandLine", |
| Synopsis: "var CommandLine = NewFlagSet(os.Args[0], ExitOnError)", |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "ErrHelp", |
| Synopsis: `var ErrHelp = errors.New("flag: help requested")`, |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Usage", |
| Synopsis: "var Usage = func() { ... }", |
| Section: "Variables", |
| Kind: "Variable", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Arg", |
| Synopsis: "func Arg(i int) string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Args", |
| Synopsis: "func Args() []string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Bool", |
| Synopsis: "func Bool(name string, value bool, usage string) *bool", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "BoolVar", |
| Synopsis: "func BoolVar(p *bool, name string, value bool, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Duration", |
| Synopsis: "func Duration(name string, value time.Duration, usage string) *time.Duration", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "DurationVar", |
| Synopsis: "func DurationVar(p *time.Duration, name string, value time.Duration, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Float64", |
| Synopsis: "func Float64(name string, value float64, usage string) *float64", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Float64Var", |
| Synopsis: "func Float64Var(p *float64, name string, value float64, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Int", |
| Synopsis: "func Int(name string, value int, usage string) *int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Int64", |
| Synopsis: "func Int64(name string, value int64, usage string) *int64", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Int64Var", |
| Synopsis: "func Int64Var(p *int64, name string, value int64, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "IntVar", |
| Synopsis: "func IntVar(p *int, name string, value int, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "NArg", |
| Synopsis: "func NArg() int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "NFlag", |
| Synopsis: "func NFlag() int", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Parse", |
| Synopsis: "func Parse()", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Parsed", |
| Synopsis: "func Parsed() bool", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "PrintDefaults", |
| Synopsis: "func PrintDefaults()", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Set", |
| Synopsis: "func Set(name, value string) error", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "String", |
| Synopsis: "func String(name string, value string, usage string) *string", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "StringVar", |
| Synopsis: "func StringVar(p *string, name string, value string, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Uint", |
| Synopsis: "func Uint(name string, value uint, usage string) *uint", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Uint64", |
| Synopsis: "func Uint64(name string, value uint64, usage string) *uint64", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Uint64Var", |
| Synopsis: "func Uint64Var(p *uint64, name string, value uint64, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "UintVar", |
| Synopsis: "func UintVar(p *uint, name string, value uint, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "UnquoteUsage", |
| Synopsis: "func UnquoteUsage(flag *Flag) (name string, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Var", |
| Synopsis: "func Var(value Value, name string, usage string)", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Visit", |
| Synopsis: "func Visit(fn func(*Flag))", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "VisitAll", |
| Synopsis: "func VisitAll(fn func(*Flag))", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "ErrorHandling", |
| Synopsis: "type ErrorHandling int", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Flag", |
| Synopsis: "type Flag struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "Lookup", |
| Synopsis: "func Lookup(name string) *Flag", |
| Section: "Types", |
| Kind: "Function", |
| ParentName: "Flag", |
| }, |
| { |
| Name: "Flag.Name", |
| Synopsis: "Name string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "Flag", |
| }, |
| { |
| Name: "Flag.Usage", |
| Synopsis: "Usage string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "Flag", |
| }, |
| { |
| Name: "Flag.Value", |
| Synopsis: "Value Value", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "Flag", |
| }, |
| { |
| Name: "Flag.DefValue", |
| Synopsis: "DefValue string", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "Flag", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "FlagSet", |
| Synopsis: "type FlagSet struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "NewFlagSet", |
| Synopsis: "func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet", |
| Section: "Types", |
| Kind: "Function", |
| ParentName: "FlagSet", |
| }, |
| { |
| Name: "FlagSet.Usage", |
| Synopsis: "Usage func()", |
| 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", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Getter", |
| Synopsis: "type Getter interface{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "Getter.Get", |
| Synopsis: "Get func() interface{}", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Getter", |
| }, |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Value", |
| Synopsis: "type Value interface{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "Value.String", |
| Synopsis: "String func() string", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Value", |
| }, |
| { |
| Name: "Value.Set", |
| Synopsis: "Set func(string) error", |
| Section: "Types", |
| Kind: "Method", |
| ParentName: "Value", |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| var moduleMaster = &testModule{ |
| mod: &proxytest.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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Bar", |
| Synopsis: "const Bar", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| var moduleLatest = &testModule{ |
| mod: &proxytest.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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Bar", |
| Synopsis: "const Bar", |
| Section: "Constants", |
| Kind: "Constant", |
| }, |
| }, |
| }, |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| var moduleGenerics = &testModule{ |
| modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/generics", "") }, |
| fr: &FetchResult{ |
| HasGoMod: true, |
| Module: &internal.Module{ |
| ModuleInfo: internal.ModuleInfo{ |
| ModulePath: "example.com/generics", |
| HasGoMod: true, |
| SourceInfo: source.NewGitHubInfo("https://example.com/generics", "", "v1.0.0"), |
| IsRedistributable: true, |
| }, |
| Units: []*internal.Unit{ |
| { |
| UnitMeta: internal.UnitMeta{ |
| Name: "generics", |
| Path: "example.com/generics", |
| }, |
| Documentation: []*internal.Documentation{ |
| { |
| GOOS: internal.All, |
| GOARCH: internal.All, |
| Synopsis: "Package generics uses generics.", |
| API: []*internal.Symbol{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "Min", |
| Synopsis: "func Min[T constraints.Ordered](a, b T) T", |
| Section: "Functions", |
| Kind: "Function", |
| }, |
| }, |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "List", |
| Synopsis: "type List struct{ ... }", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| Name: "List.Val", |
| Synopsis: "Val T", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "List", |
| }, |
| { |
| Name: "List.Next", |
| Synopsis: "Next *List[T]", |
| Section: "Types", |
| Kind: "Field", |
| ParentName: "List", |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| Imports: []string{"constraints"}, |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| // 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: &proxytest.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, |
| HasGoMod: false, |
| 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, |
| }}, |
| BuildContexts: []internal.BuildContext{internal.BuildContextAll}, |
| }, |
| }, |
| }, |
| }, |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| 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{ |
| { |
| SymbolMeta: internal.SymbolMeta{ |
| Name: "T", |
| Synopsis: "type T struct{}", |
| Section: "Types", |
| Kind: "Type", |
| }, |
| Children: []*internal.SymbolMeta{ |
| { |
| 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") |