Disallow the same yul variable occurring multiple times on the LHS of an assignment.

This commit is contained in:
Daniel Kirchner
2020-07-07 10:52:47 +02:00
parent 375cb09341
commit 70615a73a4
5 changed files with 32 additions and 0 deletions
+11
View File
@@ -167,6 +167,17 @@ void AsmAnalyzer::operator()(Assignment const& _assignment)
size_t const numVariables = _assignment.variableNames.size();
yulAssert(numVariables >= 1, "");
set<YulString> variables;
for (auto const& _variableName: _assignment.variableNames)
if (!variables.insert(_variableName.name).second)
m_errorReporter.declarationError(
9005_error,
_assignment.location,
"Variable " +
_variableName.name.str() +
" occurs multiple times on the left-hand side of the assignment."
);
vector<YulString> types = std::visit(*this, *_assignment.value);
if (types.size() != numVariables)