Make the dialect available everywhere.

This commit is contained in:
chriseth
2019-01-07 16:41:03 +01:00
parent d9910f2a12
commit 9222eff08f
29 changed files with 198 additions and 116 deletions
+6 -4
View File
@@ -22,17 +22,19 @@
#include <libyul/optimiser/NameCollector.h>
#include <libyul/AsmData.h>
#include <libyul/Dialect.h>
using namespace std;
using namespace dev;
using namespace yul;
NameDispenser::NameDispenser(Block const& _ast):
NameDispenser(NameCollector(_ast).names())
NameDispenser::NameDispenser(Dialect const& _dialect, Block const& _ast):
NameDispenser(_dialect, NameCollector(_ast).names())
{
}
NameDispenser::NameDispenser(set<YulString> _usedNames):
NameDispenser::NameDispenser(Dialect const& _dialect, set<YulString> _usedNames):
m_dialect(_dialect),
m_usedNames(std::move(_usedNames))
{
}
@@ -51,7 +53,7 @@ YulString NameDispenser::newName(YulString _nameHint, YulString _context)
YulString NameDispenser::newNameInternal(YulString _nameHint)
{
YulString name = _nameHint;
while (name.empty() || m_usedNames.count(name))
while (name.empty() || m_usedNames.count(name) || m_dialect.builtin(name))
{
m_counter++;
name = YulString(_nameHint.str() + "_" + to_string(m_counter));