// deeper reports whether block x is lexically deeper than y. func deeper(x, y *types.Scope) bool { if x == y || x == nil { return false } else if y == nil { return true } else { return deeper(x.Parent(), y.Parent()) } }
func (c *Suggester) scopeCandidates(scope *types.Scope, pos token.Pos, b *candidateCollector) { seen := make(map[string]bool) for scope != nil { isPkgScope := scope.Parent() == types.Universe for _, name := range scope.Names() { if seen[name] { continue } obj := scope.Lookup(name) if !isPkgScope && obj.Pos() > pos { continue } seen[name] = true b.appendObject(obj) } scope = scope.Parent() } }