aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/codesearch/codesearch.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/codesearch/codesearch.go')
-rw-r--r--pkg/codesearch/codesearch.go25
1 files changed, 16 insertions, 9 deletions
diff --git a/pkg/codesearch/codesearch.go b/pkg/codesearch/codesearch.go
index 396df4f82..051cad3c5 100644
--- a/pkg/codesearch/codesearch.go
+++ b/pkg/codesearch/codesearch.go
@@ -312,18 +312,25 @@ func (index *Index) FindReferences(contextFile, name, srcPrefix string, contextL
}
func (index *Index) findDefinition(contextFile, name string) *Definition {
- var weakMatch *Definition
+ var weakMatch, veryWeakMatch *Definition
for _, def := range index.db.Definitions {
- if def.Name == name {
- if def.Body.File == contextFile {
- return def
- }
- if !def.IsStatic {
- weakMatch = def
- }
+ if def.Name != name {
+ continue
}
+ if def.Body.File == contextFile {
+ return def
+ }
+ // Strictly speaking there may be several different static functions in different headers,
+ // but we ignore such possibility for now.
+ if !def.IsStatic || strings.HasSuffix(def.Body.File, ".h") {
+ weakMatch = def
+ }
+ veryWeakMatch = def
+ }
+ if weakMatch != nil {
+ return weakMatch
}
- return weakMatch
+ return veryWeakMatch
}
func (index *Index) formatSource(lines LineRange, includeLines bool) (string, error) {