# Support replace statement in go.work file

# Replacement in go.work file, and none in go.mod file.
go list -m example.com/dep
stdout 'example.com/dep v1.0.0 => ./dep'

# Wildcard replacement in go.work file overrides version replacement in go.mod
# file.
go list -m example.com/other
stdout 'example.com/other v1.0.0 => ./other2'

-- go.work --
directory m

replace example.com/dep => ./dep
replace example.com/other => ./other2

-- m/go.mod --
module example.com/m

require example.com/dep v1.0.0
require example.com/other v1.0.0

replace example.com/other v1.0.0 => ./other
-- m/m.go --
package m

import "example.com/dep"
import "example.com/other"

func F() {
	dep.G()
	other.H()
}
-- dep/go.mod --
module example.com/dep
-- dep/dep.go --
package dep

func G() {
}
-- other/go.mod --
module example.com/other
-- other/dep.go --
package other

func G() {
}
-- other2/go.mod --
module example.com/other
-- other2/dep.go --
package other

func G() {
}