From: Russ Cox Date: Wed, 9 Nov 2011 17:35:45 +0000 (-0500) Subject: gc: add GOEXPERIMENT=reorg X-Git-Tag: weekly.2011-11-18~143 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ae7a003cf9be6822419d108d6ca1cefa86bef488;p=gostls13.git gc: add GOEXPERIMENT=reorg This won't last long but may ease conversions. R=ken2 CC=golang-dev https://golang.org/cl/5375043 --- diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h index faae7bd9ea..266cc8597d 100644 --- a/src/cmd/gc/go.h +++ b/src/cmd/gc/go.h @@ -852,6 +852,7 @@ EXTERN int typecheckok; EXTERN int compiling_runtime; EXTERN int rune32; +EXTERN int reorg; /* * y.tab.c diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c index b1eab441c3..a07232d1bd 100644 --- a/src/cmd/gc/lex.c +++ b/src/cmd/gc/lex.c @@ -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 @@ -537,6 +540,9 @@ importfile(Val *f, int line) yyerror("import path contains NUL"); 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 @@ -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; +}