| This test checks that gopls works with nested modules, including multiple |
| nested modules. |
| |
| -- main.go -- |
| package main |
| |
| import "fmt" |
| |
| func main() { |
| fmt.Println(mainMsg) //@def("mainMsg", mainMsg) |
| fmt.Println(undef) //@diag("undef", re"undefined|undeclared") |
| } |
| -- main2.go -- |
| package main |
| |
| const mainMsg = "main" //@loc(mainMsg, "mainMsg") |
| |
| -- mod1/go.mod -- |
| module golang.org/lsptests/mod1 |
| |
| go 1.20 |
| |
| -- mod1/a/a.go -- |
| package a |
| |
| import ( |
| "fmt" |
| "golang.org/lsptests/mod1/b" |
| ) |
| |
| func _() { |
| fmt.Println(b.Msg) //@def("Msg", Msg) |
| fmt.Println(undef) //@diag("undef", re"undefined|undeclared") |
| } |
| |
| -- mod1/a/tagged.go -- |
| //go:build tag1 |
| |
| // golang/go#60776: verify that we get an accurate error about build tags |
| // here, rather than an inaccurate error suggesting to add a go.work |
| // file (which won't help). |
| package a //@diag(re`package (a)`, re`excluded due to its build tags`) |
| |
| -- mod1/b/b.go -- |
| package b |
| |
| const Msg = "1" //@loc(Msg, "Msg") |
| |
| -- mod2/go.mod -- |
| module golang.org/lsptests/mod2 |
| |
| require golang.org/lsptests/mod1 v0.0.1 |
| |
| replace golang.org/lsptests/mod1 => ../mod1 |
| |
| go 1.20 |
| |
| -- mod2/c/c.go -- |
| package c |
| |
| import ( |
| "fmt" |
| "golang.org/lsptests/mod1/b" |
| ) |
| |
| func _() { |
| fmt.Println(b.Msg) //@def("Msg", Msg) |
| fmt.Println(undef) //@diag("undef", re"undefined|undeclared") |
| } |