From 869396c89abb2dba465fef80e35d99793f7f5a1f Mon Sep 17 00:00:00 2001 From: "wangzekun.zekin" Date: Sat, 14 Feb 2026 16:14:14 +0800 Subject: [PATCH 1/2] fix(golang): correct receiver type resolution in selector parsing - Fix receiver type resolution by using m.Signature().Recv().Type() instead of sel.Recv() - Add test case for struct method resolution --- lang/golang/parser/file.go | 2 +- testdata/go/0_golang/pkg/entity/entity.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) 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/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 { From b2a640981b78c519beaddce2edd17dcaca06f02d Mon Sep 17 00:00:00 2001 From: "wangzekun.zekin" Date: Sat, 14 Feb 2026 16:26:24 +0800 Subject: [PATCH 2/2] fix unit test --- lang/lsp/clients_test.go | 1 + 1 file changed, 1 insertion(+) 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