diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-26 00:07:40 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-26 00:07:40 +0000 |
| commit | 10889700d1e587c2ff5544efeb7f98448a365057 (patch) | |
| tree | 8829a3e520869525cf0803a70209e58169abb94b | |
| parent | b568f67d75553bbecd2cadc4d61b330b8aea2ad2 (diff) | |
Error added for #125
| -rw-r--r-- | src/parser/parser_decl.c | 7 | ||||
| -rw-r--r-- | src/parser/parser_struct.c | 6 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/parser/parser_decl.c b/src/parser/parser_decl.c index c5df863..48077e1 100644 --- a/src/parser/parser_decl.c +++ b/src/parser/parser_decl.c @@ -56,6 +56,13 @@ ASTNode *parse_function(ParserContext *ctx, Lexer *l, int is_async) strcat(buf, ","); } strcat(buf, s); + + // Check for shadowing + if (is_known_generic(ctx, s)) + { + zpanic_at(gt, "Generic parameter '%s' shadows an existing generic parameter", s); + } + free(s); if (lexer_peek(l).type == TOK_COMMA) diff --git a/src/parser/parser_struct.c b/src/parser/parser_struct.c index 17d8e93..b7dec32 100644 --- a/src/parser/parser_struct.c +++ b/src/parser/parser_struct.c @@ -142,6 +142,12 @@ ASTNode *parse_trait(ParserContext *ctx, Lexer *l) n_node->trait.methods = methods; n_node->trait.generic_params = generic_params; n_node->trait.generic_param_count = generic_count; + + if (generic_count > 0) + { + ctx->known_generics_count -= generic_count; + } + register_trait(name); return n_node; } |
