summaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/parse.c b/parse.c
index 8b7f7fd..b9671ae 100644
--- a/parse.c
+++ b/parse.c
@@ -463,7 +463,6 @@ static bool parse_type(Parser *p, Type *type, U16 flags) {
case TOKEN_IDENT:
if (!(flags & PARSE_TYPE_EXPR)) {
/* user-defined type */
- puts("user-defined type");
type->kind = TYPE_USER;
type->user.name = t->token->ident;
t->token++;
@@ -1454,7 +1453,7 @@ static bool parse_stmt(Parser *p, Statement *s) {
t->token++;
return true;
}
- s->ret.flags |= RET_FLAG_EXPR;
+ s->ret.flags |= RET_HAS_EXPR;
Token *end = expr_find_end(p, 0, NULL);
if (!end) {
while (t->token->kind != TOKEN_EOF) t->token++; /* move to end of file */
@@ -1735,7 +1734,7 @@ static void fprint_stmt(FILE *out, Statement *s) {
break;
case STMT_RET:
fprintf(out, "return ");
- if (s->ret.flags & RET_FLAG_EXPR)
+ if (s->ret.flags & RET_HAS_EXPR)
fprint_expr(out, &s->ret.expr);
fprintf(out, ";\n");
break;
@@ -1747,3 +1746,13 @@ static void fprint_parsed_file(FILE *out, ParsedFile *f) {
fprint_stmt(out, stmt);
}
}
+
+static long decl_ident_index(Declaration *d, Identifier i) {
+ long idx = 0;
+ arr_foreach(d->idents, Identifier, j) {
+ if (i == *j)
+ return idx;
+ idx++;
+ }
+ return -1;
+}