diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-12 17:59:56 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-12 17:59:56 +0800 |
commit | a03211f3c9920499837fe11edef8c030c772181a (patch) | |
tree | ec5de230b4e3627c1bd5997100930e77e53f66c0 /libsolidity/analysis | |
parent | 4cb5502faa2004d738c25e4dcdf4f6678540017e (diff) | |
download | dexon-solidity-a03211f3c9920499837fe11edef8c030c772181a.tar.gz dexon-solidity-a03211f3c9920499837fe11edef8c030c772181a.tar.zst dexon-solidity-a03211f3c9920499837fe11edef8c030c772181a.zip |
Show each unimplemented function in secondary source location
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index d2151cda..8e1d11a1 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -458,7 +458,7 @@ void TypeChecker::endVisit(InheritanceSpecifier const& _inheritance) " to " + parameterTypes[i]->toString() + " requested." - ); + ); } void TypeChecker::endVisit(UsingForDirective const& _usingFor) @@ -1583,14 +1583,16 @@ void TypeChecker::endVisit(NewExpression const& _newExpression) if (contract->contractKind() == ContractDefinition::ContractKind::Interface) m_errorReporter.fatalTypeError(_newExpression.location(), "Cannot instantiate an interface."); if (!contract->annotation().unimplementedFunctions.empty()) + { + SecondarySourceLocation ssl; + for (auto function: contract->annotation().unimplementedFunctions) + ssl.append("Missing implementation:", function->location()); m_errorReporter.typeError( _newExpression.location(), - SecondarySourceLocation().append( - "Missing implementation:", - contract->annotation().unimplementedFunctions.front()->location() - ), + ssl, "Trying to create an instance of an abstract contract." ); + } if (!contract->constructorIsPublic()) m_errorReporter.typeError(_newExpression.location(), "Contract with internal constructor cannot be created directly."); |