diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-12 23:37:25 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-12 23:37:25 +0800 |
commit | 14f103ca6024722cdbfb0a1c2a3837df635fbdef (patch) | |
tree | ecdfdb912162f6bb09092d474bb2c6d3f0d928f9 | |
parent | f2412da80002ad2ca686b8a64210c933ee2f1942 (diff) | |
parent | 5ae9b8dab180b94bbbc5a7a791ddd9701f1108f0 (diff) | |
download | dexon-solidity-14f103ca6024722cdbfb0a1c2a3837df635fbdef.tar.gz dexon-solidity-14f103ca6024722cdbfb0a1c2a3837df635fbdef.tar.zst dexon-solidity-14f103ca6024722cdbfb0a1c2a3837df635fbdef.zip |
Merge pull request #2891 from ethereum/same-declaration-exponential-error
Do not report overload conflicts for every line excessively
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index 3564ff32..87750c6e 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -173,13 +173,17 @@ void TypeChecker::checkContractDuplicateFunctions(ContractDefinition const& _con for (auto const& it: functions) { vector<FunctionDefinition const*> const& overloads = it.second; - for (size_t i = 0; i < overloads.size(); ++i) + set<size_t> reported; + for (size_t i = 0; i < overloads.size() && !reported.count(i); ++i) { SecondarySourceLocation ssl; for (size_t j = i + 1; j < overloads.size(); ++j) if (FunctionType(*overloads[i]).hasEqualArgumentTypes(FunctionType(*overloads[j]))) + { ssl.append("Other declaration is here:", overloads[j]->location()); + reported.insert(j); + } if (ssl.infos.size() > 0) m_errorReporter.declarationError( |