This test executes definition requests over doc links.

-- go.mod --
module mod.com

go 1.19

-- path/path.go --
package path

func Join() //@loc(Join, "Join")

-- a.go --
package p

import "strconv" //@loc(strconv, `"strconv"`)
import pathpkg "mod.com/path"
import _ "unsafe"

const NumberBase = 10 //@loc(NumberBase, "NumberBase")

// [Conv] converts s to an int. //@def("Conv", Conv)
func Conv(s string) int { //@loc(Conv, "Conv")
	// [strconv.ParseInt] parses s and returns the integer corresponding to it. //@def("strconv", strconv)
	// [NumberBase] is the base to use for number parsing. //@def("NumberBase", NumberBase)
	i, _ := strconv.ParseInt(s, NumberBase, 64)
	return int(i)
}

type T struct {
	Field int //@ loc(Field, "Field")
}

func (T) Method() {} //@ loc(Method, "Method")

// The declared and imported names of the package both work:
// [path.Join]    //@ def("Join", Join)
// [pathpkg.Join] //@ def("Join", Join)
//
// Also, both [T.Field] and //@ def("Field", Field)
// [T.Method] are supported. //@ def("Method", Method)
func _() {
	pathpkg.Join()
}

// Built-in and unsafe symbols work too.
// [unsafe.Pointer] //@def("Pointer", UNSAFE)
// [unsafe.Slice]   //@def("Slice", UNSAFE)
// [int]            //@def("int", BUILTIN)
// [error]          //@def("error", BUILTIN)
// [error.Error]    //@def("Error", BUILTIN)
func _()
