aboutsummaryrefslogtreecommitdiff
path: root/src/checker/stmt.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-11-22 21:29:57 +0000
committerGinger Bill <bill@gingerbill.org>2016-11-22 21:29:57 +0000
commitcb7b9a413d66b1dce30a4d810f17ed8453c0a738 (patch)
treedcad81e0edbf4a2619f394c706e0825b162553c7 /src/checker/stmt.cpp
parent3517f96668636f80cac0ee726bb52976027e47d9 (diff)
Remove Array<T> and replace with macro version
Diffstat (limited to 'src/checker/stmt.cpp')
-rw-r--r--src/checker/stmt.cpp66
1 files changed, 33 insertions, 33 deletions
diff --git a/src/checker/stmt.cpp b/src/checker/stmt.cpp
index b5db09efc..ad7778f9f 100644
--- a/src/checker/stmt.cpp
+++ b/src/checker/stmt.cpp
@@ -23,16 +23,16 @@ void check_stmt_list(Checker *c, AstNodeArray stmts, u32 flags) {
Entity *e;
DeclInfo *d;
} Delay;
- Array<Delay> delayed_const; array_init(&delayed_const, c->tmp_allocator, stmts.count);
- Array<Delay> delayed_type; array_init(&delayed_type, c->tmp_allocator, stmts.count);
+ Array(Delay) delayed_const; array_init_reserve(&delayed_const, c->tmp_allocator, stmts.count);
+ Array(Delay) delayed_type; array_init_reserve(&delayed_type, c->tmp_allocator, stmts.count);
for_array(i, stmts) {
- AstNode *node = stmts[i];
+ AstNode *node = stmts.e[i];
switch (node->kind) {
case_ast_node(cd, ConstDecl, node);
for_array(i, cd->values) {
- AstNode *name = cd->names[i];
- AstNode *value = cd->values[i];
+ AstNode *name = cd->names.e[i];
+ AstNode *value = cd->values.e[i];
ExactValue v = {ExactValue_Invalid};
Entity *e = make_entity_constant(c->allocator, c->context.scope, name->Ident, NULL, v);
@@ -74,17 +74,17 @@ void check_stmt_list(Checker *c, AstNodeArray stmts, u32 flags) {
}
for_array(i, delayed_type) {
- check_entity_decl(c, delayed_type[i].e, delayed_type[i].d, NULL);
+ check_entity_decl(c, delayed_type.e[i].e, delayed_type.e[i].d, NULL);
}
for_array(i, delayed_const) {
- check_entity_decl(c, delayed_const[i].e, delayed_const[i].d, NULL);
+ check_entity_decl(c, delayed_const.e[i].e, delayed_const.e[i].d, NULL);
}
b32 ft_ok = (flags & Stmt_FallthroughAllowed) != 0;
u32 f = flags & (~Stmt_FallthroughAllowed);
for_array(i, stmts) {
- AstNode *n = stmts[i];
+ AstNode *n = stmts.e[i];
if (n->kind == AstNode_EmptyStmt) {
continue;
}
@@ -102,7 +102,7 @@ b32 check_is_terminating_list(AstNodeArray stmts) {
// Iterate backwards
for (isize n = stmts.count-1; n >= 0; n--) {
- AstNode *stmt = stmts[n];
+ AstNode *stmt = stmts.e[n];
if (stmt->kind != AstNode_EmptyStmt) {
return check_is_terminating(stmt);
}
@@ -113,7 +113,7 @@ b32 check_is_terminating_list(AstNodeArray stmts) {
b32 check_has_break_list(AstNodeArray stmts, b32 implicit) {
for_array(i, stmts) {
- AstNode *stmt = stmts[i];
+ AstNode *stmt = stmts.e[i];
if (check_has_break(stmt, implicit)) {
return true;
}
@@ -187,7 +187,7 @@ b32 check_is_terminating(AstNode *node) {
case_ast_node(ms, MatchStmt, node);
b32 has_default = false;
for_array(i, ms->body->BlockStmt.stmts) {
- AstNode *clause = ms->body->BlockStmt.stmts[i];
+ AstNode *clause = ms->body->BlockStmt.stmts.e[i];
ast_node(cc, CaseClause, clause);
if (cc->list.count == 0) {
has_default = true;
@@ -203,7 +203,7 @@ b32 check_is_terminating(AstNode *node) {
case_ast_node(ms, TypeMatchStmt, node);
b32 has_default = false;
for_array(i, ms->body->BlockStmt.stmts) {
- AstNode *clause = ms->body->BlockStmt.stmts[i];
+ AstNode *clause = ms->body->BlockStmt.stmts.e[i];
ast_node(cc, CaseClause, clause);
if (cc->list.count == 0) {
has_default = true;
@@ -433,11 +433,11 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
// NOTE(bill): If there is a bad syntax error, rhs > lhs which would mean there would need to be
// an extra allocation
- Array<Operand> operands;
- array_init(&operands, c->tmp_allocator, 2 * as->lhs.count);
+ Array(Operand) operands;
+ array_init_reserve(&operands, c->tmp_allocator, 2 * as->lhs.count);
for_array(i, as->rhs) {
- AstNode *rhs = as->rhs[i];
+ AstNode *rhs = as->rhs.e[i];
Operand o = {};
check_multi_expr(c, &o, rhs);
if (o.type->kind != Type_Tuple) {
@@ -456,11 +456,11 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
isize operand_count = gb_min(as->lhs.count, operands.count);
for (isize i = 0; i < operand_count; i++) {
- AstNode *lhs = as->lhs[i];
- check_assignment_variable(c, &operands[i], lhs);
+ AstNode *lhs = as->lhs.e[i];
+ check_assignment_variable(c, &operands.e[i], lhs);
}
if (lhs_count != rhs_count) {
- error(ast_node_token(as->lhs[0]), "Assignment count mismatch `%td` = `%td`", lhs_count, rhs_count);
+ error(ast_node_token(as->lhs.e[0]), "Assignment count mismatch `%td` = `%td`", lhs_count, rhs_count);
}
gb_temp_arena_memory_end(tmp);
@@ -484,15 +484,15 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
be->op = op;
be->op.kind = cast(TokenKind)(cast(i32)be->op.kind - (Token_AddEq - Token_Add));
// NOTE(bill): Only use the first one will be used
- be->left = as->lhs[0];
- be->right = as->rhs[0];
+ be->left = as->lhs.e[0];
+ be->right = as->rhs.e[0];
check_binary_expr(c, &operand, &binary_expr);
if (operand.mode == Addressing_Invalid) {
return;
}
// NOTE(bill): Only use the first one will be used
- check_assignment_variable(c, &operand, as->lhs[0]);
+ check_assignment_variable(c, &operand, as->lhs.e[0]);
} break;
}
case_end;
@@ -550,7 +550,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
}
- Type *proc_type = c->proc_stack[c->proc_stack.count-1];
+ Type *proc_type = c->proc_stack.e[c->proc_stack.count-1];
isize result_count = 0;
if (proc_type->Proc.results) {
result_count = proc_type->Proc.results->Tuple.variable_count;
@@ -569,7 +569,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
rs->results, str_lit("return statement"));
}
} else if (rs->results.count > 0) {
- error(ast_node_token(rs->results[0]), "No return values expected");
+ error(ast_node_token(rs->results.e[0]), "No return values expected");
}
case_end;
@@ -628,7 +628,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
AstNode *first_default = NULL;
ast_node(bs, BlockStmt, ms->body);
for_array(i, bs->stmts) {
- AstNode *stmt = bs->stmts[i];
+ AstNode *stmt = bs->stmts.e[i];
AstNode *default_stmt = NULL;
if (stmt->kind == AstNode_CaseClause) {
ast_node(cc, CaseClause, stmt);
@@ -661,7 +661,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
map_init(&seen, heap_allocator());
for_array(i, bs->stmts) {
- AstNode *stmt = bs->stmts[i];
+ AstNode *stmt = bs->stmts.e[i];
if (stmt->kind != AstNode_CaseClause) {
// NOTE(bill): error handled by above multiple default checker
continue;
@@ -670,7 +670,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
for_array(j, cc->list) {
- AstNode *expr = cc->list[j];
+ AstNode *expr = cc->list.e[j];
Operand y = {};
Operand z = {};
Token eq = {Token_CmpEq};
@@ -772,7 +772,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
AstNode *first_default = NULL;
ast_node(bs, BlockStmt, ms->body);
for_array(i, bs->stmts) {
- AstNode *stmt = bs->stmts[i];
+ AstNode *stmt = bs->stmts.e[i];
AstNode *default_stmt = NULL;
if (stmt->kind == AstNode_CaseClause) {
ast_node(cc, CaseClause, stmt);
@@ -804,7 +804,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
map_init(&seen, heap_allocator());
for_array(i, bs->stmts) {
- AstNode *stmt = bs->stmts[i];
+ AstNode *stmt = bs->stmts.e[i];
if (stmt->kind != AstNode_CaseClause) {
// NOTE(bill): error handled by above multiple default checker
continue;
@@ -815,7 +815,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
Type *bt = base_type(type_deref(x.type));
- AstNode *type_expr = cc->list.count > 0 ? cc->list[0] : NULL;
+ AstNode *type_expr = cc->list.count > 0 ? cc->list.e[0] : NULL;
Type *case_type = NULL;
if (type_expr != NULL) { // Otherwise it's a default expression
Operand y = {};
@@ -988,7 +988,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
case Entity_ImportName: {
Scope *scope = e->ImportName.scope;
for_array(i, scope->elements.entries) {
- Entity *decl = scope->elements.entries[i].value;
+ Entity *decl = scope->elements.entries.e[i].value;
Entity *found = scope_insert_entity(c->context.scope, decl);
if (found != NULL) {
gbString expr_str = expr_to_string(expr);
@@ -1012,7 +1012,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
Scope **found = map_get(&c->info.scopes, hash_pointer(t->Record.node));
GB_ASSERT(found != NULL);
for_array(i, (*found)->elements.entries) {
- Entity *f = (*found)->elements.entries[i].value;
+ Entity *f = (*found)->elements.entries.e[i].value;
if (f->kind == Entity_Variable) {
Entity *uvar = make_entity_using_variable(c->allocator, e, f->token, f->type);
if (is_selector) {
@@ -1068,7 +1068,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
check_var_decl_node(c, us->node);
for_array(name_index, vd->names) {
- AstNode *item = vd->names[name_index];
+ AstNode *item = vd->names.e[name_index];
ast_node(i, Ident, item);
String name = i->string;
Entity *e = scope_lookup_entity(c->context.scope, name);
@@ -1077,7 +1077,7 @@ void check_stmt_internal(Checker *c, AstNode *node, u32 flags) {
Scope **found = map_get(&c->info.scopes, hash_pointer(t->Record.node));
GB_ASSERT(found != NULL);
for_array(i, (*found)->elements.entries) {
- Entity *f = (*found)->elements.entries[i].value;
+ Entity *f = (*found)->elements.entries.e[i].value;
if (f->kind == Entity_Variable) {
Entity *uvar = make_entity_using_variable(c->allocator, e, f->token, f->type);
Entity *prev = scope_insert_entity(c->context.scope, uvar);