@@ -205,8 +205,10 @@ void IRGeneratorForStatements::endVisit(BinaryOperation const& _binaryOperation)
205
205
// TODO: get around resolveRecursive by passing the environment further down?
206
206
functionType = m_context.env ->resolveRecursive (functionType);
207
207
m_context.enqueueFunctionDefinition (&functionDefinition, functionType);
208
- m_code << " let " << var (_binaryOperation).commaSeparatedList () <<
209
- " := " << IRNames::function (*m_context.env , functionDefinition, functionType) << " (" <<
208
+ std::string functionDeclaration = var (_binaryOperation).commaSeparatedList ();
209
+ if (!functionDeclaration.empty ())
210
+ m_code << " let " << functionDeclaration << " := " ;
211
+ m_code << IRNames::function (*m_context.env , functionDefinition, functionType) << " (" <<
210
212
var (_binaryOperation.leftExpression ()).commaSeparatedList () <<
211
213
var (_binaryOperation.rightExpression ()).commaSeparatedListPrefixed () << " )\n " ;
212
214
}
@@ -344,15 +346,19 @@ void IRGeneratorForStatements::endVisit(FunctionCall const& _functionCall)
344
346
m_context.enqueueFunctionDefinition (functionDefinition, functionType);
345
347
// TODO: account for return stack size
346
348
solAssert (!functionDefinition->returnParameterList ());
347
- if (functionDefinition->experimentalReturnExpression ())
349
+ std::string functionDeclaration = var (_functionCall).commaSeparatedList ();
350
+ if (!functionDeclaration.empty ())
348
351
m_code << " let " << var (_functionCall).commaSeparatedList () << " := " ;
349
352
m_code << IRNames::function (*m_context.env , *functionDefinition, functionType) << " (" ;
350
353
auto const & arguments = _functionCall.arguments ();
351
- if (arguments.size () > 1 )
354
+ if (arguments.size () == 1 )
355
+ m_code << var (*arguments.back ()).commaSeparatedList ();
356
+ else if (arguments.size () > 1 )
357
+ {
352
358
for (auto arg: arguments | ranges::views::drop_last (1 ))
353
359
m_code << var (*arg).commaSeparatedList ();
354
- if (!arguments.empty ())
355
360
m_code << var (*arguments.back ()).commaSeparatedListPrefixed ();
361
+ }
356
362
m_code << " )\n " ;
357
363
}
358
364
0 commit comments