# Test of go work sync in a workspace in which some dependency in the build
# list of 'b' (but not otherwise needed by `b`, so not seen when lazy loading
# occurs) actually is relevant to `a`.
#
# a -> p 1.0
# b -> q 1.1 -> p 1.1
go work sync
cmp a/go.mod a/want_go.mod
cmp b/go.mod b/want_go.mod

-- go.work --
go 1.18

use (
	./a
	./b
)

-- a/go.mod --
go 1.18

module example.com/a

require (
	example.com/p v1.0.0
)

replace (
	example.com/p => ../p
)
-- a/want_go.mod --
go 1.18

module example.com/a

require example.com/p v1.1.0

replace example.com/p => ../p
-- a/a.go --
package a

import (
	"example.com/p"
)

func Foo() {
	p.P()
}
-- b/go.mod --
go 1.18

module example.com/b

require (
	example.com/q v1.1.0
)

replace (
	example.com/q => ../q
)
-- b/want_go.mod --
go 1.18

module example.com/b

require (
	example.com/q v1.1.0
)

replace (
	example.com/q => ../q
)
-- b/b.go --
package b

import (
	"example.com/q"
)

func Foo() {
	q.Q()
}
-- p/go.mod --
go 1.18

module example.com/p
-- p/p.go --
package p

func P() {}
-- q/go.mod --
go 1.18

module example.com/q

require example.com/p v1.1.0

replace example.com/p => ../p
-- q/q.go --
package q

import example.com/p

func Q() {
	p.P()
}
