diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-12 18:07:28 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-12 19:06:16 +0800 |
commit | da1a53e02a897117e190ef91ec8b1f63f6629a9f (patch) | |
tree | 0503dce5dcd19393f856555cd9e65c74a4a9969e /libsolidity/analysis | |
parent | 4cb5502faa2004d738c25e4dcdf4f6678540017e (diff) | |
download | dexon-solidity-da1a53e02a897117e190ef91ec8b1f63f6629a9f.tar.gz dexon-solidity-da1a53e02a897117e190ef91ec8b1f63f6629a9f.tar.zst dexon-solidity-da1a53e02a897117e190ef91ec8b1f63f6629a9f.zip |
Use secondary source location as a vector in same declaration errors
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index d2151cda..0dfae070 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -174,18 +174,20 @@ void TypeChecker::checkContractDuplicateFunctions(ContractDefinition const& _con { vector<FunctionDefinition const*> const& overloads = it.second; for (size_t i = 0; i < overloads.size(); ++i) + { + SecondarySourceLocation ssl; + for (size_t j = i + 1; j < overloads.size(); ++j) if (FunctionType(*overloads[i]).hasEqualArgumentTypes(FunctionType(*overloads[j]))) - { - m_errorReporter.declarationError( - overloads[j]->location(), - SecondarySourceLocation().append( - "Other declaration is here:", - overloads[i]->location() - ), - "Function with same name and arguments defined twice." - ); - } + ssl.append("Other declaration is here:", overloads[j]->location()); + + if (ssl.infos.size() > 0) + m_errorReporter.declarationError( + overloads[i]->location(), + ssl, + "Function with same name and arguments defined twice." + ); + } } } |