blob: 1ea009e031840d5c7c447fe92429a032dda007fc [file] [log] [blame]
This file contains tests for documentation links to generic code in hover.
Requires go1.19+ for the new go/doc/comment package.
-- flags --
-min_go=go1.19
-- go.mod --
module mod.com
go 1.19
-- a.go --
package a
import "mod.com/generic"
func _() {
// Hovering over instantiated object should produce accurate type
// information, but link to the generic declarations.
var x generic.GT[int] //@hover("GT", "GT", xGT)
_ = x.F //@hover("x", "x", x),hover("F", "F", xF)
f := generic.GF[int] //@hover("GF", "GF", fGF)
_ = f //@hover("f", "f", f)
}
-- generic/generic.go --
package generic
// Hovering over type parameters should link to documentation.
//
// TODO(rfindley): should it? We should probably link to the type.
type GT[P any] struct{ //@hover("GT", "GT", GT),hover("P", "P", GTP)
F P //@hover("F", "F", F),hover("P", "P", FP)
}
func (GT[P]) M(p P) { //@hover("GT", "GT", GTrecv),hover("M","M", M),hover(re"p (P)", re"p (P)", pP)
}
func GF[P any] (p P) { //@hover("GF", "GF", GF)
}
-- @F --
```go
field F P
```
@hover("F", "F", F),hover("P", "P", FP)
[`(generic.GT).F` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GT.F)
-- @FP --
```go
type parameter P any
```
-- @GF --
```go
func GF[P any](p P)
```
[`generic.GF` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GF)
-- @GT --
```go
type GT[P any] struct {
F P //@hover("F", "F", F),hover("P", "P", FP)
}
```
Hovering over type parameters should link to documentation.
TODO(rfindley): should it? We should probably link to the type.
```go
func (GT[P]) M(p P)
```
[`generic.GT` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GT)
-- @GTP --
```go
type parameter P any
```
-- @GTrecv --
```go
type GT[P any] struct {
F P //@hover("F", "F", F),hover("P", "P", FP)
}
```
Hovering over type parameters should link to documentation.
TODO(rfindley): should it? We should probably link to the type.
```go
func (GT[P]) M(p P)
```
[`generic.GT` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GT)
-- @M --
```go
func (GT[P]) M(p P)
```
[`(generic.GT).M` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GT.M)
-- @f --
```go
var f func(p int)
```
-- @fGF --
```go
func generic.GF(p int) // func[P any](p P)
```
[`generic.GF` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GF)
-- @pP --
```go
type parameter P any
```
-- @x --
```go
var x generic.GT[int]
```
@hover("GT", "GT", xGT)
-- @xF --
```go
field F int
```
@hover("F", "F", F),hover("P", "P", FP)
[`(generic.GT).F` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GT.F)
-- @xGT --
```go
type GT[P any] struct {
F P //@hover("F", "F", F),hover("P", "P", FP)
}
```
Hovering over type parameters should link to documentation.
TODO(rfindley): should it? We should probably link to the type.
```go
func (generic.GT[P]) M(p P)
```
[`generic.GT` on pkg.go.dev](https://pkg.go.dev/mod.com/generic#GT)