1
0
mirror of https://github.com/golang/go synced 2024-11-24 23:07:56 -07:00

godoc: fix identifier search

Thanks to Andrey Mirtchovski for tracking this down.

This was broken by CL 5528077 which removed the InsertSemis
flag from go/scanner - as a result, semicolons are now always
inserted and the respective indexer code checked for the
wrong token.

Replaced the code by a direct identifier test.

R=rsc
CC=golang-dev
https://golang.org/cl/5606065
This commit is contained in:
Robert Griesemer 2012-02-03 09:20:53 -08:00
parent bd41831f66
commit f6f5ce87cd

View File

@ -44,7 +44,6 @@ import (
"errors"
"go/ast"
"go/parser"
"go/scanner"
"go/token"
"index/suffixarray"
"io"
@ -54,6 +53,7 @@ import (
"sort"
"strings"
"time"
"unicode"
)
// ----------------------------------------------------------------------------
@ -921,15 +921,15 @@ func (x *Index) lookupWord(w string) (match *LookupResult, alt *AltWords) {
return
}
// isIdentifier reports whether s is a Go identifier.
func isIdentifier(s string) bool {
var S scanner.Scanner
fset := token.NewFileSet()
S.Init(fset.AddFile("", fset.Base(), len(s)), []byte(s), nil, 0)
if _, tok, _ := S.Scan(); tok == token.IDENT {
_, tok, _ := S.Scan()
return tok == token.EOF
for i, ch := range s {
if unicode.IsLetter(ch) || ch == ' ' || i > 0 && unicode.IsDigit(ch) {
continue
}
return false
}
return false
return len(s) > 0
}
// For a given query, which is either a single identifier or a qualified