mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add reservedIdentifier to dialect
This commit is contained in:
committed by
chriseth
parent
d0551b67d7
commit
3a687c34e4
@@ -109,6 +109,26 @@ pair<YulString, BuiltinFunctionForEVM> createFunction(
|
||||
return {name, f};
|
||||
}
|
||||
|
||||
set<YulString> createReservedIdentifiers()
|
||||
{
|
||||
set<YulString> reserved;
|
||||
for (auto const& instr: evmasm::c_instructions)
|
||||
{
|
||||
string name = instr.first;
|
||||
transform(name.begin(), name.end(), name.begin(), [](unsigned char _c) { return tolower(_c); });
|
||||
reserved.emplace(name);
|
||||
}
|
||||
reserved += vector<YulString>{
|
||||
"linkersymbol"_yulstring,
|
||||
"datasize"_yulstring,
|
||||
"dataoffset"_yulstring,
|
||||
"datacopy"_yulstring,
|
||||
"setimmutable"_yulstring,
|
||||
"loadimmutable"_yulstring,
|
||||
};
|
||||
return reserved;
|
||||
}
|
||||
|
||||
map<YulString, BuiltinFunctionForEVM> createBuiltins(langutil::EVMVersion _evmVersion, bool _objectAccess)
|
||||
{
|
||||
map<YulString, BuiltinFunctionForEVM> builtins;
|
||||
@@ -266,7 +286,8 @@ map<YulString, BuiltinFunctionForEVM> createBuiltins(langutil::EVMVersion _evmVe
|
||||
EVMDialect::EVMDialect(langutil::EVMVersion _evmVersion, bool _objectAccess):
|
||||
m_objectAccess(_objectAccess),
|
||||
m_evmVersion(_evmVersion),
|
||||
m_functions(createBuiltins(_evmVersion, _objectAccess))
|
||||
m_functions(createBuiltins(_evmVersion, _objectAccess)),
|
||||
m_reserved(createReservedIdentifiers())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -279,6 +300,11 @@ BuiltinFunctionForEVM const* EVMDialect::builtin(YulString _name) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool EVMDialect::reservedIdentifier(YulString _name) const
|
||||
{
|
||||
return m_reserved.count(_name) != 0;
|
||||
}
|
||||
|
||||
EVMDialect const& EVMDialect::strictAssemblyForEVM(langutil::EVMVersion _version)
|
||||
{
|
||||
static map<langutil::EVMVersion, unique_ptr<EVMDialect const>> dialects;
|
||||
|
||||
Reference in New Issue
Block a user