summaryrefslogtreecommitdiff
path: root/src/parser/parser_struct.c
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-02-02 01:05:54 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-02-02 01:05:54 +0000
commit4f72798ac1518def38b49c0d9d9a686b43302689 (patch)
tree022190e48e99210ef3eeeed0461eede7a132aed5 /src/parser/parser_struct.c
parent15975aadfb8030b03e614acc3024001c201aefe6 (diff)
parentf86ef2bbc1248bba9ebfd322c96a0f4c8e028148 (diff)
Merge branch 'main' of https://github.com/z-libs/Zen-C into arsmotorin/main
Diffstat (limited to 'src/parser/parser_struct.c')
-rw-r--r--src/parser/parser_struct.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/parser/parser_struct.c b/src/parser/parser_struct.c
index c89ad34..0c984a6 100644
--- a/src/parser/parser_struct.c
+++ b/src/parser/parser_struct.c
@@ -315,6 +315,16 @@ ASTNode *parse_impl(ParserContext *ctx, Lexer *l)
register_generic(ctx, target_gen_param);
}
+ // Check for common error: swapped Struct and Trait
+ // impl MyStruct for MyTrait (Wrong) vs impl MyTrait for MyStruct (Correct)
+ if (!is_trait(name1) && is_trait(name2))
+ {
+ zpanic_at(t1,
+ "Incorrect usage of impl. Did you mean 'impl %s for %s'? Syntax is 'impl "
+ "<Trait> for <Struct>'",
+ name2, name1);
+ }
+
// Auto-import std/mem.zc if implementing Drop, Copy, or Clone traits
if (strcmp(name1, "Drop") == 0 || strcmp(name1, "Copy") == 0 || strcmp(name1, "Clone") == 0)
{