From c819c350d62b2069adc36407a35cb12bd7066a25 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 16 Jan 2023 11:58:14 +0000 Subject: Add error message for atomic intrinsics to prevent arbitrary types --- src/check_expr.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/check_expr.cpp') diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 491114344..431b36664 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -4896,6 +4896,17 @@ gb_internal bool is_type_normal_pointer(Type *ptr, Type **elem) { return false; } +gb_internal bool is_type_valid_atomic_type(Type *elem) { + elem = core_type(elem); + if (elem->kind == Type_BitSet) { + elem = bit_set_to_int(elem); + } + if (elem->kind != Type_Basic) { + return false; + } + return (elem->Basic.flags & (BasicFlag_Boolean|BasicFlag_OrderedNumeric)) != 0; +} + gb_internal bool check_identifier_exists(Scope *s, Ast *node, bool nested = false, Scope **out_scope = nullptr) { switch (node->kind) { case_ast_node(i, Ident, node); -- cgit v1.2.3