diff options
author | Russ Cox <rsc@golang.org> | 2021-02-09 17:34:09 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2021-02-11 01:10:35 +0000 |
commit | 930c2c9a6810b54d84dc499120219a6cb4563fd7 (patch) | |
tree | aa7e09bd3483b1ec45cb14d60cd83afeb95e6446 | |
parent | e5b08e6d5cecb646066c0cadddf6300e2a10ffb2 (diff) | |
download | go-930c2c9a6810b54d84dc499120219a6cb4563fd7.tar.gz go-930c2c9a6810b54d84dc499120219a6cb4563fd7.zip |
cmd/go: reject embedded files that can't be packed into modules
If the file won't be packed into a module,
don't put those files into embeds.
Otherwise people will be surprised when things work
locally but not when imported by another module.
Observed on CL 290709
Change-Id: Ia0ef7d0e0f5e42473c2b774e57c843e68a365bc7
Reviewed-on: https://go-review.googlesource.com/c/go/+/290809
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Jay Conrod <jayconrod@google.com>
-rw-r--r-- | src/cmd/go/internal/load/pkg.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 3a274a3ad1..8b12faf4cd 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -36,6 +36,8 @@ import ( "cmd/go/internal/str" "cmd/go/internal/trace" "cmd/internal/sys" + + "golang.org/x/mod/module" ) var IgnoreImports bool // control whether we ignore imports in packages @@ -2090,6 +2092,9 @@ func validEmbedPattern(pattern string) bool { // can't or won't be included in modules and therefore shouldn't be treated // as existing for embedding. func isBadEmbedName(name string) bool { + if err := module.CheckFilePath(name); err != nil { + return true + } switch name { // Empty string should be impossible but make it bad. case "": |