# https://golang.org/issue/44776
# The '+' character should be disallowed in module paths, but allowed in package
# paths within valid modules.

# 'go list' accepts package paths with pluses.
cp go.mod.orig go.mod
go get -d example.net/cmd
go list example.net/cmd/x++

# 'go list -m' rejects module paths with pluses.
! go list -versions -m 'example.net/bad++'
stderr '^go list -m: malformed module path "example.net/bad\+\+": invalid char ''\+''$'

# 'go get' accepts package paths with pluses.
cp go.mod.orig go.mod
go get -d example.net/cmd/x++
go list -m example.net/cmd
stdout '^example.net/cmd v0.0.0-00010101000000-000000000000 => ./cmd$'

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

go 1.16

replace (
	example.net/cmd => ./cmd
)

-- cmd/go.mod --
module example.net/cmd

go 1.16
-- cmd/x++/main.go --
package main

func main() {}
