]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: allow go fmt to complete when embedded file is missing
authorConstantin Konstantinidis <constantinkonstantinidis@gmail.com>
Fri, 15 Jan 2021 16:05:29 +0000 (17:05 +0100)
committerJay Conrod <jayconrod@google.com>
Tue, 19 Jan 2021 20:58:35 +0000 (20:58 +0000)
Fixes #43273

Change-Id: I75fe2e608cb43c048e3c2a22fe7fbb6eb779504a
Reviewed-on: https://go-review.googlesource.com/c/go/+/280452
Trust: Jay Conrod <jayconrod@google.com>
Trust: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
src/cmd/go/internal/fmtcmd/fmt.go
src/cmd/go/testdata/script/embed_fmt.txt [new file with mode: 0644]

index b0c1c59b40c58b4818f0317b6683ba10422eec6a..6b98f0ccd31865c937def4ac99b22597ca2b52e3 100644 (file)
@@ -75,7 +75,8 @@ func runFmt(ctx context.Context, cmd *base.Command, args []string) {
                }
                if pkg.Error != nil {
                        var nogo *load.NoGoError
-                       if errors.As(pkg.Error, &nogo) && len(pkg.InternalAllGoFiles()) > 0 {
+                       var embed *load.EmbedError
+                       if (errors.As(pkg.Error, &nogo) || errors.As(pkg.Error, &embed)) && len(pkg.InternalAllGoFiles()) > 0 {
                                // Skip this error, as we will format
                                // all files regardless.
                        } else {
diff --git a/src/cmd/go/testdata/script/embed_fmt.txt b/src/cmd/go/testdata/script/embed_fmt.txt
new file mode 100644 (file)
index 0000000..8a16afe
--- /dev/null
@@ -0,0 +1,22 @@
+# go fmt ignores file not found
+go fmt xnofmt.go
+cmp xnofmt.go xfmt.ref
+! go build xnofmt.go
+stderr 'xnofmt.go:5:12: pattern missing.txt: no matching files found'
+
+-- xnofmt.go --
+package p
+
+import "embed"
+
+//go:embed missing.txt
+var X  embed.FS
+-- xfmt.ref --
+package p
+
+import "embed"
+
+//go:embed missing.txt
+var X embed.FS
+-- go.mod --
+module m