Skip to content

Commit 50d143c

Browse files
authored
Remove prefixes for field type ASTs (#4163)
1 parent 865a59e commit 50d143c

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

private/buf/buflsp/file.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,9 @@ func (f *file) irToSymbols(irSymbol ir.Symbol) ([]*symbol, []*symbol) {
491491
typ := &symbol{
492492
ir: irSymbol,
493493
file: f,
494-
span: irSymbol.AsMember().TypeAST().Span(),
494+
// We remove prefixes from the type, since we want to exclude the prefix from the
495+
// symbol, e.g. repeated string values = 1;, we want to capture the symbol for "string".
496+
span: irSymbol.AsMember().TypeAST().RemovePrefixes().Span(),
495497
}
496498
kind, needsResolution := getKindForMember(irSymbol.AsMember())
497499
typ.kind = kind
@@ -600,9 +602,12 @@ func (f *file) irToSymbols(irSymbol ir.Symbol) ([]*symbol, []*symbol) {
600602
// getKindForMember takes a [ir.Member] and returns the symbol kind and whether or not the
601603
// symbol is currently resolved.
602604
func getKindForMember(member ir.Member) (kind, bool) {
603-
if member.TypeAST().AsPath().AsPredeclared() != predeclared.Unknown {
605+
// We remove prefixes to check for a predeclared type, e.g. repeated string values = 1;,
606+
// "repeated string" would not be captured as a predeclared type. The corresponding symbol
607+
// also excludes prefixes.
608+
if member.TypeAST().RemovePrefixes().AsPath().AsPredeclared() != predeclared.Unknown {
604609
return &builtin{
605-
predeclared: member.TypeAST().AsPath().AsPredeclared(),
610+
predeclared: member.TypeAST().RemovePrefixes().AsPath().AsPredeclared(),
606611
}, false
607612
}
608613
return &reference{

0 commit comments

Comments
 (0)