diff options
| author | Zuhaitz <zuhaitz.zechhub@gmail.com> | 2026-02-02 13:44:29 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-02 13:44:29 +0000 |
| commit | 06a1343d2e513928979aecb1754133fd54c8f7c0 (patch) | |
| tree | 0bb1a6661ee70712dcdcb0788924f8d15090dc38 /src/parser/parser_struct.c | |
| parent | 447cef46d66ec78cb364af92a5291728a43ec5c1 (diff) | |
| parent | fc8ba2cbed5f2242bce4101d97cdacf23b4e0792 (diff) | |
Merge branch 'main' into feature/README_PT_BR
Diffstat (limited to 'src/parser/parser_struct.c')
| -rw-r--r-- | src/parser/parser_struct.c | 10 |
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) { |
