Refactoring yul source locations.

This commit is contained in:
Djordje Mijovic
2021-05-04 16:05:23 +02:00
parent fe4822a1d2
commit e404b6e7a6
62 changed files with 394 additions and 358 deletions
+5 -6
View File
@@ -234,27 +234,26 @@ evmasm::Instruction Pattern::instruction() const
return m_instruction;
}
Expression Pattern::toExpression(SourceLocation const& _location) const
Expression Pattern::toExpression(shared_ptr<DebugData const> const& _debugData) const
{
if (matchGroup())
return ASTCopier().translate(matchGroupValue());
if (m_kind == PatternKind::Constant)
{
assertThrow(m_data, OptimizerException, "No match group and no constant value given.");
return Literal{_location, LiteralKind::Number, YulString{util::formatNumber(*m_data)}, {}};
return Literal{_debugData, LiteralKind::Number, YulString{util::formatNumber(*m_data)}, {}};
}
else if (m_kind == PatternKind::Operation)
{
vector<Expression> arguments;
for (auto const& arg: m_arguments)
arguments.emplace_back(arg.toExpression(_location));
arguments.emplace_back(arg.toExpression(_debugData));
string name = instructionInfo(m_instruction).name;
transform(begin(name), end(name), begin(name), [](auto _c) { return tolower(_c); });
return FunctionCall{
_location,
Identifier{_location, YulString{name}},
return FunctionCall{_debugData,
Identifier{_debugData, YulString{name}},
std::move(arguments)
};
}