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_decl.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/check_decl.cpp') diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 5c25dd6a3..5a8080f96 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -131,6 +131,14 @@ gb_internal void check_init_variables(CheckerContext *ctx, Entity **lhs, isize l if (d != nullptr) { d->init_expr = o->expr; } + + if (o->type && is_type_no_copy(o->type)) { + begin_error_block(); + if (check_no_copy_assignment(*o, str_lit("initialization"))) { + error_line("\tInitialization of a #no_copy type must be either implicitly zero, a constant literal, or from a return value a call expression"); + } + end_error_block(); + } } if (rhs_count > 0 && lhs_count != rhs_count) { error(lhs[0]->token, "Assignment count mismatch '%td' = '%td'", lhs_count, rhs_count); -- cgit v1.2.3