]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/go: using strings.CutPrefix replace strings.HasPrefix and strings.TrimPrefix
authorcuiweixie <cuiweixie@gmail.com>
Tue, 27 Sep 2022 11:03:54 +0000 (19:03 +0800)
committerGopher Robot <gobot@golang.org>
Thu, 29 Sep 2022 21:28:10 +0000 (21:28 +0000)
Change-Id: I143d05c24a3e897d0f3ee78dd16954c32ceae091
Reviewed-on: https://go-review.googlesource.com/c/go/+/435137
Run-TryBot: xie cui <523516579@qq.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Bryan Mills <bcmills@google.com>

src/cmd/go/internal/envcmd/env.go
src/cmd/go/internal/modfetch/codehost/git.go
src/cmd/go/internal/modfetch/coderepo.go
src/cmd/go/internal/modload/load.go
src/cmd/go/internal/modload/vendor.go
src/cmd/go/internal/test/genflags.go
src/cmd/go/internal/work/action.go
src/cmd/go/script_test.go

index 6dd8657bfc61b360d9e83f916ba6afde141b6845..2d8f7afd6b1cd36e486fe76bd3161da144226cdb 100644 (file)
@@ -453,8 +453,8 @@ func printEnvAsJSON(env []cfg.EnvVar) {
 
 func getOrigEnv(key string) string {
        for _, v := range cfg.OrigEnv {
-               if strings.HasPrefix(v, key+"=") {
-                       return strings.TrimPrefix(v, key+"=")
+               if v, found := strings.CutPrefix(v, key+"="); found {
+                       return v
                }
        }
        return ""
index 7127d6afe93a08920c9462f7c1fe36e1793fb728..127ad264afa76994f64770265a4ff7df33fd08f2 100644 (file)
@@ -486,9 +486,9 @@ func (r *gitRepo) stat(rev string) (info *RevInfo, err error) {
        // Either way, try a local stat before falling back to network I/O.
        if !didStatLocal {
                if info, err := r.statLocal(rev, hash); err == nil {
-                       if strings.HasPrefix(ref, "refs/tags/") {
+                       if after, found := strings.CutPrefix(ref, "refs/tags/"); found {
                                // Make sure tag exists, so it will be in localTags next time the go command is run.
-                               Run(r.dir, "git", "tag", strings.TrimPrefix(ref, "refs/tags/"), hash)
+                               Run(r.dir, "git", "tag", after, hash)
                        }
                        return info, nil
                }
index b72989b2a856200d7487cedecd211d49a904b9e4..0aee381e17d53c61ec3757948e534ff49700b640 100644 (file)
@@ -1095,14 +1095,16 @@ func (r *codeRepo) Zip(dst io.Writer, version string) error {
                        }
                        topPrefix = zf.Name[:i+1]
                }
-               if !strings.HasPrefix(zf.Name, topPrefix) {
+               var name string
+               var found bool
+               if name, found = strings.CutPrefix(zf.Name, topPrefix); !found {
                        return fmt.Errorf("zip file contains more than one top-level directory")
                }
-               name := strings.TrimPrefix(zf.Name, topPrefix)
-               if !strings.HasPrefix(name, subdir) {
+
+               if name, found = strings.CutPrefix(name, subdir); !found {
                        continue
                }
-               name = strings.TrimPrefix(name, subdir)
+
                if name == "" || strings.HasSuffix(name, "/") {
                        continue
                }
index 1527e0aa7a80cd5e15a752ac0f66e695e1fea926..e74780a7b288e00749e833b8de71132790fcdc2f 100644 (file)
@@ -548,13 +548,12 @@ func resolveLocalPackage(ctx context.Context, dir string, rs *Requirements) (str
                modRoot := MainModules.ModRoot(mainModule)
                if modRoot != "" && strings.HasPrefix(absDir, modRoot+string(filepath.Separator)) && !strings.Contains(absDir[len(modRoot):], "@") {
                        suffix := filepath.ToSlash(absDir[len(modRoot):])
-                       if strings.HasPrefix(suffix, "/vendor/") {
+                       if pkg, found := strings.CutPrefix(suffix, "/vendor/"); found {
                                if cfg.BuildMod != "vendor" {
                                        return "", fmt.Errorf("without -mod=vendor, directory %s has no package path", absDir)
                                }
 
                                readVendorList(mainModule)
-                               pkg := strings.TrimPrefix(suffix, "/vendor/")
                                if _, ok := vendorPkgModule[pkg]; !ok {
                                        return "", fmt.Errorf("directory %s is not a package listed in vendor/modules.txt", absDir)
                                }
index 5ea82a862083fdd76ed81f0b63ccac63abb88ef9..e3690495cd763250ec0d327324ca7ef107b1c104 100644 (file)
@@ -98,16 +98,16 @@ func readVendorList(mainModule module.Version) {
                                continue
                        }
 
-                       if strings.HasPrefix(line, "## ") {
+                       if annonations, ok := strings.CutPrefix(line, "## "); ok {
                                // Metadata. Take the union of annotations across multiple lines, if present.
                                meta := vendorMeta[mod]
-                               for _, entry := range strings.Split(strings.TrimPrefix(line, "## "), ";") {
+                               for _, entry := range strings.Split(annonations, ";") {
                                        entry = strings.TrimSpace(entry)
                                        if entry == "explicit" {
                                                meta.Explicit = true
                                        }
-                                       if strings.HasPrefix(entry, "go ") {
-                                               meta.GoVersion = strings.TrimPrefix(entry, "go ")
+                                       if goVersion, ok := strings.CutPrefix(entry, "go "); ok {
+                                               meta.GoVersion = goVersion
                                                rawGoVersion.Store(mod, meta.GoVersion)
                                        }
                                        // All other tokens are reserved for future use.
index f50ae5c1e932404897502e345630a72fe7005ed7..8c7554919a5c8cca0fe26fa6ece502327044c905 100644 (file)
@@ -68,10 +68,11 @@ func testFlags() []string {
 
        var names []string
        flag.VisitAll(func(f *flag.Flag) {
-               if !strings.HasPrefix(f.Name, "test.") {
+               var name string
+               var found bool
+               if name, found = strings.CutPrefix(f.Name, "test."); !found {
                        return
                }
-               name := strings.TrimPrefix(f.Name, "test.")
 
                switch name {
                case "testlogfile", "paniconexit0", "fuzzcachedir", "fuzzworker":
index ae9afd2f123fb71b8b940b62180fc9d56e5cfe73..5700f878af5dc80474cf30758c82700fbbbfead6 100644 (file)
@@ -372,8 +372,8 @@ func readpkglist(shlibpath string) (pkgs []*load.Package) {
                scanner := bufio.NewScanner(bytes.NewBuffer(data))
                for scanner.Scan() {
                        t := scanner.Text()
-                       if strings.HasPrefix(t, "pkgpath ") {
-                               t = strings.TrimPrefix(t, "pkgpath ")
+                       var found bool
+                       if t, found = strings.CutPrefix(t, "pkgpath "); found {
                                t = strings.TrimSuffix(t, ";")
                                pkgs = append(pkgs, load.LoadImportWithFlags(t, base.Cwd(), nil, &stk, nil, 0))
                        }
index 5914efe6d8f44c2515a8060b726bc84f2d66c858..8769aa061ca49d66a9e6a8b5b8abb4d574aaaab2 100644 (file)
@@ -448,8 +448,7 @@ Script:
                                        }).(bool)
                                        break
                                }
-                               if strings.HasPrefix(cond.tag, "GODEBUG:") {
-                                       value := strings.TrimPrefix(cond.tag, "GODEBUG:")
+                               if value, found := strings.CutPrefix(cond.tag, "GODEBUG:"); found {
                                        parts := strings.Split(os.Getenv("GODEBUG"), ",")
                                        for _, p := range parts {
                                                if strings.TrimSpace(p) == value {
@@ -459,8 +458,7 @@ Script:
                                        }
                                        break
                                }
-                               if strings.HasPrefix(cond.tag, "buildmode:") {
-                                       value := strings.TrimPrefix(cond.tag, "buildmode:")
+                               if value, found := strings.CutPrefix(cond.tag, "buildmode:"); found {
                                        ok = sys.BuildModeSupported(runtime.Compiler, value, runtime.GOOS, runtime.GOARCH)
                                        break
                                }