pkg := pathInModuleCache(ctx, absDir, rs)
if pkg == "" {
- scope := "main module or its selected dependencies"
if inWorkspaceMode() {
- scope = "modules listed in go.work or their selected dependencies"
+ if mr := findModuleRoot(absDir); mr != "" {
+ return "", fmt.Errorf("directory %s is contained in a module that is not one of the workspace modules listed in go.work. You can add the module to the workspace using go work use %s", base.ShortPath(absDir), base.ShortPath(mr))
+ }
+ return "", fmt.Errorf("directory %s outside modules listed in go.work or their selected dependencies", base.ShortPath(absDir))
}
- return "", fmt.Errorf("directory %s outside %s", base.ShortPath(absDir), scope)
+ return "", fmt.Errorf("directory %s outside main module or its selected dependencies", base.ShortPath(absDir))
}
return pkg, nil
}
! go list ./...
stderr 'pattern ./...: directory prefix . does not contain modules listed in go.work or their selected dependencies'
-! go list ./a
-stderr 'directory a outside modules listed in go.work'
+! go list ./a/c
+stderr 'directory a[\\/]c is contained in a module that is not one of the workspace modules listed in go.work. You can add the module to the workspace using go work use a'
-- go.work --
go 1.18
go 1.18
-- a/a.go --
package a
+-- a/c/c.go --
+package c
-- b/go.mod --
module example.com/b