# Verifies golang.org/issue/47738.

# In this test, the user has rewritten their imports to use rsc.io/quote/v3,
# but their go.mod still requires rsc.io/quote@v1.5.2, and they indirectly
# require rsc.io/quote@v1.5.1 but don't import anything from it.
go list -m -f '{{.Path}}@{{.Version}}{{if .Indirect}} indirect{{end}}' all
stdout '^rsc.io/quote@v1.5.2$'
! stdout 'rsc.io/quote/v3'
go list -e all
! stdout '^rsc.io/quote$'

# 'go mod tidy' should preserve the requirement on rsc.io/quote but mark it
# indirect. This prevents a downgrade to v1.5.1, which could introduce
# an ambiguity.
go mod tidy
go list -m -f '{{.Path}}@{{.Version}}{{if .Indirect}} indirect{{end}}' all
stdout '^rsc.io/quote@v1.5.2 indirect$'
stdout '^rsc.io/quote/v3@v3.0.0$'

-- go.mod --
module use

go 1.16

require (
	old-indirect v0.0.0
	rsc.io/quote v1.5.2
)

replace old-indirect v0.0.0 => ./old-indirect
-- go.sum --
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:pvCbr/wm8HzDD3fVywevekufpn6tCGPY3spdHeZJEsw=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.1/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/quote v1.5.2 h1:3fEykkD9k7lYzXqCYrwGAf7iNhbk4yCjHmKBN9td4L0=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0 h1:HLGR/BgEtI3r0uymSP/nl2uPLsUnNJX8toRyhfpBTII=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-- use.go --
package use

import (
	_ "old-indirect/empty"

	_ "rsc.io/quote/v3"
)
-- old-indirect/empty/empty.go --
package empty
-- old-indirect/go.mod --
module old-indirect

go 1.16

require rsc.io/quote v1.5.1
-- old-indirect/go.sum --
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
