From 10889700d1e587c2ff5544efeb7f98448a365057 Mon Sep 17 00:00:00 2001 From: Zuhaitz Méndez Fernández de Aránguiz Date: Mon, 26 Jan 2026 00:07:40 +0000 Subject: Error added for #125 --- src/parser/parser_decl.c | 7 +++++++ src/parser/parser_struct.c | 6 ++++++ 2 files changed, 13 insertions(+) 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; } -- cgit v1.2.3