]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: clean paths before checking same directory
authorgerrard <gyc_ssdut@163.com>
Thu, 16 Sep 2021 07:10:58 +0000 (07:10 +0000)
committerBryan C. Mills <bcmills@google.com>
Thu, 16 Sep 2021 14:25:50 +0000 (14:25 +0000)
Replace `filepath.Split`  with `filepath.Dir`. Clean paths before checking whether command line files are in same directory.

Fixes #47392

Change-Id: I259c3024e7670e78833622b02af4710bc4b68b31
GitHub-Last-Rev: c7c4905bb9c62737e95a4663813f076ee540046b
GitHub-Pull-Request: golang/go#47412
Reviewed-on: https://go-review.googlesource.com/c/go/+/337629
Trust: Bryan C. Mills <bcmills@google.com>
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/load/pkg.go
src/cmd/go/testdata/script/run_dirs.txt

index f0613a4c0a6948cf7bea47e24af53de03256f697..4013330bc47f9dc18c1c7b728ad7625ab3a4bf77 100644 (file)
@@ -2674,10 +2674,7 @@ func GoFilesPackage(ctx context.Context, opts PackageOpts, gofiles []string) *Pa
                if fi.IsDir() {
                        base.Fatalf("%s is a directory, should be a Go file", file)
                }
-               dir1, _ := filepath.Split(file)
-               if dir1 == "" {
-                       dir1 = "./"
-               }
+               dir1 := filepath.Dir(file)
                if dir == "" {
                        dir = dir1
                } else if dir != dir1 {
index 538a6ac6f39cc803b2740d35e32428b6ceb8c09f..bd5cfbe3fb272cb8e0095375f9fcd9be42439666 100644 (file)
@@ -1,11 +1,21 @@
 cd rundir
 
 ! go run x.go sub/sub.go
-stderr 'named files must all be in one directory; have ./ and sub/'
+stderr 'named files must all be in one directory; have . and sub'
 ! go run sub/sub.go x.go
-stderr 'named files must all be in one directory; have sub/ and ./'
+stderr 'named files must all be in one directory; have sub and .'
+
+cd ../
+go run rundir/foo.go ./rundir/bar.go
+stderr 'hello world'
 
 -- rundir/sub/sub.go --
 package main
 -- rundir/x.go --
 package main
+-- rundir/foo.go --
+package main
+func main() { println(msg) }
+-- rundir/bar.go --
+package main
+const msg = "hello world"