Skip to content
Snippets Groups Projects
Commit ead25d85 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Begin to fix some `let` instruction

parent 5b330b41
No related branches found
No related tags found
1 merge request!37Feature/language
...@@ -82,13 +82,18 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) ...@@ -82,13 +82,18 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n)
i_symbol->attributes().setDataType(n.children[0]->m_data_type); i_symbol->attributes().setDataType(n.children[0]->m_data_type);
} }
if (parameters_domain_node.children.size() != parameters_name_node.children.size()) { const size_t nb_parameter_domains =
(parameters_domain_node.children.size() > 0) ? parameters_domain_node.children.size() : 1;
const size_t nb_parameter_names =
(parameters_name_node.children.size() > 0) ? parameters_name_node.children.size() : 1;
if (nb_parameter_domains != nb_parameter_names) {
std::ostringstream message; std::ostringstream message;
message << "Compound data type deduction is not yet implemented\n" message << "Compound data type deduction is not yet implemented\n"
<< "note: number of product spaces (" << parameters_domain_node.children.size() << ") " << "note: number of product spaces (" << nb_parameter_domains << ") " << rang::fgB::yellow
<< rang::fgB::yellow << parameters_domain_node.string() << rang::style::reset << parameters_domain_node.string() << rang::style::reset << rang::style::bold
<< " differs from number of variables (" << parameters_name_node.children.size() << ") " << " differs from number of variables (" << nb_parameter_names << ") " << rang::fgB::yellow
<< rang::fgB::yellow << parameters_name_node.string() << rang::style::reset << std::ends; << parameters_name_node.string() << rang::style::reset << std::ends;
throw parse_error(message.str(), n.children[0]->begin()); throw parse_error(message.str(), n.children[0]->begin());
} }
...@@ -117,7 +122,7 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) ...@@ -117,7 +122,7 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n)
Assert(found); Assert(found);
i_symbol->attributes().setDataType(data_type); i_symbol->attributes().setDataType(data_type);
}; };
#warning This test is probably incorrect
if (parameters_domain_node.children.size() == 0) { if (parameters_domain_node.children.size() == 0) {
simple_type_allocator(parameters_domain_node, parameters_name_node); simple_type_allocator(parameters_domain_node, parameters_name_node);
} else { } else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment