mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix builtin function types for typed evm dialect.
This commit is contained in:
parent
aa15ea7e8e
commit
4644d4616f
@ -151,13 +151,13 @@ bool ScopeFiller::registerVariable(TypedName const& _name, SourceLocation const&
|
||||
|
||||
bool ScopeFiller::registerFunction(FunctionDefinition const& _funDef)
|
||||
{
|
||||
vector<Scope::YulType> arguments;
|
||||
for (auto const& _argument: _funDef.parameters)
|
||||
arguments.emplace_back(_argument.type.str());
|
||||
vector<Scope::YulType> parameters;
|
||||
for (auto const& parameter: _funDef.parameters)
|
||||
parameters.emplace_back(parameter.type);
|
||||
vector<Scope::YulType> returns;
|
||||
for (auto const& _return: _funDef.returnVariables)
|
||||
returns.emplace_back(_return.type.str());
|
||||
if (!m_currentScope->registerFunction(_funDef.name, std::move(arguments), std::move(returns)))
|
||||
for (auto const& returnVariable: _funDef.returnVariables)
|
||||
returns.emplace_back(returnVariable.type);
|
||||
if (!m_currentScope->registerFunction(_funDef.name, std::move(parameters), std::move(returns)))
|
||||
{
|
||||
//@TODO secondary location
|
||||
m_errorReporter.declarationError(
|
||||
|
@ -221,6 +221,15 @@ EVMDialectTyped::EVMDialectTyped(langutil::EVMVersion _evmVersion, bool _objectA
|
||||
boolType = "bool"_yulstring;
|
||||
types = {defaultType, boolType};
|
||||
|
||||
// Set all types to ``defaultType``
|
||||
for (auto& fun: m_functions)
|
||||
{
|
||||
for (auto& p: fun.second.parameters)
|
||||
p = defaultType;
|
||||
for (auto& r: fun.second.returns)
|
||||
r = defaultType;
|
||||
}
|
||||
|
||||
m_functions["lt"_yulstring].returns = {"bool"_yulstring};
|
||||
m_functions["gt"_yulstring].returns = {"bool"_yulstring};
|
||||
m_functions["slt"_yulstring].returns = {"bool"_yulstring};
|
||||
@ -260,6 +269,7 @@ EVMDialectTyped::EVMDialectTyped(langutil::EVMVersion _evmVersion, bool _objectA
|
||||
_visitArguments();
|
||||
}));
|
||||
m_functions["bool_to_u256"_yulstring].parameters = {"bool"_yulstring};
|
||||
m_functions["bool_to_u256"_yulstring].returns = {"u256"_yulstring};
|
||||
m_functions.insert(createFunction("u256_to_bool", 1, 1, {}, false, [](
|
||||
FunctionCall const&,
|
||||
AbstractAssembly& _assembly,
|
||||
@ -276,6 +286,7 @@ EVMDialectTyped::EVMDialectTyped(langutil::EVMVersion _evmVersion, bool _objectA
|
||||
_assembly.appendInstruction(evmasm::Instruction::INVALID);
|
||||
_assembly.appendLabel(inRange);
|
||||
}));
|
||||
m_functions["u256_to_bool"_yulstring].parameters = {"u256"_yulstring};
|
||||
m_functions["u256_to_bool"_yulstring].returns = {"bool"_yulstring};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user