Skip to content

Commit

Permalink
cmd/go: add a better error message when in a module outside workspace
Browse files Browse the repository at this point in the history
When the user is trying to list or build a package in a module that's
outside of the workspace provide a more clear message hinting to the
user that they can add the module to the workspace using go work use.

Fixes #51604

Change-Id: I1202ecb2f22fd6351bfdec88ed613b8167687fb7
Reviewed-on: https://go-review.googlesource.com/c/go/+/400014
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Auto-Submit: Michael Matloob <matloob@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
  • Loading branch information
matloob authored and gopherbot committed Apr 21, 2022
1 parent 5b32a6f commit f95db21
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
8 changes: 5 additions & 3 deletions src/cmd/go/internal/modload/load.go
Expand Up @@ -605,11 +605,13 @@ func resolveLocalPackage(ctx context.Context, dir string, rs *Requirements) (str

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
}
Expand Down
6 changes: 4 additions & 2 deletions src/cmd/go/testdata/script/work_module_not_in_go_work.txt
Expand Up @@ -6,8 +6,8 @@
! 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
Expand All @@ -19,6 +19,8 @@ module example.com/a
go 1.18
-- a/a.go --
package a
-- a/c/c.go --
package c
-- b/go.mod --
module example.com/b

Expand Down

0 comments on commit f95db21

Please sign in to comment.