]> Cypherpunks repositories - gostls13.git/commitdiff
embed, io/fs: clarify that leading and trailing slashes are disallowed
authorJay Conrod <jayconrod@google.com>
Fri, 5 Feb 2021 21:45:40 +0000 (16:45 -0500)
committerJay Conrod <jayconrod@google.com>
Fri, 5 Feb 2021 22:35:11 +0000 (22:35 +0000)
Fixes #44012

Change-Id: I5782cea301a65ae12ba870ff1e6b2e0a2651dc09
Reviewed-on: https://go-review.googlesource.com/c/go/+/290071
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Jay Conrod <jayconrod@google.com>

src/embed/embed.go
src/io/fs/fs.go

index f12bf31e767c01c200066211cce9c69daf13f8a6..98da870ac6b00a8a224584fb4c734eb181184c46 100644 (file)
 // The Go build system will recognize the directives and arrange for the declared variable
 // (in the example above, content) to be populated with the matching files from the file system.
 //
-// The //go:embed directive accepts multiple space-separated patterns for brevity,
-// but it can also be repeated, to avoid very long lines when there are many patterns.
-// The patterns are interpreted relative to the package directory containing the source file.
-// The path separator is a forward slash, even on Windows systems.
-// To allow for naming files with spaces in their names, patterns can be written
-// as Go double-quoted or back-quoted string literals.
+// The //go:embed directive accepts multiple space-separated patterns for
+// brevity, but it can also be repeated, to avoid very long lines when there are
+// many patterns. The patterns are interpreted relative to the package directory
+// containing the source file. The path separator is a forward slash, even on
+// Windows systems. Patterns may not contain ‘.’ or ‘..’ or empty path elements,
+// nor may they begin or end with a slash. To match everything in the current
+// directory, use ‘*’ instead of ‘.’. To allow for naming files with spaces in
+// their names, patterns can be written as Go double-quoted or back-quoted
+// string literals.
 //
 // If a pattern names a directory, all files in the subtree rooted at that directory are
 // embedded (recursively), except that files with names beginning with ‘.’ or ‘_’
@@ -87,9 +90,6 @@
 // Matches for empty directories are ignored. After that, each pattern in a //go:embed line
 // must match at least one file or non-empty directory.
 //
-// Patterns must not contain ‘.’ or ‘..’ path elements nor begin with a leading slash.
-// To match everything in the current directory, use ‘*’ instead of ‘.’.
-//
 // If any patterns are invalid or have invalid matches, the build will fail.
 //
 // Strings and Bytes
index b691a860498a2136cf97a56905739555bf4946f5..c330f123ad1fab136ed69a26a768f6863d14eb88 100644 (file)
@@ -36,6 +36,7 @@ type FS interface {
 // sequences of path elements, like “x/y/z”.
 // Path names must not contain a “.” or “..” or empty element,
 // except for the special case that the root directory is named “.”.
+// Leading and trailing slashes (like “/x” or “x/”) are not allowed.
 //
 // Paths are slash-separated on all systems, even Windows.
 // Backslashes must not appear in path names.