Merge pull request #2573 from benjaminion/lll-error-report-symbol

LLL: Improve error reporting in certain cases.
This commit is contained in:
Alex Beregszaszi 2017-07-20 11:02:31 +01:00 committed by GitHub
commit d70974ea7c

View File

@ -203,7 +203,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
else if (us == "INCLUDE") else if (us == "INCLUDE")
{ {
if (_t.size() != 2) if (_t.size() != 2)
error<IncorrectParameterCount>(); error<IncorrectParameterCount>(us);
string fileName = firstAsString(); string fileName = firstAsString();
if (fileName.empty()) if (fileName.empty())
error<InvalidName>("Empty file name provided"); error<InvalidName>("Empty file name provided");
@ -215,7 +215,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
else if (us == "SET") else if (us == "SET")
{ {
if (_t.size() != 3) if (_t.size() != 3)
error<IncorrectParameterCount>(); error<IncorrectParameterCount>(us);
int c = 0; int c = 0;
for (auto const& i: _t) for (auto const& i: _t)
if (c++ == 2) if (c++ == 2)
@ -226,7 +226,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
else if (us == "GET") else if (us == "GET")
{ {
if (_t.size() != 2) if (_t.size() != 2)
error<IncorrectParameterCount>(); error<IncorrectParameterCount>(us);
m_asm.append((u256)varAddress(firstAsString())); m_asm.append((u256)varAddress(firstAsString()));
m_asm.append(Instruction::MLOAD); m_asm.append(Instruction::MLOAD);
} }
@ -237,7 +237,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
string n; string n;
unsigned ii = 0; unsigned ii = 0;
if (_t.size() != 3 && _t.size() != 4) if (_t.size() != 3 && _t.size() != 4)
error<IncorrectParameterCount>(); error<IncorrectParameterCount>(us);
vector<string> args; vector<string> args;
for (auto const& i: _t) for (auto const& i: _t)
{ {
@ -288,7 +288,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
else if (us == "LIT") else if (us == "LIT")
{ {
if (_t.size() < 3) if (_t.size() < 3)
error<IncorrectParameterCount>(); error<IncorrectParameterCount>(us);
unsigned ii = 0; unsigned ii = 0;
CodeFragment pos; CodeFragment pos;
bytes data; bytes data;
@ -303,7 +303,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
{ {
pos = CodeFragment(i, _s); pos = CodeFragment(i, _s);
if (pos.m_asm.deposit() != 1) if (pos.m_asm.deposit() != 1)
error<InvalidDeposit>(); error<InvalidDeposit>(us);
} }
else if (i.tag() != 0) else if (i.tag() != 0)
{ {
@ -384,10 +384,10 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
else else
code.push_back(CodeFragment(i, _s)); code.push_back(CodeFragment(i, _s));
} }
auto requireSize = [&](unsigned s) { if (code.size() != s) error<IncorrectParameterCount>(); }; auto requireSize = [&](unsigned s) { if (code.size() != s) error<IncorrectParameterCount>(us); };
auto requireMinSize = [&](unsigned s) { if (code.size() < s) error<IncorrectParameterCount>(); }; auto requireMinSize = [&](unsigned s) { if (code.size() < s) error<IncorrectParameterCount>(us); };
auto requireMaxSize = [&](unsigned s) { if (code.size() > s) error<IncorrectParameterCount>(); }; auto requireMaxSize = [&](unsigned s) { if (code.size() > s) error<IncorrectParameterCount>(us); };
auto requireDeposit = [&](unsigned i, int s) { if (code[i].m_asm.deposit() != s) error<InvalidDeposit>(); }; auto requireDeposit = [&](unsigned i, int s) { if (code[i].m_asm.deposit() != s) error<InvalidDeposit>(us); };
if (_s.macros.count(make_pair(s, code.size()))) if (_s.macros.count(make_pair(s, code.size())))
{ {
@ -471,7 +471,7 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s)
m_asm.append(code[1].m_asm, minDep); m_asm.append(code[1].m_asm, minDep);
m_asm << end.tag(); m_asm << end.tag();
if (m_asm.deposit() != deposit) if (m_asm.deposit() != deposit)
error<InvalidDeposit>(); error<InvalidDeposit>(us);
} }
else if (us == "WHEN" || us == "UNLESS") else if (us == "WHEN" || us == "UNLESS")
{ {