From e3c68260369b0c47c16d95033084dcb3d88c4437 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 26 Feb 2022 18:49:41 -0600 Subject: [PATCH] changed syntax for tagging structures --- core/container/map.onyx | 6 ++--- misc/vscode/onyx-0.0.2.vsix | Bin 249892 -> 250131 bytes misc/vscode/syntaxes/onyx.tmLanguage | 26 +++++++++++++++++++++ misc/vscode/textmate-configuration.json | 5 +++- src/parser.c | 29 ++++++++---------------- tests/interfaces.onyx | 3 ++- 6 files changed, 45 insertions(+), 24 deletions(-) diff --git a/core/container/map.onyx b/core/container/map.onyx index 2571b41d..51219c3a 100644 --- a/core/container/map.onyx +++ b/core/container/map.onyx @@ -21,9 +21,9 @@ package core.map } } -Map :: struct (Key_Type: type_expr, Value_Type: type_expr) where ValidKey(Key_Type) - [conv.Custom_Format.{ #solidify format_map {K=Key_Type, V=Value_Type} }] -{ +Map :: struct (Key_Type: type_expr, Value_Type: type_expr) where ValidKey(Key_Type) { + #struct_tag conv.Custom_Format.{ #solidify format_map {K=Key_Type, V=Value_Type} }; + allocator : Allocator; hashes : [] i32; diff --git a/misc/vscode/onyx-0.0.2.vsix b/misc/vscode/onyx-0.0.2.vsix index 1802361b50f482a9e9d2987443d1e88bfd75c670..797688cc5c0960ad42d6ce76b92ff8b732df97ec 100644 GIT binary patch delta 8236 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 delta 8190 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 patterns + + match + ({) + captures + + 1 + + name + punctuation.block.begin.onyx + + + + + + match + (}) + captures + + 1 + + name + punctuation.block.end.onyx + + + + match \b(sizeof|alignof|typeof)\b\s*\( diff --git a/misc/vscode/textmate-configuration.json b/misc/vscode/textmate-configuration.json index 00d5e6cb..d61a8ec9 100644 --- a/misc/vscode/textmate-configuration.json +++ b/misc/vscode/textmate-configuration.json @@ -23,7 +23,10 @@ "entity.name.function.onyx", "entity.name.type.onyx" ], - "indentation": {}, + "indentation": { + "punctuation.block.begin.onyx": 1, + "punctuation.block.end.onyx": -1 + }, "dedentation": [], "punctuation": { "continuation": "" diff --git a/src/parser.c b/src/parser.c index fe4cff22..5e96e892 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1948,26 +1948,7 @@ static AstStructType* parse_struct(OnyxParser* parser) { } } - // Parse tags bh_arr(AstTyped *) struct_meta_tags=NULL; - if (parser->curr->type == '[') { - expect_token(parser, '['); - if (struct_meta_tags == NULL) bh_arr_new(global_heap_allocator, struct_meta_tags, 1); - - while (parser->curr->type != ']') { - if (parser->hit_unexpected_token) return s_node; - - AstTyped* expr = parse_expression(parser, 0); - bh_arr_push(struct_meta_tags, expr); - - if (parser->curr->type != ']') - expect_token(parser, ','); - } - - expect_token(parser, ']'); - } - - s_node->meta_tags = struct_meta_tags; expect_token(parser, '{'); @@ -1978,6 +1959,15 @@ static AstStructType* parse_struct(OnyxParser* parser) { while (!consume_token_if_next(parser, '}')) { if (parser->hit_unexpected_token) return s_node; + if (parse_possible_directive(parser, "struct_tag")) { + if (struct_meta_tags == NULL) bh_arr_new(global_heap_allocator, struct_meta_tags, 1); + AstTyped* expr = parse_expression(parser, 0); + bh_arr_push(struct_meta_tags, expr); + + consume_token_if_next(parser, ';'); + continue; + } + if (next_tokens_are(parser, 3, Token_Type_Symbol, ':', ':')) { if (!s_node->scope) { s_node->scope = scope_create(context.ast_alloc, parser->current_scope, s_node->token->pos); @@ -2063,6 +2053,7 @@ static AstStructType* parse_struct(OnyxParser* parser) { expect_token(parser, ';'); } + s_node->meta_tags = struct_meta_tags; if (s_node->scope) parser->current_scope = parser->current_scope->parent; bh_arr_free(member_list_temp); diff --git a/tests/interfaces.onyx b/tests/interfaces.onyx index ea10259a..69c1eb1a 100644 --- a/tests/interfaces.onyx +++ b/tests/interfaces.onyx @@ -53,9 +53,10 @@ BitField :: interface (t: $T) { { t ^ t } -> T; } -Complex :: struct [conv.Custom_Format.{ format }] { +Complex :: struct { x, y: f32; + #struct_tag conv.Custom_Format.{ format } format :: (output: ^conv.Format_Output, format: ^conv.Format, c: ^Complex) { conv.format(output, "{.2} + {.2}i", c.x, c.y); } -- 2.25.1