diff --git a/src/language/ast/ASTNodeDataTypeBuilder.cpp b/src/language/ast/ASTNodeDataTypeBuilder.cpp index 5197b2d1c0dd868d94afa24361e5a13cd5cdf8ba..404a351b5c46e946f155b25f358a18a2e94acb1d 100644 --- a/src/language/ast/ASTNodeDataTypeBuilder.cpp +++ b/src/language/ast/ASTNodeDataTypeBuilder.cpp @@ -38,14 +38,14 @@ ASTNodeDataTypeBuilder::_buildDeclarationNodeDataTypes(ASTNode& type_node, ASTNo } else if (type_node.is_type<language::vector_type>()) { data_type = getVectorDataType(type_node); } else if (type_node.is_type<language::tuple_type_specifier>()) { - auto& content_node = type_node.children[0]; + const auto& content_node = type_node.children[0]; if (content_node->is_type<language::type_name_id>()) { const std::string& type_name_id = content_node->string(); auto& symbol_table = *type_node.m_symbol_table; - auto [i_type_symbol, found] = symbol_table.find(type_name_id, content_node->begin()); + const auto [i_type_symbol, found] = symbol_table.find(type_name_id, content_node->begin()); if (not found) { throw parse_error("undefined type identifier", std::vector{content_node->begin()}); } else if (i_type_symbol->attributes().dataType() != ASTNodeDataType::type_name_id_t) { @@ -56,7 +56,6 @@ ASTNodeDataTypeBuilder::_buildDeclarationNodeDataTypes(ASTNode& type_node, ASTNo } content_node->m_data_type = ASTNodeDataType{ASTNodeDataType::type_id_t, type_name_id}; - i_type_symbol->attributes().setDataType(content_node->m_data_type); } else if (content_node->is_type<language::B_set>()) { content_node->m_data_type = ASTNodeDataType::bool_t; } else if (content_node->is_type<language::Z_set>()) { diff --git a/src/language/utils/SymbolTable.hpp b/src/language/utils/SymbolTable.hpp index 667ae89ae41866cd0da2bd86fbff18be53b9af5f..246749dabde8bbbda683415d0b6afd75d7baba64 100644 --- a/src/language/utils/SymbolTable.hpp +++ b/src/language/utils/SymbolTable.hpp @@ -80,6 +80,7 @@ class SymbolTable void setDataType(const ASTNodeDataType& data_type) { + Assert(m_data_type == ASTNodeDataType::undefined_t, "data type has already been defined!"); m_data_type = data_type; }