Merge pull request #2888 from ethereum/same-declaration-error

Use secondary source location as a vector in same declaration errors
This commit is contained in:
Alex Beregszaszi 2017-09-12 14:57:42 +01:00 committed by GitHub
commit f2412da800

View File

@ -174,18 +174,20 @@ void TypeChecker::checkContractDuplicateFunctions(ContractDefinition const& _con
{ {
vector<FunctionDefinition const*> const& overloads = it.second; vector<FunctionDefinition const*> const& overloads = it.second;
for (size_t i = 0; i < overloads.size(); ++i) for (size_t i = 0; i < overloads.size(); ++i)
{
SecondarySourceLocation ssl;
for (size_t j = i + 1; j < overloads.size(); ++j) for (size_t j = i + 1; j < overloads.size(); ++j)
if (FunctionType(*overloads[i]).hasEqualArgumentTypes(FunctionType(*overloads[j]))) if (FunctionType(*overloads[i]).hasEqualArgumentTypes(FunctionType(*overloads[j])))
{ ssl.append("Other declaration is here:", overloads[j]->location());
m_errorReporter.declarationError(
overloads[j]->location(), if (ssl.infos.size() > 0)
SecondarySourceLocation().append( m_errorReporter.declarationError(
"Other declaration is here:", overloads[i]->location(),
overloads[i]->location() ssl,
), "Function with same name and arguments defined twice."
"Function with same name and arguments defined twice." );
); }
}
} }
} }