ref: 38f794994e2b62efdbaebabf18eb0cee84390a2f
parent: da7a658feb3f1d785fc557747baf9557c7926520
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Aug 7 18:50:53 EDT 2012
Rename type names. Tyname -> Tyunres (unresolved types) Tyalias -> Tyname (named types)
--- a/6/simp.c
+++ b/6/simp.c
@@ -257,7 +257,7 @@
case Tyslice:
return 2*Ptrsz; /* len; ptr */
- case Tyalias:
+ case Tyname:
return tysize(t->sub[0]);
case Tyarray:
assert(exprop(t->asize) == Olit);
@@ -279,7 +279,7 @@
sz = max(sz, tysize(t->udecls[i]->etype) + Ptrsz);
return align(sz, Ptrsz);
break;
- case Tybad: case Tyvar: case Typaram: case Tyname: case Ntypes:
+ case Tybad: case Tyvar: case Typaram: case Tyunres: case Ntypes:
die("Type %s does not have size; why did it get down to here?", tystr(t));
break;
}
@@ -456,7 +456,7 @@
r = NULL;
switch (t->type) {
case Tyvoid: case Tybad: case Tyvalist: case Tyvar:
- case Typaram: case Tyname: case Tyalias: case Ntypes:
+ case Typaram: case Tyunres: case Tyname: case Ntypes:
case Tyint64: case Tyuint64: case Tylong: case Tyulong:
case Tyfloat32: case Tyfloat64:
case Tyslice: case Tyarray: case Tytuple: case Tystruct:
--- a/doc/lang.txt
+++ b/doc/lang.txt
@@ -104,6 +104,8 @@
generic id = {a:@a; -> a}
+Control Structures:
+
Types:
Myrddin comes with a large number of built in types. These are
--- a/parse/gram.y
+++ b/parse/gram.y
@@ -88,6 +88,7 @@
%token<tok> Tchrlit
%token<tok> Tboollit
+%token<tok> Ttrait /* trait */
%token<tok> Tstruct /* struct */
%token<tok> Tunion /* union */
%token<tok> Ttyparam /* @typename */
@@ -105,7 +106,7 @@
%token<tok> Tendln /* ; or \n */
%token<tok> Tendblk /* ;; */
%token<tok> Tcolon /* : */
-%token<tok> Ttrait /* :: */
+%token<tok> Twith /* :: */
%token<tok> Tdot /* . */
%token<tok> Tcomma /* , */
%token<tok> Tret /* -> */
@@ -285,7 +286,7 @@
typaramlist
: /* empty */ {$$ = NULL;}
- | Ttrait name {$$ = $2;}
+ | Twith name {$$ = $2;}
;
compoundtype
--- a/parse/infer.c
+++ b/parse/infer.c
@@ -183,7 +183,7 @@
assert(t != NULL);
lu = NULL;
while (1) {
- if (!tytab[t->tid] && t->type == Tyname) {
+ if (!tytab[t->tid] && t->type == Tyunres) {
if (!(lu = gettype(curstab(), t->name)))
fatal(t->name->line, "Could not fixed type %s", namestr(t->name));
tytab[t->tid] = lu;
--- a/parse/parse.h
+++ b/parse/parse.h
@@ -220,7 +220,7 @@
struct {
size_t did;
char isglobl;
- char isexport;
+ char isexport;
char isconst;
char isgeneric;
char isextern;
--- a/parse/pickle.c
+++ b/parse/pickle.c
@@ -170,7 +170,7 @@
/* cstrs are left out for now: FIXME */
wrint(fd, ty->nsub);
switch (ty->type) {
- case Tyname:
+ case Tyunres:
pickle(ty->name, fd);
break;
case Typaram:
@@ -196,7 +196,7 @@
case Tyvar:
die("Attempting to pickle %s. This will not work.\n", tystr(ty));
break;
- case Tyalias:
+ case Tyname:
pickle(ty->name, fd);
wrtype(fd, ty->sub[0]);
break;
@@ -221,7 +221,7 @@
if (ty->nsub > 0)
ty->sub = xalloc(ty->nsub * sizeof(Type*));
switch (ty->type) {
- case Tyname:
+ case Tyunres:
ty->name = unpickle(fd);
break;
case Typaram:
@@ -246,7 +246,7 @@
case Tyslice:
ty->sub[0] = rdtype(fd);
break;
- case Tyalias:
+ case Tyname:
ty->name = unpickle(fd);
ty->sub[0] = rdtype(fd);
break;
--- a/parse/tok.c
+++ b/parse/tok.c
@@ -148,6 +148,7 @@
{"protect", Tprotect},
{"sizeof", Tsizeof},
{"struct", Tstruct},
+ {"trait", Ttrait},
{"true", Tboollit},
{"type", Ttype},
{"union", Tunion},
--- a/parse/type.c
+++ b/parse/type.c
@@ -53,7 +53,7 @@
r->nmemb = t->nmemb;
r->sub = memdup(t->sub, t->nsub * sizeof(Type*));
switch (t->type) {
- case Tyname: r->name = t->name; break;
+ case Tyunres: r->name = t->name; break;
case Tyarray: r->asize = t->asize; break;
case Typaram: r->pname = strdup(t->pname); break;
case Tystruct: r->sdecls = memdup(t->sdecls, t->nmemb*sizeof(Node*)); break;
@@ -112,7 +112,7 @@
Type *t;
/* resolve it in the type inference stage */
- t = mkty(line, Tyname);
+ t = mkty(line, Tyunres);
t->name = name;
return t;
}
@@ -121,7 +121,7 @@
{
Type *t;
- t = mkty(line, Tyalias);
+ t = mkty(line, Tyname);
t->name = name;
t->nsub = 1;
t->cstrs = bsdup(base->cstrs);
@@ -238,7 +238,7 @@
Type *tybase(Type *t)
{
- while (t->type == Tyalias)
+ while (t->type == Tyname)
t = t->sub[0];
return t;
}
@@ -414,11 +414,11 @@
case Typaram:
p += snprintf(p, end - p, "@%s", t->pname);
break;
- case Tyname:
+ case Tyunres:
p += snprintf(p, end - p, "?"); /* indicate unresolved name. should not be seen by user. */
p += namefmt(p, end - p, t->name);
break;
- case Tyalias:
+ case Tyname:
p += snprintf(p, end - p, "%s", namestr(t->name));
break;
case Tystruct: p += fmtstruct(p, end - p, t); break;
--- a/parse/types.def
+++ b/parse/types.def
@@ -41,6 +41,6 @@
/* these have no memory repr */
Ty(Tyvar, NULL)
Ty(Typaram, NULL)
+Ty(Tyunres, NULL) /* unresolved */
Ty(Tyname, NULL)
-Ty(Tyalias, NULL)
Ty(Ntypes, NULL)
--
⑨