1
0
mirror of https://github.com/golang/go synced 2024-11-19 00:04:40 -07:00
go/internal/lsp/testdata/signature/signature.go
Rebecca Stambler 707862fa78 internal/lsp: use builtin package for signature help
This change uses the builtin package to derive the signature help for
builtin functions.

Updates golang/go#31696

Change-Id: I458b3a89bdf143e7018e8be7cb6a5e8c068a47c2
Reviewed-on: https://go-review.googlesource.com/c/tools/+/176922
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
2019-05-15 13:46:40 +00:00

64 lines
2.0 KiB
Go

package signature
import (
"bytes"
"encoding/json"
"math/big"
)
func Foo(a string, b int) (c bool) {
return
}
func Bar(float64, ...byte) {
}
type myStruct struct{}
func (*myStruct) foo(e *json.Decoder) (*big.Int, error) {
return nil, nil
}
type MyFunc func(foo int) string
func Qux() {
Foo("foo", 123) //@signature("(", "Foo(a string, b int) (c bool)", 2)
Foo("foo", 123) //@signature("123", "Foo(a string, b int) (c bool)", 1)
Foo("foo", 123) //@signature(",", "Foo(a string, b int) (c bool)", 0)
Foo("foo", 123) //@signature(" 1", "Foo(a string, b int) (c bool)", 1)
Foo("foo", 123) //@signature(")", "Foo(a string, b int) (c bool)", 1)
Bar(13.37, 0x13) //@signature("13.37", "Bar(float64, ...byte)", 0)
Bar(13.37, 0x37) //@signature("0x37", "Bar(float64, ...byte)", 1)
Bar(13.37, 1, 2, 3, 4) //@signature("4", "Bar(float64, ...byte)", 1)
fn := func(hi, there string) func(i int) rune {
return func(int) rune { return 0 }
}
fn("hi", "there") //@signature("hi", "fn(hi string, there string) func(i int) rune", 0)
fn("hi", "there")(1) //@signature("1", "func(i int) rune", 0)
fnPtr := &fn
(*fnPtr)("hi", "there") //@signature("hi", "func(hi string, there string) func(i int) rune", 0)
var fnIntf interface{} = Foo
fnIntf.(func(string, int) bool)("hi", 123) //@signature("123", "func(string, int) bool", 1)
(&bytes.Buffer{}).Next(2) //@signature("2", "Next(n int) []byte", 0)
myFunc := MyFunc(func(n int) string { return "" })
myFunc(123) //@signature("123", "myFunc(foo int) string", 0)
var ms myStruct
ms.foo(nil) //@signature("nil", "foo(e *json.Decoder) (*big.Int, error)", 0)
_ = make([]int, 1, 2) //@signature("2", "make(t Type, size ...int) Type", 1)
Foo(myFunc(123), 456) //@signature("myFunc", "Foo(a string, b int) (c bool)", 0)
Foo(myFunc(123), 456) //@signature("123", "myFunc(foo int) string", 0)
panic("oops!") //@signature("oops", "panic(v interface{})", 0)
println("hello", "world") //@signature("world", "println(args ...Type)", 0)
}