diff --git a/src/language/ast/ASTSymbolInitializationChecker.cpp b/src/language/ast/ASTSymbolInitializationChecker.cpp
index 9ce181ca7fe005534f4e2d45a1c575e45fbb86af..c3ae069cc3eb9824183ef410c2c6444e2b25fd15 100644
--- a/src/language/ast/ASTSymbolInitializationChecker.cpp
+++ b/src/language/ast/ASTSymbolInitializationChecker.cpp
@@ -63,14 +63,13 @@ ASTSymbolInitializationChecker::_checkSymbolInitialization(ASTNode& node)
     auto [i_symbol, found]    = node.m_symbol_table->find(symbol, node.children[0]->begin());
     Assert(found, "unexpected error, should have been detected through declaration checking");
 
-    i_symbol->attributes().setIsInitialized();
-
     auto& function_table = node.m_symbol_table->functionTable();
 
     uint64_t function_id      = std::get<uint64_t>(i_symbol->attributes().value());
     auto& function_descriptor = function_table[function_id];
     this->_checkSymbolInitialization(function_descriptor.definitionNode());
 
+    i_symbol->attributes().setIsInitialized();
   } else if (node.is_type<language::function_definition>()) {
     this->_checkSymbolInitialization(*node.children[1]);
   } else if (node.is_type<language::eq_op>()) {