Added inferred types and missing length function.

This commit is contained in:
2025-01-10 22:44:15 +01:00
parent 8bd766281e
commit ec31046d30
16 changed files with 218 additions and 13 deletions

View File

@@ -264,7 +264,7 @@ error_node :: (parse_state : *Parse_State, message : string) -> *AST_Node {
advance_to_sync_point :: (parse_state : *Parse_State) {
while true {
if parse_state.current.kind == .TOKEN_SEMICOLON || parse_state.current.kind == .TOKEN_RIGHTBRACE ||
parse_state.current.kind == .TOKEN_LEFTBRACE{
parse_state.current.kind == .TOKEN_LEFTBRACE {
break;
}
advance(parse_state);
@@ -644,8 +644,12 @@ field_declaration :: (parse_state : *Parse_State, identifier_token : *Token) ->
advance(parse_state);
node.array_field = true;
} else {
missing_type_specifier(parse_state, identifier_token, "Expected type specifier after field name.");
return node;
if !check(parse_state, .TOKEN_ASSIGN) {
internal_error_message(*parse_state.result.messages, "Unimplemented error message.", parse_state.path);
return node;
}
// missing_type_specifier(parse_state, identifier_token, "Expected type specifier after field name.");
}
if check(parse_state, .TOKEN_AT) {
@@ -1088,6 +1092,8 @@ parse :: (result : *Compile_Result) {
file.ast_root = parse_state.result.root;
file.ast_nodes = parse_state.result.nodes;
copy_messages(parse_state.result.messages, *result.messages);
result.had_error |= parse_state.result.had_error;
}
}