Skip to content

Commit d8aeb16

Browse files
soluchokstamblerre
authored andcommitted
internal/lsp: add defaultLibrary mod for basic types
Signed-off-by: Andrii Soluk <[email protected]> Change-Id: Id0165f12f4c615b5b69663303bb00a424350b2b7 Reviewed-on: https://go-review.googlesource.com/c/tools/+/303370 Trust: Robert Findley <[email protected]> Trust: Rebecca Stambler <[email protected]> Reviewed-by: Rebecca Stambler <[email protected]>
1 parent aa0c723 commit d8aeb16

File tree

3 files changed

+18
-14
lines changed

3 files changed

+18
-14
lines changed

internal/lsp/semantic.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,11 +394,15 @@ func (e *encoded) ident(x *ast.Ident) {
394394
// nothing to map it to
395395
case *types.Nil:
396396
// nil is a predeclared identifier
397-
e.token(x.Pos(), len("nil"), tokVariable, []string{"readonly"})
397+
e.token(x.Pos(), len("nil"), tokVariable, []string{"readonly", "defaultLibrary"})
398398
case *types.PkgName:
399399
e.token(x.Pos(), len(x.Name), tokNamespace, nil)
400400
case *types.TypeName:
401-
e.token(x.Pos(), len(x.String()), tokType, nil)
401+
var mods []string
402+
if _, ok := y.Type().(*types.Basic); ok {
403+
mods = []string{"defaultLibrary"}
404+
}
405+
e.token(x.Pos(), len(x.String()), tokType, mods)
402406
case *types.Var:
403407
e.token(x.Pos(), len(x.Name), tokVariable, nil)
404408
default:

internal/lsp/testdata/semantic/a.go.golden

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111

1212
/*⇒3,keyword,[]*/var (
1313
/*⇒1,variable,[definition]*/a = /*⇒3,namespace,[]*/fmt./*⇒5,function,[]*/Print
14-
/*⇒1,variable,[definition]*/b []/*⇒6,type,[]*/string = []/*⇒6,type,[]*/string{/*⇒5,string,[]*/"foo"}
15-
/*⇒2,variable,[definition]*/c1 /*⇒4,keyword,[]*/chan /*⇒3,type,[]*/int
16-
/*⇒2,variable,[definition]*/c2 <-/*⇒4,keyword,[]*/chan /*⇒3,type,[]*/int
17-
/*⇒2,variable,[definition]*/c3 = /*⇒4,function,[defaultLibrary]*/make([]/*⇒4,keyword,[]*/chan<- /*⇒3,type,[]*/int)
14+
/*⇒1,variable,[definition]*/b []/*⇒6,type,[defaultLibrary]*/string = []/*⇒6,type,[defaultLibrary]*/string{/*⇒5,string,[]*/"foo"}
15+
/*⇒2,variable,[definition]*/c1 /*⇒4,keyword,[]*/chan /*⇒3,type,[defaultLibrary]*/int
16+
/*⇒2,variable,[definition]*/c2 <-/*⇒4,keyword,[]*/chan /*⇒3,type,[defaultLibrary]*/int
17+
/*⇒2,variable,[definition]*/c3 = /*⇒4,function,[defaultLibrary]*/make([]/*⇒4,keyword,[]*/chan<- /*⇒3,type,[defaultLibrary]*/int)
1818
/*⇒1,variable,[definition]*/b = /*⇒1,type,[]*/A{/*⇒1,variable,[]*/X: /*⇒2,number,[]*/23}
19-
/*⇒1,variable,[definition]*/m /*⇒3,keyword,[]*/map[/*⇒4,type,[]*/bool][/*⇒1,number,[]*/3]/*⇒1,operator,[]*/*/*⇒7,type,[]*/float64
19+
/*⇒1,variable,[definition]*/m /*⇒3,keyword,[]*/map[/*⇒4,type,[defaultLibrary]*/bool][/*⇒1,number,[]*/3]/*⇒1,operator,[]*/*/*⇒7,type,[defaultLibrary]*/float64
2020
)
2121

2222
/*⇒5,keyword,[]*/const (
@@ -27,17 +27,17 @@
2727
)
2828

2929
/*⇒4,keyword,[]*/type /*⇒1,type,[definition]*/A /*⇒6,keyword,[]*/struct {
30-
/*⇒1,type,[definition]*/X /*⇒3,type,[]*/int /*⇒6,comment,[]*/`foof`
30+
/*⇒1,type,[definition]*/X /*⇒3,type,[defaultLibrary]*/int /*⇒6,comment,[]*/`foof`
3131
}
3232
/*⇒4,keyword,[]*/type /*⇒1,type,[definition]*/B /*⇒9,keyword,[]*/interface {
3333
/*⇒1,type,[]*/A
34-
/*⇒3,member,[definition]*/sad(/*⇒3,type,[]*/int) /*⇒4,type,[]*/bool
34+
/*⇒3,member,[definition]*/sad(/*⇒3,type,[defaultLibrary]*/int) /*⇒4,type,[defaultLibrary]*/bool
3535
}
3636

37-
/*⇒4,keyword,[]*/type /*⇒1,type,[definition]*/F /*⇒3,type,[]*/int
37+
/*⇒4,keyword,[]*/type /*⇒1,type,[definition]*/F /*⇒3,type,[defaultLibrary]*/int
3838

39-
/*⇒4,keyword,[]*/func (/*⇒1,variable,[]*/a /*⇒1,operator,[]*/*/*⇒1,type,[]*/A) /*⇒1,member,[definition]*/f() /*⇒4,type,[]*/bool {
40-
/*⇒3,keyword,[]*/var /*⇒1,variable,[definition]*/z /*⇒6,type,[]*/string
39+
/*⇒4,keyword,[]*/func (/*⇒1,variable,[]*/a /*⇒1,operator,[]*/*/*⇒1,type,[]*/A) /*⇒1,member,[definition]*/f() /*⇒4,type,[defaultLibrary]*/bool {
40+
/*⇒3,keyword,[]*/var /*⇒1,variable,[definition]*/z /*⇒6,type,[defaultLibrary]*/string
4141
/*⇒1,variable,[definition]*/x /*⇒2,operator,[]*/:= /*⇒5,string,[]*/"foo"
4242
/*⇒1,variable,[]*/a(/*⇒1,variable,[definition]*/x)
4343
/*⇒1,variable,[definition]*/y /*⇒2,operator,[]*/:= /*⇒5,string,[]*/"bar" /*⇒1,operator,[]*/+ /*⇒1,variable,[]*/x
@@ -50,7 +50,7 @@
5050
/*⇒7,keyword,[]*/default:
5151
}
5252
/*⇒3,keyword,[]*/for /*⇒1,variable,[definition]*/k, /*⇒1,variable,[definition]*/v := /*⇒5,keyword,[]*/range /*⇒1,variable,[]*/m {
53-
/*⇒6,keyword,[]*/return (/*⇒1,operator,[]*/!/*⇒1,variable,[]*/k) /*⇒2,operator,[]*/&& /*⇒1,variable,[]*/v[/*⇒1,number,[]*/0] /*⇒2,operator,[]*/== /*⇒3,variable,[readonly]*/nil
53+
/*⇒6,keyword,[]*/return (/*⇒1,operator,[]*/!/*⇒1,variable,[]*/k) /*⇒2,operator,[]*/&& /*⇒1,variable,[]*/v[/*⇒1,number,[]*/0] /*⇒2,operator,[]*/== /*⇒3,variable,[readonly defaultLibrary]*/nil
5454
}
5555
/*⇒2,variable,[]*/c2 /*⇒2,operator,[]*/<- /*⇒1,type,[]*/A./*⇒1,variable,[definition]*/X
5656
/*⇒1,variable,[definition]*/w /*⇒2,operator,[]*/:= /*⇒1,variable,[]*/b[/*⇒1,number,[]*/4:]

internal/lsp/testdata/semantic/b.go.golden

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
/*⇒4,keyword,[]*/func /*⇒6,function,[definition]*/weirⰀd() {
88
/*⇒5,keyword,[]*/const (
9-
/*⇒4,variable,[definition readonly]*/snil = /*⇒3,variable,[readonly]*/nil
9+
/*⇒4,variable,[definition readonly]*/snil = /*⇒3,variable,[readonly defaultLibrary]*/nil
1010
/*⇒3,variable,[definition readonly]*/nil = /*⇒4,variable,[readonly]*/true
1111
/*⇒4,variable,[definition readonly]*/true = /*⇒5,variable,[readonly]*/false
1212
/*⇒5,variable,[definition readonly]*/false = /*⇒4,variable,[readonly]*/snil

0 commit comments

Comments
 (0)