diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2024-08-11 20:59:54 +0200 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2024-08-11 20:59:54 +0200 |
| commit | f0840ed24e89e6eb4ca6f87b6d8a3ca1f71a1239 (patch) | |
| tree | 875fcc98a3e6307d282478f15e0b4e07c64a30d8 /core | |
| parent | 26fa3aca44a01f83447adb45f0f1e31fcc3d2ae6 (diff) | |
core/odin: support field tags on bit_field fields
Fixes #4044
Diffstat (limited to 'core')
| -rw-r--r-- | core/odin/ast/ast.odin | 1 | ||||
| -rw-r--r-- | core/odin/parser/parser.odin | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/core/odin/ast/ast.odin b/core/odin/ast/ast.odin index 31e8fdd53..075a669de 100644 --- a/core/odin/ast/ast.odin +++ b/core/odin/ast/ast.odin @@ -861,6 +861,7 @@ Bit_Field_Field :: struct { name: ^Expr, type: ^Expr, bit_size: ^Expr, + tag: tokenizer.Token, comments: ^Comment_Group, } diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index 7c0fe2e98..991b05398 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -2832,11 +2832,17 @@ parse_operand :: proc(p: ^Parser, lhs: bool) -> ^ast.Expr { expect_token(p, .Or) bit_size := parse_expr(p, true) + tag: tokenizer.Token + if p.curr_tok.kind == .String { + tag = expect_token(p, .String) + } + field := ast.new(ast.Bit_Field_Field, name.pos, bit_size) field.name = name field.type = type field.bit_size = bit_size + field.tag = tag append(&fields, field) |