diff --git a/lang/golang/parser/file.go b/lang/golang/parser/file.go index 5b87738a..27d9dc4a 100644 --- a/lang/golang/parser/file.go +++ b/lang/golang/parser/file.go @@ -371,7 +371,7 @@ func (p *GoParser) parseSelector(ctx *fileContext, expr *ast.SelectorExpr, infos // callName := string(ctx.GetRawContent(expr)) // get receiver type name // var rname string - rev := ctx.getTypeinfo(sel.Recv()) + rev := ctx.getTypeinfo(m.Signature().Recv().Type()) // if rev == nil { // rname = extractName(sel.Recv().String()) // } else { diff --git a/lang/lsp/clients_test.go b/lang/lsp/clients_test.go index d28c8f67..eb23b92f 100644 --- a/lang/lsp/clients_test.go +++ b/lang/lsp/clients_test.go @@ -65,6 +65,7 @@ func TestGolangLSP(t *testing.T) { // documentSymbol expectedSymNames := `(MyStruct).String (MyStructC).String +(MyStructD).DFunction (MyStructD).String A G1 diff --git a/testdata/go/0_golang/pkg/entity/entity.go b/testdata/go/0_golang/pkg/entity/entity.go index 830ef77c..d17f8197 100644 --- a/testdata/go/0_golang/pkg/entity/entity.go +++ b/testdata/go/0_golang/pkg/entity/entity.go @@ -37,7 +37,11 @@ type InterfaceB interface { func (a MyStruct) String() string { _ = a.Embed.MyStruct _ = a.MyStructD - return "base struct" + return "base struct" + a.DFunction() +} + +func (c MyStructD) DFunction() string { + return "I'm struct d function" } func (c MyStructC) String() string {