mirror of
https://github.com/golang/go
synced 2024-11-23 07:10:05 -07:00
cmd/go: fix missing case checking for empty slice
When we were comparing the first element of import stacks when sorting depserrors we checked if the first stack was non empty, but not the second one. Do the check for both stacks. Fixes #61816 For #59905 Change-Id: Id5c11c2b1104eec93196a08c53372ee2ba97c701 Reviewed-on: https://go-review.googlesource.com/c/go/+/516739 Reviewed-by: Bryan Mills <bcmills@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
5b2ddfadb2
commit
58447d757c
@ -957,7 +957,10 @@ func collectDepsErrors(p *load.Package) {
|
||||
if len(stkj) != 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
return p.DepsErrors[i].Err.Error() < p.DepsErrors[j].Err.Error()
|
||||
} else if len(stkj) == 0 {
|
||||
return false
|
||||
}
|
||||
pathi, pathj := stki[len(stki)-1], stkj[len(stkj)-1]
|
||||
return pathi < pathj
|
||||
|
26
src/cmd/go/testdata/script/list_issue_59905.txt
vendored
26
src/cmd/go/testdata/script/list_issue_59905.txt
vendored
@ -1,8 +1,13 @@
|
||||
# Expect no panic
|
||||
go list -f '{{if .DepsErrors}}{{.DepsErrors}}{{end}}' -export -e -deps
|
||||
cmpenv stdout wanterr
|
||||
cmpenv stdout wanterr_59905
|
||||
|
||||
-- wanterr --
|
||||
# Expect no panic (Issue 61816)
|
||||
cp level1b_61816.txt level1b/pkg.go
|
||||
go list -f '{{if .DepsErrors}}{{.DepsErrors}}{{end}}' -export -e -deps
|
||||
cmpenv stdout wanterr_61816
|
||||
|
||||
-- wanterr_59905 --
|
||||
[# test/main/level1a
|
||||
level1a${/}pkg.go:5:2: level2x redeclared in this block
|
||||
level1a${/}pkg.go:4:2: other declaration of level2x
|
||||
@ -14,6 +19,23 @@ level1b${/}pkg.go:5:2: level2x redeclared in this block
|
||||
level1b${/}pkg.go:5:2: "test/main/level1b/level2y" imported as level2x and not used
|
||||
level1b${/}pkg.go:8:39: undefined: level2y
|
||||
]
|
||||
-- wanterr_61816 --
|
||||
[level1b${/}pkg.go:4:2: package foo is not in std ($GOROOT${/}src${/}foo)]
|
||||
[# test/main/level1a
|
||||
level1a${/}pkg.go:5:2: level2x redeclared in this block
|
||||
level1a${/}pkg.go:4:2: other declaration of level2x
|
||||
level1a${/}pkg.go:5:2: "test/main/level1a/level2y" imported as level2x and not used
|
||||
level1a${/}pkg.go:8:39: undefined: level2y
|
||||
level1b${/}pkg.go:4:2: package foo is not in std ($GOROOT${/}src${/}foo)]
|
||||
-- level1b_61816.txt --
|
||||
package level1b
|
||||
|
||||
import (
|
||||
"foo"
|
||||
)
|
||||
|
||||
func Print() { println(level2x.Value, level2y.Value) }
|
||||
|
||||
-- go.mod --
|
||||
module test/main
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user