# If a replacement module declares a module path different from both
# the original module and its location, report an error with all three paths.
# In particular, the "required as" path should be the original.
# Verifies golang.org/issue/38220.
! go mod download
cmp stderr want

-- go.mod --
module m

require rsc.io/quote v1.5.2

replace rsc.io/quote v1.5.2 => example.com/quote v1.5.2

-- use.go --
package use

import _ "rsc.io/quote"

-- want --
go: rsc.io/quote@v1.5.2 (replaced by example.com/quote@v1.5.2): parsing go.mod:
	module declares its path as: rsc.io/Quote
	        but was required as: rsc.io/quote
