From 5da76ae34bac2f54b1bda5528cf49c0551e88bba Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 15 Apr 2023 15:36:21 +0100 Subject: Add `struct #no_copy` --- src/check_stmt.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/check_stmt.cpp') diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 4e6623fc1..388a64e00 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -326,7 +326,6 @@ gb_internal bool check_is_terminating(Ast *node, String const &label) { - gb_internal Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, Operand *rhs) { if (rhs->mode == Addressing_Invalid) { return nullptr; @@ -339,6 +338,8 @@ gb_internal Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, O Ast *node = unparen_expr(lhs->expr); + check_no_copy_assignment(*rhs, str_lit("assignment")); + // NOTE(bill): Ignore assignments to '_' if (is_blank_ident(node)) { check_assignment(ctx, rhs, nullptr, str_lit("assignment to '_' identifier")); @@ -400,6 +401,7 @@ gb_internal Type *check_assignment_variable(CheckerContext *ctx, Operand *lhs, O } Type *assignment_type = lhs->type; + switch (lhs->mode) { case Addressing_Invalid: return nullptr; -- cgit v1.2.3