ifnode->scope = scope_create(semstate.node_allocator, semstate.curr_scope, ifnode->token->pos);
scope_enter(ifnode->scope);
- symbol_introduce(semstate.curr_scope, ifnode->local->token, (AstNode *) ifnode->local);
+ symres_local(&ifnode->local);
symres_statement((AstNode **) &ifnode->assignment);
}
whilenode->scope = scope_create(semstate.node_allocator, semstate.curr_scope, whilenode->token->pos);
scope_enter(whilenode->scope);
- symbol_introduce(semstate.curr_scope, whilenode->local->token, (AstNode *) whilenode->local);
+ symres_local(&whilenode->local);
symres_statement((AstNode **) &whilenode->assignment);
}
symres_expression(&fornode->iter);
- symbol_introduce(semstate.curr_scope, fornode->var->token, (AstNode *) fornode->var);
+ symres_local(&fornode->var);
symres_block(fornode->stmt);
if (!type_is_structlike(var->type)) {
emit_store_instruction(mod, &code, var->type, offset);
} else {
+ offset = 0;
emit_local_location(mod, &code, var, &offset);
emit_store_instruction(mod, &code, var->type, offset);
}
.next_global_idx = 0,
.data = NULL,
- .next_datum_offset = 0,
+ .next_datum_offset = 32, // Starting offset so null pointers don't immediately
+ // break constant data. - brendanfh 2020/12/16
.elems = NULL,
.next_elem_idx = 0,