mirror of
https://github.com/golang/go
synced 2024-11-14 08:30:25 -07:00
all: replace strings.Index with strings.Contains where possible
Change-Id: Ia613f1c37bfce800ece0533a5326fca91d99a66a Reviewed-on: https://go-review.googlesource.com/18120 Reviewed-by: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
952c2fd606
commit
b04f3b06ec
@ -15,7 +15,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func ratTok(ch rune) bool {
|
func ratTok(ch rune) bool {
|
||||||
return strings.IndexRune("+-/0123456789.eE", ch) >= 0
|
return strings.ContainsRune("+-/0123456789.eE", ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan is a support routine for fmt.Scanner. It accepts the formats
|
// Scan is a support routine for fmt.Scanner. It accepts the formats
|
||||||
@ -25,7 +25,7 @@ func (z *Rat) Scan(s fmt.ScanState, ch rune) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if strings.IndexRune("efgEFGv", ch) < 0 {
|
if !strings.ContainsRune("efgEFGv", ch) {
|
||||||
return errors.New("Rat.Scan: invalid verb")
|
return errors.New("Rat.Scan: invalid verb")
|
||||||
}
|
}
|
||||||
if _, ok := z.SetString(string(tok)); !ok {
|
if _, ok := z.SetString(string(tok)); !ok {
|
||||||
|
@ -877,7 +877,7 @@ func (p *exporter) byte(b byte) {
|
|||||||
// tracef is like fmt.Printf but it rewrites the format string
|
// tracef is like fmt.Printf but it rewrites the format string
|
||||||
// to take care of indentation.
|
// to take care of indentation.
|
||||||
func (p *exporter) tracef(format string, args ...interface{}) {
|
func (p *exporter) tracef(format string, args ...interface{}) {
|
||||||
if strings.IndexAny(format, "<>\n") >= 0 {
|
if strings.ContainsAny(format, "<>\n") {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
for i := 0; i < len(format); i++ {
|
for i := 0; i < len(format); i++ {
|
||||||
// no need to deal with runes
|
// no need to deal with runes
|
||||||
|
@ -130,7 +130,7 @@ func (w *Writer) fieldNeedsQuotes(field string) bool {
|
|||||||
if field == "" {
|
if field == "" {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if field == `\.` || strings.IndexRune(field, w.Comma) >= 0 || strings.IndexAny(field, "\"\r\n") >= 0 {
|
if field == `\.` || strings.ContainsRune(field, w.Comma) || strings.ContainsAny(field, "\"\r\n") {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -970,7 +970,7 @@ func TestBadRecursiveType(t *testing.T) {
|
|||||||
err := NewEncoder(b).Encode(&rec)
|
err := NewEncoder(b).Encode(&rec)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("expected error; got none")
|
t.Error("expected error; got none")
|
||||||
} else if strings.Index(err.Error(), "recursive") < 0 {
|
} else if !strings.Contains(err.Error(), "recursive") {
|
||||||
t.Error("expected recursive type error; got", err)
|
t.Error("expected recursive type error; got", err)
|
||||||
}
|
}
|
||||||
// Can't test decode easily because we can't encode one, so we can't pass one to a Decoder.
|
// Can't test decode easily because we can't encode one, so we can't pass one to a Decoder.
|
||||||
|
@ -280,7 +280,7 @@ func TestValueError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
t4p := &Type4{3}
|
t4p := &Type4{3}
|
||||||
var t4 Type4 // note: not a pointer.
|
var t4 Type4 // note: not a pointer.
|
||||||
if err := encAndDec(t4p, t4); err == nil || strings.Index(err.Error(), "pointer") < 0 {
|
if err := encAndDec(t4p, t4); err == nil || !strings.Contains(err.Error(), "pointer") {
|
||||||
t.Error("expected error about pointer; got", err)
|
t.Error("expected error about pointer; got", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -388,7 +388,7 @@ func TestSingletons(t *testing.T) {
|
|||||||
t.Errorf("expected error decoding %v: %s", test.in, test.err)
|
t.Errorf("expected error decoding %v: %s", test.in, test.err)
|
||||||
continue
|
continue
|
||||||
case err != nil && test.err != "":
|
case err != nil && test.err != "":
|
||||||
if strings.Index(err.Error(), test.err) < 0 {
|
if !strings.Contains(err.Error(), test.err) {
|
||||||
t.Errorf("wrong error decoding %v: wanted %s, got %v", test.in, test.err, err)
|
t.Errorf("wrong error decoding %v: wanted %s, got %v", test.in, test.err, err)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -414,7 +414,7 @@ func TestStructNonStruct(t *testing.T) {
|
|||||||
var ns NonStruct
|
var ns NonStruct
|
||||||
if err := encAndDec(s, &ns); err == nil {
|
if err := encAndDec(s, &ns); err == nil {
|
||||||
t.Error("should get error for struct/non-struct")
|
t.Error("should get error for struct/non-struct")
|
||||||
} else if strings.Index(err.Error(), "type") < 0 {
|
} else if !strings.Contains(err.Error(), "type") {
|
||||||
t.Error("for struct/non-struct expected type error; got", err)
|
t.Error("for struct/non-struct expected type error; got", err)
|
||||||
}
|
}
|
||||||
// Now try the other way
|
// Now try the other way
|
||||||
@ -424,7 +424,7 @@ func TestStructNonStruct(t *testing.T) {
|
|||||||
}
|
}
|
||||||
if err := encAndDec(ns, &s); err == nil {
|
if err := encAndDec(ns, &s); err == nil {
|
||||||
t.Error("should get error for non-struct/struct")
|
t.Error("should get error for non-struct/struct")
|
||||||
} else if strings.Index(err.Error(), "type") < 0 {
|
} else if !strings.Contains(err.Error(), "type") {
|
||||||
t.Error("for non-struct/struct expected type error; got", err)
|
t.Error("for non-struct/struct expected type error; got", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -548,7 +548,7 @@ func TestGobEncoderFieldTypeError(t *testing.T) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("expected decode error for mismatched fields (encoder to non-decoder)")
|
t.Fatal("expected decode error for mismatched fields (encoder to non-decoder)")
|
||||||
}
|
}
|
||||||
if strings.Index(err.Error(), "type") < 0 {
|
if !strings.Contains(err.Error(), "type") {
|
||||||
t.Fatal("expected type error; got", err)
|
t.Fatal("expected type error; got", err)
|
||||||
}
|
}
|
||||||
// Non-encoder to GobDecoder: error
|
// Non-encoder to GobDecoder: error
|
||||||
@ -562,7 +562,7 @@ func TestGobEncoderFieldTypeError(t *testing.T) {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("expected decode error for mismatched fields (non-encoder to decoder)")
|
t.Fatal("expected decode error for mismatched fields (non-encoder to decoder)")
|
||||||
}
|
}
|
||||||
if strings.Index(err.Error(), "type") < 0 {
|
if !strings.Contains(err.Error(), "type") {
|
||||||
t.Fatal("expected type error; got", err)
|
t.Fatal("expected type error; got", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -850,7 +850,7 @@ func (p *printer) marshalStruct(tinfo *typeInfo, val reflect.Value) error {
|
|||||||
switch k {
|
switch k {
|
||||||
case reflect.String:
|
case reflect.String:
|
||||||
s := vf.String()
|
s := vf.String()
|
||||||
dashDash = strings.Index(s, "--") >= 0
|
dashDash = strings.Contains(s, "--")
|
||||||
dashLast = s[len(s)-1] == '-'
|
dashLast = s[len(s)-1] == '-'
|
||||||
if !dashDash {
|
if !dashDash {
|
||||||
p.WriteString(s)
|
p.WriteString(s)
|
||||||
|
@ -519,7 +519,7 @@ func testScanfMulti(name string, t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
if test.err == "" {
|
if test.err == "" {
|
||||||
t.Errorf("got error scanning (%q, %q): %q", test.format, test.text, err)
|
t.Errorf("got error scanning (%q, %q): %q", test.format, test.text, err)
|
||||||
} else if strings.Index(err.Error(), test.err) < 0 {
|
} else if !strings.Contains(err.Error(), test.err) {
|
||||||
t.Errorf("got wrong error scanning (%q, %q): %q; expected %q", test.format, test.text, err, test.err)
|
t.Errorf("got wrong error scanning (%q, %q): %q; expected %q", test.format, test.text, err, test.err)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@ -613,7 +613,7 @@ func TestScanNotPointer(t *testing.T) {
|
|||||||
_, err := Fscan(r, a)
|
_, err := Fscan(r, a)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("expected error scanning non-pointer")
|
t.Error("expected error scanning non-pointer")
|
||||||
} else if strings.Index(err.Error(), "pointer") < 0 {
|
} else if !strings.Contains(err.Error(), "pointer") {
|
||||||
t.Errorf("expected pointer error scanning non-pointer, got: %s", err)
|
t.Errorf("expected pointer error scanning non-pointer, got: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -623,7 +623,7 @@ func TestScanlnNoNewline(t *testing.T) {
|
|||||||
_, err := Sscanln("1 x\n", &a)
|
_, err := Sscanln("1 x\n", &a)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("expected error scanning string missing newline")
|
t.Error("expected error scanning string missing newline")
|
||||||
} else if strings.Index(err.Error(), "newline") < 0 {
|
} else if !strings.Contains(err.Error(), "newline") {
|
||||||
t.Errorf("expected newline error scanning string missing newline, got: %s", err)
|
t.Errorf("expected newline error scanning string missing newline, got: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -634,7 +634,7 @@ func TestScanlnWithMiddleNewline(t *testing.T) {
|
|||||||
_, err := Fscanln(r, &a, &b)
|
_, err := Fscanln(r, &a, &b)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("expected error scanning string with extra newline")
|
t.Error("expected error scanning string with extra newline")
|
||||||
} else if strings.Index(err.Error(), "newline") < 0 {
|
} else if !strings.Contains(err.Error(), "newline") {
|
||||||
t.Errorf("expected newline error scanning string with extra newline, got: %s", err)
|
t.Errorf("expected newline error scanning string with extra newline, got: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@ func heading(line string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// exclude lines with illegal characters
|
// exclude lines with illegal characters
|
||||||
if strings.IndexAny(line, ",.;:!?+*/=()[]{}_^°&§~%#@<\">\\") >= 0 {
|
if strings.ContainsAny(line, ",.;:!?+*/=()[]{}_^°&§~%#@<\">\\") {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ func init() {
|
|||||||
//
|
//
|
||||||
func def(obj Object) {
|
func def(obj Object) {
|
||||||
name := obj.Name()
|
name := obj.Name()
|
||||||
if strings.Index(name, " ") >= 0 {
|
if strings.Contains(name, " ") {
|
||||||
return // nothing to do
|
return // nothing to do
|
||||||
}
|
}
|
||||||
// fix Obj link for named types
|
// fix Obj link for named types
|
||||||
|
@ -15,7 +15,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func ratTok(ch rune) bool {
|
func ratTok(ch rune) bool {
|
||||||
return strings.IndexRune("+-/0123456789.eE", ch) >= 0
|
return strings.ContainsRune("+-/0123456789.eE", ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan is a support routine for fmt.Scanner. It accepts the formats
|
// Scan is a support routine for fmt.Scanner. It accepts the formats
|
||||||
@ -25,7 +25,7 @@ func (z *Rat) Scan(s fmt.ScanState, ch rune) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if strings.IndexRune("efgEFGv", ch) < 0 {
|
if !strings.ContainsRune("efgEFGv", ch) {
|
||||||
return errors.New("Rat.Scan: invalid verb")
|
return errors.New("Rat.Scan: invalid verb")
|
||||||
}
|
}
|
||||||
if _, ok := z.SetString(string(tok)); !ok {
|
if _, ok := z.SetString(string(tok)); !ok {
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
// isTSpecial reports whether rune is in 'tspecials' as defined by RFC
|
// isTSpecial reports whether rune is in 'tspecials' as defined by RFC
|
||||||
// 1521 and RFC 2045.
|
// 1521 and RFC 2045.
|
||||||
func isTSpecial(r rune) bool {
|
func isTSpecial(r rune) bool {
|
||||||
return strings.IndexRune(`()<>@,;:\"/[]?=`, r) != -1
|
return strings.ContainsRune(`()<>@,;:\"/[]?=`, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
// isTokenChar reports whether rune is in 'token' as defined by RFC
|
// isTokenChar reports whether rune is in 'token' as defined by RFC
|
||||||
|
@ -34,7 +34,7 @@ import (
|
|||||||
type Dir string
|
type Dir string
|
||||||
|
|
||||||
func (d Dir) Open(name string) (File, error) {
|
func (d Dir) Open(name string) (File, error) {
|
||||||
if filepath.Separator != '/' && strings.IndexRune(name, filepath.Separator) >= 0 ||
|
if filepath.Separator != '/' && strings.ContainsRune(name, filepath.Separator) ||
|
||||||
strings.Contains(name, "\x00") {
|
strings.Contains(name, "\x00") {
|
||||||
return nil, errors.New("http: invalid character in file path")
|
return nil, errors.New("http: invalid character in file path")
|
||||||
}
|
}
|
||||||
|
@ -183,7 +183,7 @@ func testRPC(t *testing.T, addr string) {
|
|||||||
err = client.Call("Arith.Unknown", args, reply)
|
err = client.Call("Arith.Unknown", args, reply)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("expected error calling unknown service")
|
t.Error("expected error calling unknown service")
|
||||||
} else if strings.Index(err.Error(), "method") < 0 {
|
} else if !strings.Contains(err.Error(), "method") {
|
||||||
t.Error("expected error about method; got", err)
|
t.Error("expected error about method; got", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ func testRPC(t *testing.T, addr string) {
|
|||||||
err = client.Call("Arith.Add", reply, reply) // args, reply would be the correct thing to use
|
err = client.Call("Arith.Add", reply, reply) // args, reply would be the correct thing to use
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("expected error calling Arith.Add with wrong arg type")
|
t.Error("expected error calling Arith.Add with wrong arg type")
|
||||||
} else if strings.Index(err.Error(), "type") < 0 {
|
} else if !strings.Contains(err.Error(), "type") {
|
||||||
t.Error("expected error about type; got", err)
|
t.Error("expected error about type; got", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -511,7 +511,7 @@ func parseAuthority(authority string) (user *Userinfo, host string, err error) {
|
|||||||
return nil, host, nil
|
return nil, host, nil
|
||||||
}
|
}
|
||||||
userinfo := authority[:i]
|
userinfo := authority[:i]
|
||||||
if strings.Index(userinfo, ":") < 0 {
|
if !strings.Contains(userinfo, ":") {
|
||||||
if userinfo, err = unescape(userinfo, encodeUserPassword); err != nil {
|
if userinfo, err = unescape(userinfo, encodeUserPassword); err != nil {
|
||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ func LookPath(file string) (f string, err error) {
|
|||||||
}
|
}
|
||||||
exts = append(exts, e)
|
exts = append(exts, e)
|
||||||
}
|
}
|
||||||
if strings.IndexAny(file, `:\/`) != -1 {
|
if strings.ContainsAny(file, `:\/`) {
|
||||||
if f, err = findExecutable(file, exts); err == nil {
|
if f, err = findExecutable(file, exts); err == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ Pattern:
|
|||||||
star, chunk, pattern = scanChunk(pattern)
|
star, chunk, pattern = scanChunk(pattern)
|
||||||
if star && chunk == "" {
|
if star && chunk == "" {
|
||||||
// Trailing * matches rest of string unless it has a /.
|
// Trailing * matches rest of string unless it has a /.
|
||||||
return strings.Index(name, string(Separator)) < 0, nil
|
return !strings.Contains(name, string(Separator)), nil
|
||||||
}
|
}
|
||||||
// Look for match at current position.
|
// Look for match at current position.
|
||||||
t, ok, err := matchChunk(chunk, name)
|
t, ok, err := matchChunk(chunk, name)
|
||||||
@ -305,5 +305,5 @@ func glob(dir, pattern string, matches []string) (m []string, e error) {
|
|||||||
// recognized by Match.
|
// recognized by Match.
|
||||||
func hasMeta(path string) bool {
|
func hasMeta(path string) bool {
|
||||||
// TODO(niemeyer): Should other magic characters be added here?
|
// TODO(niemeyer): Should other magic characters be added here?
|
||||||
return strings.IndexAny(path, "*?[") >= 0
|
return strings.ContainsAny(path, "*?[")
|
||||||
}
|
}
|
||||||
|
@ -88,7 +88,7 @@ func TestMatch(t *testing.T) {
|
|||||||
pattern := tt.pattern
|
pattern := tt.pattern
|
||||||
s := tt.s
|
s := tt.s
|
||||||
if runtime.GOOS == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
if strings.Index(pattern, "\\") >= 0 {
|
if strings.Contains(pattern, "\\") {
|
||||||
// no escape allowed on windows.
|
// no escape allowed on windows.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ Pattern:
|
|||||||
star, chunk, pattern = scanChunk(pattern)
|
star, chunk, pattern = scanChunk(pattern)
|
||||||
if star && chunk == "" {
|
if star && chunk == "" {
|
||||||
// Trailing * matches rest of string unless it has a /.
|
// Trailing * matches rest of string unless it has a /.
|
||||||
return strings.Index(name, "/") < 0, nil
|
return !strings.Contains(name, "/"), nil
|
||||||
}
|
}
|
||||||
// Look for match at current position.
|
// Look for match at current position.
|
||||||
t, ok, err := matchChunk(chunk, name)
|
t, ok, err := matchChunk(chunk, name)
|
||||||
|
@ -454,7 +454,7 @@ func Match(pattern string, b []byte) (matched bool, err error) {
|
|||||||
// in Expand, so for instance $1 represents the text of the first submatch.
|
// in Expand, so for instance $1 represents the text of the first submatch.
|
||||||
func (re *Regexp) ReplaceAllString(src, repl string) string {
|
func (re *Regexp) ReplaceAllString(src, repl string) string {
|
||||||
n := 2
|
n := 2
|
||||||
if strings.Index(repl, "$") >= 0 {
|
if strings.Contains(repl, "$") {
|
||||||
n = 2 * (re.numSubexp + 1)
|
n = 2 * (re.numSubexp + 1)
|
||||||
}
|
}
|
||||||
b := re.replaceAll(nil, src, n, func(dst []byte, match []int) []byte {
|
b := re.replaceAll(nil, src, n, func(dst []byte, match []int) []byte {
|
||||||
|
@ -252,7 +252,7 @@ const meta = `\.+*?()|[]{}^$`
|
|||||||
|
|
||||||
func escape(b *bytes.Buffer, r rune, force bool) {
|
func escape(b *bytes.Buffer, r rune, force bool) {
|
||||||
if unicode.IsPrint(r) {
|
if unicode.IsPrint(r) {
|
||||||
if strings.IndexRune(meta, r) >= 0 || force {
|
if strings.ContainsRune(meta, r) || force {
|
||||||
b.WriteRune('\\')
|
b.WriteRune('\\')
|
||||||
}
|
}
|
||||||
b.WriteRune(r)
|
b.WriteRune(r)
|
||||||
|
@ -59,7 +59,7 @@ func TestStack(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func check(t *testing.T, line, has string) {
|
func check(t *testing.T, line, has string) {
|
||||||
if strings.Index(line, has) < 0 {
|
if !strings.Contains(line, has) {
|
||||||
t.Errorf("expected %q in %q", has, line)
|
t.Errorf("expected %q in %q", has, line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -446,7 +446,7 @@ func (s *state) idealConstant(constant *parse.NumberNode) reflect.Value {
|
|||||||
switch {
|
switch {
|
||||||
case constant.IsComplex:
|
case constant.IsComplex:
|
||||||
return reflect.ValueOf(constant.Complex128) // incontrovertible.
|
return reflect.ValueOf(constant.Complex128) // incontrovertible.
|
||||||
case constant.IsFloat && !isHexConstant(constant.Text) && strings.IndexAny(constant.Text, ".eE") >= 0:
|
case constant.IsFloat && !isHexConstant(constant.Text) && strings.ContainsAny(constant.Text, ".eE"):
|
||||||
return reflect.ValueOf(constant.Float64)
|
return reflect.ValueOf(constant.Float64)
|
||||||
case constant.IsInt:
|
case constant.IsInt:
|
||||||
n := int(constant.Int64)
|
n := int(constant.Int64)
|
||||||
|
@ -515,7 +515,7 @@ func HTMLEscape(w io.Writer, b []byte) {
|
|||||||
// HTMLEscapeString returns the escaped HTML equivalent of the plain text data s.
|
// HTMLEscapeString returns the escaped HTML equivalent of the plain text data s.
|
||||||
func HTMLEscapeString(s string) string {
|
func HTMLEscapeString(s string) string {
|
||||||
// Avoid allocation if we can.
|
// Avoid allocation if we can.
|
||||||
if strings.IndexAny(s, `'"&<>`) < 0 {
|
if !strings.ContainsAny(s, `'"&<>`) {
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
|
@ -155,7 +155,7 @@ func (l *lexer) ignore() {
|
|||||||
|
|
||||||
// accept consumes the next rune if it's from the valid set.
|
// accept consumes the next rune if it's from the valid set.
|
||||||
func (l *lexer) accept(valid string) bool {
|
func (l *lexer) accept(valid string) bool {
|
||||||
if strings.IndexRune(valid, l.next()) >= 0 {
|
if strings.ContainsRune(valid, l.next()) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
l.backup()
|
l.backup()
|
||||||
@ -164,7 +164,7 @@ func (l *lexer) accept(valid string) bool {
|
|||||||
|
|
||||||
// acceptRun consumes a run of runes from the valid set.
|
// acceptRun consumes a run of runes from the valid set.
|
||||||
func (l *lexer) acceptRun(valid string) {
|
func (l *lexer) acceptRun(valid string) {
|
||||||
for strings.IndexRune(valid, l.next()) >= 0 {
|
for strings.ContainsRune(valid, l.next()) {
|
||||||
}
|
}
|
||||||
l.backup()
|
l.backup()
|
||||||
}
|
}
|
||||||
|
@ -447,7 +447,7 @@ func TestParseErrors(t *testing.T) {
|
|||||||
_, err := Parse(test.format, test.value)
|
_, err := Parse(test.format, test.value)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("expected error for %q %q", test.format, test.value)
|
t.Errorf("expected error for %q %q", test.format, test.value)
|
||||||
} else if strings.Index(err.Error(), test.expect) < 0 {
|
} else if !strings.Contains(err.Error(), test.expect) {
|
||||||
t.Errorf("expected error with %q for %q %q; got %s", test.expect, test.format, test.value, err)
|
t.Errorf("expected error with %q for %q %q; got %s", test.expect, test.format, test.value, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user