# https://golang.org/issue/45952: 'go mod tidy' in an eager module failed due # to an erroneous check on root completeness. # # Per the issue report: # > It may have to do with: # > # > package A imports package B in go.mod, which imports package C in its own go.mod # > package A drops direct dependency on package B … # # We infer from that that package C is still needed by some other indirect # dependency, and must be at a higher version than what is required by that # dependency (or else no new root would be needed). An additional package D # in its own module satisfies that condition, reproducing the bug. go mod tidy cmp go.mod go.mod.tidy -- go.mod -- module example.net/a go 1.16 require ( example.net/b v0.1.0 example.net/d v0.1.0 ) replace ( example.net/b v0.1.0 => ./b example.net/c v0.1.0 => ./c example.net/c v0.2.0 => ./c example.net/d v0.1.0 => ./d ) -- go.mod.tidy -- module example.net/a go 1.16 require ( example.net/c v0.2.0 // indirect example.net/d v0.1.0 ) replace ( example.net/b v0.1.0 => ./b example.net/c v0.1.0 => ./c example.net/c v0.2.0 => ./c example.net/d v0.1.0 => ./d ) -- a.go -- package a import _ "example.net/d" -- b/go.mod -- module example.net/b go 1.16 require example.net/c v0.2.0 -- b/b.go -- package b import _ "example.net/c" -- c/go.mod -- module example.net/c go 1.16 -- c/c.go -- package c -- d/go.mod -- module example.net/d go 1.16 require example.net/c v0.1.0 -- d/d.go -- package d import _ "example.net/c"