1
0
mirror of https://github.com/golang/go synced 2024-11-20 03:04:40 -07:00

gc: add GOEXPERIMENT=reorg

This won't last long but may ease conversions.

R=ken2
CC=golang-dev
https://golang.org/cl/5375043
This commit is contained in:
Russ Cox 2011-11-09 12:35:45 -05:00
parent 924ea515cf
commit ae7a003cf9
2 changed files with 51 additions and 0 deletions

View File

@ -852,6 +852,7 @@ EXTERN int typecheckok;
EXTERN int compiling_runtime;
EXTERN int rune32;
EXTERN int reorg;
/*
* y.tab.c

View File

@ -18,6 +18,8 @@ int windows;
int yyprev;
int yylast;
Strlit *reorgpath(Strlit*);
static void lexinit(void);
static void lexinit1(void);
static void lexfini(void);
@ -38,6 +40,7 @@ static struct {
int *val;
} exper[] = {
{"rune32", &rune32},
{"reorg", &reorg},
};
static void
@ -538,6 +541,9 @@ importfile(Val *f, int line)
errorexit();
}
if(reorg)
f->u.sval = reorgpath(f->u.sval);
// 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
@ -2115,3 +2121,47 @@ mkpackage(char* pkgname)
outfile = smprint("%s.%c", namebuf, thechar);
}
}
static struct {
char *old;
char *xnew;
} reorgtab[] = {
{"asn1", "encoding/asn1"},
{"big", "math/big"},
{"cmath", "math/cmplx"},
{"csv", "encoding/csv"},
{"exec", "os/exec"},
{"exp/template/html", "html/template"},
{"gob", "encoding/gob"},
{"http", "net/http"},
{"http/cgi", "net/http/cgi"},
{"http/fcgi", "net/http/fcgi"},
{"http/httptest", "net/http/httptest"},
{"http/pprof", "net/http/pprof"},
{"json", "encoding/json"},
{"mail", "net/mail"},
{"rpc", "net/rpc"},
{"rpc/jsonrpc", "net/rpc/jsonrpc"},
{"scanner", "text/scanner"},
{"smtp", "net/smtp"},
{"syslog", "log/syslog"},
{"tabwriter", "text/tabwriter"},
{"template", "text/template"},
{"template/parse", "text/template/parse"},
{"rand", "math/rand"},
{"url", "net/url"},
{"utf16", "unicode/utf16"},
{"utf8", "unicode/utf8"},
{"xml", "encoding/xml"},
};
Strlit*
reorgpath(Strlit *s)
{
int i;
for(i=0; i < nelem(reorgtab); i++)
if(strcmp(s->s, reorgtab[i].old) == 0)
return strlit(reorgtab[i].xnew);
return s;
}