Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 9ad62c7

Browse files
authored
Merge pull request #380 from notjrbauer/5383-const-values
Display values of constants onHover
2 parents 1afa9c0 + 683cafd commit 9ad62c7

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

langserver/hover.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ func (h *LangHandler) handleHover(ctx context.Context, conn jsonrpc2.JSONRPC2, r
9797
}
9898
}
9999
if s == "" {
100-
s = types.ObjectString(o, qf)
100+
s = objectString(o, qf)
101101
}
102102
} else if t != nil {
103103
s = types.TypeString(t, qf)
@@ -667,6 +667,16 @@ func typeName(fset *token.FileSet, typ ast.Expr) string {
667667
}
668668
}
669669

670+
// objectString wraps types.ObjectString for specific type formatting.
671+
func objectString(obj types.Object, qf types.Qualifier) string {
672+
str := types.ObjectString(obj, qf)
673+
switch obj := obj.(type) {
674+
case *types.Const:
675+
str = fmt.Sprintf("%s = %s", str, obj.Val())
676+
}
677+
return str
678+
}
679+
670680
// fmtNode formats the given node as a string.
671681
func fmtNode(fset *token.FileSet, n ast.Node) string {
672682
var buf bytes.Buffer

langserver/integration_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func TestIntegration_FileSystem(t *testing.T) {
2626
"A.go": "package p; func A() int { return 0 }",
2727
"B.go": "package p; var _ = A",
2828
"P2/C.go": `package p2; import "test/p"; var _ = p.A`,
29+
"P2/D.go": `package p2; const D int = 1`,
2930
}
3031
integrationTest(t, files, nil, func(ctx context.Context, rootURI lsp.DocumentURI, conn *jsonrpc2.Conn, notifies chan *jsonrpc2.Request) {
3132
// Test some hovers using files on disk.
@@ -34,6 +35,7 @@ func TestIntegration_FileSystem(t *testing.T) {
3435
"A.go:1:17": "func A() int",
3536
"B.go:1:20": "func A() int",
3637
"P2/C.go:1:40": "func A() int",
38+
"P2/D.go:1:19": "const D int = 1",
3739
},
3840
}
3941
lspTests(t, ctx, nil, conn, rootURI, cases)
@@ -53,6 +55,7 @@ func TestIntegration_FileSystem(t *testing.T) {
5355
"A.go:1:17": "func A() int",
5456
"B.go:1:20": "func A() int",
5557
"P2/C.go:1:40": "func A() int",
58+
"P2/D.go:1:19": "const D int = 1",
5659
},
5760
}
5861
lspTests(t, ctx, nil, conn, rootURI, cases)
@@ -95,6 +98,7 @@ func TestIntegration_FileSystem(t *testing.T) {
9598
"A.go:1:28": "func A(i int)",
9699
"B.go:1:20": "func A(i int)",
97100
"P2/C.go:1:40": "func A(i int)",
101+
"P2/D.go:1:19": "const D int = 1",
98102
},
99103
}
100104
lspTests(t, ctx, nil, conn, rootURI, cases)

0 commit comments

Comments
 (0)