Use boost range adaptors in AsmPrinter

This commit is contained in:
Alex Beregszaszi 2017-05-03 19:32:38 +01:00
parent d6396ee85f
commit 8688b63fa6

View File

@ -119,14 +119,22 @@ string AsmPrinter::operator()(assembly::VariableDeclaration const& _variableDecl
string AsmPrinter::operator()(assembly::FunctionDefinition const& _functionDefinition) string AsmPrinter::operator()(assembly::FunctionDefinition const& _functionDefinition)
{ {
string out = "function " + _functionDefinition.name + "("; string out = "function " + _functionDefinition.name + "(";
for (auto const& argument: _functionDefinition.arguments) out += boost::algorithm::join(
out += argument.name + appendTypeName(argument.type) + ","; _functionDefinition.arguments | boost::adaptors::transformed(
[this](TypedName argument) { return argument.name + appendTypeName(argument.type); }
),
", "
);
out += ")"; out += ")";
if (!_functionDefinition.returns.empty()) if (!_functionDefinition.returns.empty())
{ {
out += " -> "; out += " -> ";
for (auto const& argument: _functionDefinition.returns) out += boost::algorithm::join(
out += argument.name + appendTypeName(argument.type) + ","; _functionDefinition.returns | boost::adaptors::transformed(
[this](TypedName argument) { return argument.name + appendTypeName(argument.type); }
),
", "
);
} }
return out + "\n" + (*this)(_functionDefinition.body); return out + "\n" + (*this)(_functionDefinition.body);