module: accept leading dash in a file path

For golang/go#45447

Change-Id: I38b13bc912851aa9b6cdeb851330a5ed97b743ac
Reviewed-on: https://go-review.googlesource.com/c/mod/+/316629
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
diff --git a/module/module.go b/module/module.go
index cf69ff6..ba97ac3 100644
--- a/module/module.go
+++ b/module/module.go
@@ -393,7 +393,7 @@
 	if path == "" {
 		return fmt.Errorf("empty string")
 	}
-	if path[0] == '-' {
+	if path[0] == '-' && kind != filePath {
 		return fmt.Errorf("leading dash")
 	}
 	if strings.Contains(path, "//") {
diff --git a/module/module_test.go b/module/module_test.go
index 5e8193d..2cfb7aa 100644
--- a/module/module_test.go
+++ b/module/module_test.go
@@ -79,7 +79,7 @@
 	{"/x.y/z", false, false, false},
 	{"x./z", false, false, false},
 	{".x/z", false, true, true},
-	{"-x/z", false, false, false},
+	{"-x/z", false, false, true},
 	{"x..y/z", true, true, true},
 	{"x.y/z/../../w", false, false, false},
 	{"x.y//z", false, false, false},