mirror of
https://github.com/golang/go.git
synced 2025-05-05 15:43:04 +00:00
internal/lsp: add constant values to hovers
Change-Id: Ic0c497f4b1644f915db850be3fbacda8e2f85e9a Reviewed-on: https://go-review.googlesource.com/c/tools/+/197818 Run-TryBot: Rebecca Stambler <rstambler@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Cottrell <iancottrell@google.com>
This commit is contained in:
parent
030b2cf115
commit
e461004dd0
@ -6,6 +6,7 @@ package source
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"go/ast"
|
||||
"go/doc"
|
||||
"go/format"
|
||||
@ -51,12 +52,12 @@ func (i *IdentifierInfo) Hover(ctx context.Context) (*HoverInformation, error) {
|
||||
}
|
||||
h.Signature = b.String()
|
||||
case types.Object:
|
||||
h.Signature = types.ObjectString(x, i.qf)
|
||||
h.Signature = objectString(x, i.qf)
|
||||
}
|
||||
|
||||
// Set the documentation.
|
||||
if i.Declaration.obj != nil {
|
||||
h.SingleLine = types.ObjectString(i.Declaration.obj, i.qf)
|
||||
h.SingleLine = objectString(i.Declaration.obj, i.qf)
|
||||
}
|
||||
if h.comment != nil {
|
||||
h.FullDocumentation = h.comment.Text()
|
||||
@ -65,6 +66,17 @@ func (i *IdentifierInfo) Hover(ctx context.Context) (*HoverInformation, error) {
|
||||
return h, nil
|
||||
}
|
||||
|
||||
// objectString is a wrapper around the types.ObjectString function.
|
||||
// It handles adding more information to the object string.
|
||||
func objectString(obj types.Object, qf types.Qualifier) string {
|
||||
str := types.ObjectString(obj, qf)
|
||||
switch obj := obj.(type) {
|
||||
case *types.Const:
|
||||
str = fmt.Sprintf("%s = %s", str, obj.Val())
|
||||
}
|
||||
return str
|
||||
}
|
||||
|
||||
func (d Declaration) hover(ctx context.Context) (*HoverInformation, error) {
|
||||
ctx, done := trace.StartSpan(ctx, "source.hover")
|
||||
defer done()
|
||||
|
2
internal/lsp/testdata/godef/b/b.go
vendored
2
internal/lsp/testdata/godef/b/b.go
vendored
@ -33,3 +33,5 @@ func Bar() {
|
||||
|
||||
var _ *myFoo.StructFoo //@godef("myFoo", myFoo)
|
||||
}
|
||||
|
||||
const X = 0 //@mark(X, "X"),godef("X", X)
|
||||
|
22
internal/lsp/testdata/godef/b/b.go.golden
vendored
22
internal/lsp/testdata/godef/b/b.go.golden
vendored
@ -244,6 +244,28 @@ godef/a/a.go:9:6-11: defined here as func a.Stuff()
|
||||
|
||||
-- Stuff-hover --
|
||||
func a.Stuff()
|
||||
-- X-definition --
|
||||
godef/b/b.go:37:7-8: defined here as const X untyped int = 0
|
||||
-- X-definition-json --
|
||||
{
|
||||
"span": {
|
||||
"uri": "file://godef/b/b.go",
|
||||
"start": {
|
||||
"line": 37,
|
||||
"column": 7,
|
||||
"offset": 812
|
||||
},
|
||||
"end": {
|
||||
"line": 37,
|
||||
"column": 8,
|
||||
"offset": 813
|
||||
}
|
||||
},
|
||||
"description": "const X untyped int = 0"
|
||||
}
|
||||
|
||||
-- X-hover --
|
||||
const X untyped int = 0
|
||||
-- myFoo-definition --
|
||||
godef/b/b.go:4:2-7: defined here as package myFoo ("golang.org/x/tools/internal/lsp/foo")
|
||||
-- myFoo-definition-json --
|
||||
|
2
internal/lsp/testdata/summary.txt.golden
vendored
2
internal/lsp/testdata/summary.txt.golden
vendored
@ -11,7 +11,7 @@ FoldingRangesCount = 2
|
||||
FormatCount = 6
|
||||
ImportCount = 2
|
||||
SuggestedFixCount = 1
|
||||
DefinitionsCount = 37
|
||||
DefinitionsCount = 38
|
||||
TypeDefinitionsCount = 2
|
||||
HighlightsCount = 2
|
||||
ReferencesCount = 6
|
||||
|
Loading…
x
Reference in New Issue
Block a user