Commit c1a695c1 authored by Russ Cox's avatar Russ Cox

gc, ld: package name main no longer reserved

R=ken2
CC=golang-dev
https://golang.org/cl/4128054
parent eff19528
...@@ -242,14 +242,6 @@ import_package: ...@@ -242,14 +242,6 @@ import_package:
if(safemode && !curio.importsafe) if(safemode && !curio.importsafe)
yyerror("cannot import unsafe package %Z", importpkg->path); yyerror("cannot import unsafe package %Z", importpkg->path);
// NOTE(rsc): This is no longer a technical restriction:
// the 6g tool chain would work just fine without giving
// special meaning to a package being named main.
// Other implementations might need the restriction
// (gccgo does), so it stays in the language and the compiler.
if(strcmp($2->name, "main") == 0)
yyerror("cannot import package main");
} }
import_safety: import_safety:
......
...@@ -423,6 +423,15 @@ importfile(Val *f, int line) ...@@ -423,6 +423,15 @@ importfile(Val *f, int line)
errorexit(); errorexit();
} }
// The package name main is no longer reserved,
// but we reserve the import path "main" to identify
// the main package, just as we reserve the import
// path "math" to identify the standard math package.
if(strcmp(f->u.sval->s, "main") == 0) {
yyerror("cannot import \"main\"");
errorexit();
}
if(strcmp(f->u.sval->s, "unsafe") == 0) { if(strcmp(f->u.sval->s, "unsafe") == 0) {
if(safemode) { if(safemode) {
yyerror("cannot import package unsafe"); yyerror("cannot import package unsafe");
......
...@@ -148,8 +148,6 @@ ldpkg(Biobuf *f, char *pkg, int64 len, char *filename, int whence) ...@@ -148,8 +148,6 @@ ldpkg(Biobuf *f, char *pkg, int64 len, char *filename, int whence)
} }
if(strcmp(pkg, "main") == 0 && strcmp(name, "main") != 0) if(strcmp(pkg, "main") == 0 && strcmp(name, "main") != 0)
fprint(2, "%s: %s: not package main (package %s)\n", argv0, filename, name); fprint(2, "%s: %s: not package main (package %s)\n", argv0, filename, name);
else if(strcmp(pkg, "main") != 0 && strcmp(name, "main") == 0)
fprint(2, "%s: %s: importing %s, found package main", argv0, filename, pkg);
loadpkgdata(filename, pkg, p0, p1 - p0); loadpkgdata(filename, pkg, p0, p1 - p0);
} }
......
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