| This test checks that the zero-config algorithm selects Views to cover first |
| class ports. |
| |
| In this test, package a imports b, and b imports c. Package a contains files |
| constrained by go:build directives, package b contains files constrained by the |
| GOOS matching their file name, and package c is unconstrained. Various |
| assertions check that diagnostics and navigation work as expected. |
| |
| -- go.mod -- |
| module golang.org/lsptests |
| |
| -- a/a.go -- |
| package a |
| |
| import "golang.org/lsptests/b" |
| |
| var _ = b.F //@loc(F, "F") |
| |
| -- a/linux64.go -- |
| //go:build (linux && amd64) |
| |
| package a |
| |
| import "golang.org/lsptests/b" |
| |
| var _ int = 1<<32 -1 // OK on 64 bit platforms. Compare linux32.go below. |
| |
| var ( |
| _ = b.LinuxOnly //@def("LinuxOnly", LinuxOnly) |
| _ = b.DarwinOnly //@diag("DarwinOnly", re"(undefined|declared)") |
| _ = b.WindowsOnly //@diag("WindowsOnly", re"(undefined|declared)") |
| ) |
| |
| -- a/linux32.go -- |
| //go:build (linux && 386) |
| |
| package a |
| |
| import "golang.org/lsptests/b" |
| |
| var _ int = 1<<32 -1 //@diag("1<<32", re"overflows") |
| |
| var ( |
| _ = b.LinuxOnly //@def("LinuxOnly", LinuxOnly) |
| _ = b.DarwinOnly //@diag("DarwinOnly", re"(undefined|declared)") |
| _ = b.WindowsOnly //@diag("WindowsOnly", re"(undefined|declared)") |
| ) |
| |
| -- a/darwin64.go -- |
| //go:build (darwin && amd64) |
| |
| package a |
| |
| import "golang.org/lsptests/b" |
| |
| var ( |
| _ = b.LinuxOnly //@diag("LinuxOnly", re"(undefined|declared)") |
| _ = b.DarwinOnly //@def("DarwinOnly", DarwinOnly) |
| _ = b.WindowsOnly //@diag("WindowsOnly", re"(undefined|declared)") |
| ) |
| |
| -- a/windows64.go -- |
| //go:build (windows && amd64) |
| |
| package a |
| |
| import "golang.org/lsptests/b" |
| |
| var ( |
| _ = b.LinuxOnly //@diag("LinuxOnly", re"(undefined|declared)") |
| _ = b.DarwinOnly //@diag("DarwinOnly", re"(undefined|declared)") |
| _ = b.WindowsOnly //@def("WindowsOnly", WindowsOnly) |
| ) |
| |
| -- b/b_other.go -- |
| //go:build !linux && !darwin && !windows |
| package b |
| |
| func F() {} |
| |
| -- b/b_linux.go -- |
| package b |
| |
| import "golang.org/lsptests/c" |
| |
| func F() { //@refs("F", "F", F) |
| x := c.Common //@diag("x", re"not used"),def("Common", Common) |
| } |
| |
| const LinuxOnly = "darwin" //@loc(LinuxOnly, "LinuxOnly") |
| |
| -- b/b_darwin.go -- |
| package b |
| |
| import "golang.org/lsptests/c" |
| |
| func F() { //@refs("F", "F", F) |
| x := c.Common //@diag("x", re"not used"),def("Common", Common) |
| } |
| |
| const DarwinOnly = "darwin" //@loc(DarwinOnly, "DarwinOnly") |
| |
| -- b/b_windows.go -- |
| package b |
| |
| import "golang.org/lsptests/c" |
| |
| func F() { //@refs("F", "F", F) |
| x := c.Common //@diag("x", re"not used"),def("Common", Common) |
| } |
| |
| const WindowsOnly = "windows" //@loc(WindowsOnly, "WindowsOnly") |
| |
| -- c/c.go -- |
| package c |
| |
| const Common = 0 //@loc(Common, "Common") |
| |