Allow for per-parameter literalValues builtin functions

This commit is contained in:
Mathias Baumann
2020-04-08 16:41:38 +02:00
parent 582c754598
commit 5203503583
12 changed files with 75 additions and 52 deletions
+7 -3
View File
@@ -136,11 +136,15 @@ wasm::Expression WasmCodeTransform::operator()(FunctionCall const& _call)
}
typeConversionNeeded = true;
}
else if (builtin->literalArguments)
else if (builtin->literalArguments && contains(builtin->literalArguments.value(), true))
{
vector<wasm::Expression> literals;
for (auto const& arg: _call.arguments)
literals.emplace_back(wasm::StringLiteral{std::get<Literal>(arg).value.str()});
for (size_t i = 0; i < _call.arguments.size(); i++)
if (builtin->literalArguments.value()[i])
literals.emplace_back(wasm::StringLiteral{std::get<Literal>(_call.arguments[i]).value.str()});
else
literals.emplace_back(visitReturnByValue(_call.arguments[i]));
return wasm::BuiltinCall{_call.functionName.name.str(), std::move(literals)};
}
else