aboutsummaryrefslogtreecommitdiff
path: root/src/check_decl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_decl.cpp')
-rw-r--r--src/check_decl.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/check_decl.cpp b/src/check_decl.cpp
index c8bacb9b2..4cce25097 100644
--- a/src/check_decl.cpp
+++ b/src/check_decl.cpp
@@ -350,12 +350,12 @@ void override_entity_in_scope(Entity *original_entity, Entity *new_entity) {
original_entity->type = new_entity->type;
original_entity->aliased_of = new_entity;
- if (original_entity->identifier == nullptr) {
- original_entity->identifier = new_entity->identifier;
- }
- if (original_entity->identifier != nullptr &&
- original_entity->identifier->kind == Ast_Ident) {
- original_entity->identifier->Ident.entity = new_entity;
+ Ast *empty_ident = nullptr;
+ original_entity->identifier.compare_exchange_strong(empty_ident, new_entity->identifier);
+
+ if (original_entity->identifier.load() != nullptr &&
+ original_entity->identifier.load()->kind == Ast_Ident) {
+ original_entity->identifier.load()->Ident.entity = new_entity;
}
// IMPORTANT NOTE(bill, 2021-04-10): copy only the variants