gc: add GOEXPERIMENT=os.Error
This won't last long, I promise.
R=ken2
CC=golang-dev
https://golang.org/cl/5330066
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 7d6ac08..cff01a1 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -852,6 +852,7 @@
EXTERN int compiling_runtime;
EXTERN int rune32;
+EXTERN int oserror;
/*
* y.tab.c
diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c
index 86492a5..1dc00d7 100644
--- a/src/cmd/gc/lex.c
+++ b/src/cmd/gc/lex.c
@@ -38,6 +38,7 @@
int *val;
} exper[] = {
{"rune32", &rune32},
+ {"os.Error", &oserror},
};
static void
diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c
index dc1d314..1d5c1aa 100644
--- a/src/cmd/gc/subr.c
+++ b/src/cmd/gc/subr.c
@@ -2967,6 +2967,17 @@
p->prefix = pathtoprefix(path->s);
p->link = phash[h];
phash[h] = p;
+
+ // If the compiler was built with
+ // GOEXPERIMENT=os.Error
+ // define os.Error as an alias for error.
+ // Terrible and won't last long, but useful for transitions.
+ if(oserror && strcmp(path->s, "os") == 0) {
+ Sym *s;
+ s = pkglookup("Error", p);
+ s->def = typenod(errortype);
+ }
+
return p;
}