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

Fix argument conversion to parameter values for compound types

Now the following code is valid
``
let f : N -> N*N, i -> (i+1, 2*i);
let g : N*N -> N, (i,j) -> (i+1)*(j+1);

N i = g(f(2));
``
`i` will contain the value `20` as expected
parent 7139f8d1
No related branches found
No related tags found
1 merge request!37Feature/language
......@@ -100,15 +100,15 @@ class FunctionProcessor : public INodeProcessor
std::make_shared<ExecutionPolicy::Context::Values>(
m_context_size)}};
if (m_argument_node.is_type<language::function_argument_list>()) {
if (m_argument_converters.size() == 1) {
m_argument_converters[0]->convert(context_exec_policy, m_argument_node.execute(context_exec_policy));
} else {
AggregateDataVariant argument_values{
std::get<AggregateDataVariant>(m_argument_node.execute(context_exec_policy))};
for (size_t i = 0; i < m_argument_converters.size(); ++i) {
m_argument_converters[i]->convert(context_exec_policy, std::move(argument_values[i]));
}
} else {
m_argument_converters[0]->convert(context_exec_policy, m_argument_node.execute(context_exec_policy));
}
if (m_function_expression_processors.size() == 1) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment