translate-c file emission

This commit is contained in:
2026-06-24 22:53:20 +02:00
parent f6fc25a899
commit 4cb0ad7f25
7 changed files with 512 additions and 4 deletions
+17
View File
@@ -1505,6 +1505,19 @@ parse_distinct :: proc(parser: ^Parser, name: token.Token) {
_ = finish_statement(parser)
}
parse_alias :: proc(parser: ^Parser, name: token.Token) {
start := advance(parser)
child := parse_type(parser)
id := types.named(&parser.module.type_store, u32(parser.pkg), u32(name.symbol))
if !types.define_alias(&parser.module.type_store, id, child) {
source.addf(parser.diagnostics, name.span, "duplicate type declaration '%s'", token_text(parser, name))
}
if !types.is_valid(child) {
source.add(parser.diagnostics, start.span, "alias declarations require a backing type")
}
_ = finish_statement(parser)
}
parse_enum :: proc(parser: ^Parser, name: token.Token) {
start := advance(parser)
explicit_backing := false
@@ -1736,6 +1749,10 @@ parse_top_level :: proc(parser: ^Parser) {
parse_distinct(parser, name)
return
}
if operator.kind == .Colon_Colon && current(parser).kind == .Keyword_Alias {
parse_alias(parser, name)
return
}
expr := parse_expression(parser)
_ = ast.global_id(len(parser.module.globals))