summaryrefslogtreecommitdiff
path: root/cgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'cgen.c')
-rw-r--r--cgen.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/cgen.c b/cgen.c
index 6ba6cad..e98224b 100644
--- a/cgen.c
+++ b/cgen.c
@@ -101,6 +101,7 @@ static bool cgen_uses_ptr(Type *t) {
case TYPE_SLICE:
case TYPE_VOID:
case TYPE_UNKNOWN:
+ case TYPE_TYPE:
return false;
}
assert(0);
@@ -178,7 +179,8 @@ static bool cgen_type_pre(CGenerator *g, Type *t, Location where) {
err_print(where, "Can't determine type.");
return false;
case TYPE_TUPLE:
- /* We should never try to generate a tuple */
+ case TYPE_TYPE:
+ /* We should never try to generate this type */
assert(0);
return false;
}
@@ -251,6 +253,7 @@ static bool cgen_type_post(CGenerator *g, Type *t, Location where) {
case TYPE_VOID:
case TYPE_UNKNOWN:
case TYPE_TUPLE:
+ case TYPE_TYPE:
case TYPE_SLICE:
break;
}
@@ -403,6 +406,7 @@ static bool cgen_set(CGenerator *g, Expression *set_expr, const char *set_str, E
return false;
break;
case TYPE_VOID:
+ case TYPE_TYPE:
assert(0);
return false;
}
@@ -501,6 +505,7 @@ static bool cgen_set_tuple(CGenerator *g, Expression *exprs, Identifier *idents,
case EXPR_CAST:
case EXPR_NEW:
case EXPR_DIRECT:
+ case EXPR_TYPE:
assert(0);
return false;
}
@@ -710,6 +715,7 @@ static bool cgen_expr_pre(CGenerator *g, Expression *e) {
case EXPR_IDENT:
case EXPR_FN:
case EXPR_DIRECT:
+ case EXPR_TYPE:
break;
case EXPR_TUPLE:
arr_foreach(e->tuple, Expression, x)
@@ -922,6 +928,7 @@ static bool cgen_expr(CGenerator *g, Expression *e) {
/* the only time this should happen is if you're stating
a tuple, e.g. 3, 5;, but we've errored about that before
(the comma operator does not exist in toc!) */
+ case EXPR_TYPE:
assert(0);
break;
case EXPR_FN: {
@@ -988,6 +995,7 @@ static void cgen_zero_value(CGenerator *g, Type *t) {
cgen_zero_value(g, t->arr.of);
cgen_write(g, "}");
break;
+ case TYPE_TYPE:
case TYPE_VOID:
case TYPE_UNKNOWN:
case TYPE_TUPLE:
@@ -1061,6 +1069,7 @@ static bool cgen_val_ptr_pre(CGenerator *g, void *v, Type *t, Location where) {
}
break;
case TYPE_FN:
+ case TYPE_TYPE:
case TYPE_UNKNOWN:
case TYPE_TUPLE:
case TYPE_VOID:
@@ -1075,6 +1084,7 @@ static bool cgen_val_ptr(CGenerator *g, void *v, Type *t, Location where) {
switch (t->kind) {
case TYPE_TUPLE:
case TYPE_VOID:
+ case TYPE_TYPE:
assert(0);
return false;
case TYPE_UNKNOWN:
@@ -1260,15 +1270,6 @@ static bool cgen_stmt(CGenerator *g, Statement *s) {
cgen_write(g, ";");
cgen_nl(g);
break;
- case STMT_TDECL:
- cgen_write(g, "typedef ");
- if (!cgen_type_pre(g, &s->tdecl.type, s->where)) return false;
- cgen_write(g, " ");
- cgen_ident(g, s->tdecl.name);
- if (!cgen_type_post(g, &s->tdecl.type, s->where)) return false;
- cgen_write(g, ";");
- cgen_nl(g);
- break;
case STMT_RET:
if (!cgen_ret(g, s->ret.flags & RET_FLAG_EXPR ? &s->ret.expr : NULL))
return false;