# Regression test for https://golang.org/issue/46659. # # If a 'replace' directive specifies an older-than-selected version of a module, # 'go mod tidy' shouldn't try to add that version to the build list to resolve a # missing package: it won't be selected, and would cause the module loader to # loop indefinitely trying to resolve the package. cp go.mod go.mod.orig ! go mod tidy ! stderr panic stderr '^go: golang\.org/issue46659 imports\n\texample\.com/missingpkg/deprecated: package example\.com/missingpkg/deprecated provided by example\.com/missingpkg at latest version v1\.0\.0 but not at required version v1\.0\.1-beta$' go mod tidy -e cmp go.mod go.mod.orig -- go.mod -- module golang.org/issue46659 go 1.17 replace example.com/missingpkg v1.0.1-alpha => example.com/missingpkg v1.0.0 require example.com/usemissingpre v1.0.0 require example.com/missingpkg v1.0.1-beta // indirect -- m.go -- package m import ( _ "example.com/missingpkg/deprecated" _ "example.com/usemissingpre" )