From caf131c26deaf363b2fce95a7fda676729eb2e65 Mon Sep 17 00:00:00 2001 From: Mustafa Quraish Date: Fri, 4 Feb 2022 01:31:55 -0500 Subject: Some minor bug fixes (1) Return correct size for unions (2) Make sure function name identifier doesn't exist (3) Assign `` as display name for nested compound types --- src/parser.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/parser.c') diff --git a/src/parser.c b/src/parser.c index 30d080b..e917564 100644 --- a/src/parser.c +++ b/src/parser.c @@ -873,10 +873,14 @@ Node *parse_func(Lexer *lexer) Token token; token = assert_token(Lexer_next(lexer), TOKEN_FN); + token = assert_token(Lexer_next(lexer), TOKEN_IDENTIFIER); + if (identifier_exists(&token)) + die_location(token.loc, "Function name already exists as an identifier"); + Node *func = Node_new(AST_FUNC); push_new_function(func); - token = assert_token(Lexer_next(lexer), TOKEN_IDENTIFIER); + func->func.name = token.value.as_string; parse_func_args(lexer, func); @@ -922,6 +926,8 @@ Type *parse_struct_union_declaration(Lexer *lexer, bool is_global) { struct_type->struct_name = token.value.as_string; push_struct_definition(struct_type); Lexer_next(lexer); + } else { + struct_type->struct_name = ""; } assert_token(Lexer_next(lexer), TOKEN_OPEN_BRACE); -- cgit v1.2.3