Commit 6c2458e7 authored by Robert Griesemer's avatar Robert Griesemer

cmd/compile: permit Unicode spaces in (expanded) package paths

This doesn't change the existing restriction with disallows
spaces in import paths (as found in an import declaration).
It simply permits packages to be under a directory name that
may contain spaces.

Verified manually that it works. This could use a test, but the
change is trivial. We also can't use the existing test framework
(under test/) because the way those tests are run with test/run.go,
the mechanims for compiling a directory, even if it contains blanks
it its name, does't produce compiler paths with blanks
(the compilation is local).

Fixes #20306.

Change-Id: I6cbffb86c3394347897c3c94b110da0aadc5bfdf
Reviewed-on: https://go-review.googlesource.com/46001Reviewed-by: default avatarRuss Cox <rsc@golang.org>
Reviewed-by: default avatarRob Pike <r@golang.org>
parent a07ee270
...@@ -285,7 +285,7 @@ func (p *importer) pkg() *types.Pkg { ...@@ -285,7 +285,7 @@ func (p *importer) pkg() *types.Pkg {
} }
// we should never see a bad import path // we should never see a bad import path
if isbadimport(path) { if isbadimport(path, true) {
p.formatErrorf("bad package path %q for package %s", path, name) p.formatErrorf("bad package path %q for package %s", path, name)
} }
......
...@@ -891,7 +891,7 @@ func importfile(f *Val) *types.Pkg { ...@@ -891,7 +891,7 @@ func importfile(f *Val) *types.Pkg {
return nil return nil
} }
if isbadimport(path_) { if isbadimport(path_, false) {
return nil return nil
} }
...@@ -935,7 +935,7 @@ func importfile(f *Val) *types.Pkg { ...@@ -935,7 +935,7 @@ func importfile(f *Val) *types.Pkg {
} }
path_ = path.Join(prefix, path_) path_ = path.Join(prefix, path_)
if isbadimport(path_) { if isbadimport(path_, true) {
return nil return nil
} }
} }
......
...@@ -1969,7 +1969,7 @@ var reservedimports = []string{ ...@@ -1969,7 +1969,7 @@ var reservedimports = []string{
"type", "type",
} }
func isbadimport(path string) bool { func isbadimport(path string, allowSpace bool) bool {
if strings.Contains(path, "\x00") { if strings.Contains(path, "\x00") {
yyerror("import path contains NUL") yyerror("import path contains NUL")
return true return true
...@@ -1998,7 +1998,7 @@ func isbadimport(path string) bool { ...@@ -1998,7 +1998,7 @@ func isbadimport(path string) bool {
return true return true
} }
if unicode.IsSpace(r) { if !allowSpace && unicode.IsSpace(r) {
yyerror("import path contains space character: %q", path) yyerror("import path contains space character: %q", path)
return true return true
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment