diff options
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/parser.c b/src/parser.c index 68d0648..b61a968 100644 --- a/src/parser.c +++ b/src/parser.c @@ -33,10 +33,9 @@ int parser_thread_data_init(ParserThreadData *self) { return scoped_allocator_init(&self->allocator); } -int parser_thread_data_deinit(ParserThreadData *self) { +void parser_thread_data_deinit(ParserThreadData *self) { ignore_result_int(amal_thread_deinit(&self->thread)); scoped_allocator_deinit(&self->allocator); - return 0; } int parser_thread_data_start(ParserThreadData *self, AmalThreadCallbackFunc callback_func, void *userdata) { @@ -62,10 +61,11 @@ int parser_init(Parser *self, amal_compiler *compiler, ScopedAllocator *allocato self->error_context = ERROR_CONTEXT_NONE; return_if_error(structdecl_init(&self->struct_decl, &compiler->root_scope, allocator)); self->struct_decl.body.parser = self; - return_if_error(lhsexpr_init(&self->file_decl, bool_true, bool_true, bool_true, create_buffer_view_null(), self->allocator)); + lhsexpr_init(&self->file_decl, bool_true, bool_true, bool_true, create_buffer_view_null()); return_if_error(ast_create(self->allocator, &self->struct_decl, AST_STRUCT_DECL, &self->file_decl.rhs_expr)); self->current_scope = &self->struct_decl.body; self->has_func_parent = bool_false; + am_memset(&self->bytecode, 0, sizeof(self->bytecode)); return PARSER_OK; } @@ -202,7 +202,7 @@ static CHECK_RESULT LhsExpr* parser_parse_declaration_lhs(Parser *self) { if(is_extern && self->has_func_parent) { self->error = tokenizer_create_error(&self->tokenizer, tokenizer_get_code_reference_index(&self->tokenizer, self->tokenizer.value.identifier.data), - "Only declarations in structs can be extern"); + "Only declarations in global structs can be extern"); throw(PARSER_UNEXPECTED_TOKEN); } @@ -210,7 +210,7 @@ static CHECK_RESULT LhsExpr* parser_parse_declaration_lhs(Parser *self) { if(is_pub && self->has_func_parent) { self->error = tokenizer_create_error(&self->tokenizer, tokenizer_get_code_reference_index(&self->tokenizer, self->tokenizer.value.identifier.data), - "Only declarations in structs can be public"); + "Only declarations in global structs can be public"); throw(PARSER_UNEXPECTED_TOKEN); } @@ -233,7 +233,7 @@ static CHECK_RESULT LhsExpr* parser_parse_declaration_lhs(Parser *self) { throw_if_error(tokenizer_accept(&self->tokenizer, TOK_IDENTIFIER)); var_name = self->tokenizer.value.identifier; throw_if_error(scoped_allocator_alloc(self->allocator, sizeof(LhsExpr), (void**)&result)); - throw_if_error(lhsexpr_init(result, is_extern, is_pub, is_const, var_name, self->allocator)); + lhsexpr_init(result, is_extern, is_pub, is_const, var_name); ignore_result_int(parser_parse_var_type_def(self, &result->type)); return result; |