# Regression test for https://golang.org/issue/37438.
#
# If a path exists at the requested version, but does not exist at the
# version of the module that is already required and does not exist at
# the version that would be selected by 'go mod tidy', then
# 'go get foo@requested' should resolve the requested version,
# not error out on the (unrelated) latest one.

go get -d example.net/a/p@v0.2.0

-- go.mod --
module example

go 1.15

require example.net/a v0.1.0

replace (
	example.net/a v0.1.0 => ./a1
	example.net/a v0.2.0 => ./a2
	example.net/a v0.3.0 => ./a1
)

-- a1/go.mod --
module example.net/a

go 1.15
-- a1/README --
package example.net/a/p does not exist at this version.

-- a2/go.mod --
module example.net/a

go 1.15
-- a2/p/p.go --
// Package p exists only at v0.2.0.
package p
