diff options
author | chriseth <c@ethdev.com> | 2015-11-08 07:14:23 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2015-11-08 07:14:23 +0800 |
commit | 94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6 (patch) | |
tree | b067bc33389f724a8dd14d49da0ce8f55baa560e /test | |
parent | 48ffa087837e19fd1cfa006ccb0737f07e735f0b (diff) | |
parent | a15d2bbb524b68a480fd52ac54cc9363a9edfed8 (diff) | |
download | dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.tar dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.tar.gz dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.tar.bz2 dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.tar.lz dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.tar.xz dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.tar.zst dexon-solidity-94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6.zip |
Merge pull request #195 from LianaHus/sol_remove_exc_from_ref_resolver
Sol remove exc from ref resolver
Diffstat (limited to 'test')
-rw-r--r-- | test/libsolidity/SolidityNameAndTypeResolution.cpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 6b36f4cc..915d6542 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -62,35 +62,38 @@ parseAnalyseAndReturnError(string const& _source, bool _reportWarnings = false) solAssert(Error::containsOnlyWarnings(errors), ""); resolver.registerDeclarations(*sourceUnit); + bool success = true; for (ASTPointer<ASTNode> const& node: sourceUnit->nodes()) if (ContractDefinition* contract = dynamic_cast<ContractDefinition*>(node.get())) { globalContext->setCurrentContract(*contract); resolver.updateDeclaration(*globalContext->currentThis()); resolver.updateDeclaration(*globalContext->currentSuper()); - resolver.resolveNamesAndTypes(*contract); + if (!resolver.resolveNamesAndTypes(*contract)) + success = false; } - for (ASTPointer<ASTNode> const& node: sourceUnit->nodes()) - if (ContractDefinition* contract = dynamic_cast<ContractDefinition*>(node.get())) - { - globalContext->setCurrentContract(*contract); - resolver.updateDeclaration(*globalContext->currentThis()); + if (success) + for (ASTPointer<ASTNode> const& node: sourceUnit->nodes()) + if (ContractDefinition* contract = dynamic_cast<ContractDefinition*>(node.get())) + { + globalContext->setCurrentContract(*contract); + resolver.updateDeclaration(*globalContext->currentThis()); - TypeChecker typeChecker(errors); - bool success = typeChecker.checkTypeRequirements(*contract); - BOOST_CHECK(success || !errors.empty()); + TypeChecker typeChecker(errors); + bool success = typeChecker.checkTypeRequirements(*contract); + BOOST_CHECK(success || !errors.empty()); - for (auto const& currentError: errors) - { - if ( - (_reportWarnings && currentError->type() == Error::Type::Warning) || - (!_reportWarnings && currentError->type() != Error::Type::Warning) - ) - return make_pair(sourceUnit, std::make_shared<Error::Type const>(currentError->type())); } - } + for (auto const& currentError: errors) + { + if ( + (_reportWarnings && currentError->type() == Error::Type::Warning) || + (!_reportWarnings && currentError->type() != Error::Type::Warning) + ) + return make_pair(sourceUnit, std::make_shared<Error::Type const>(currentError->type())); + } } - catch(Error const& _e) + catch (Error const& _e) { return make_pair(sourceUnit, std::make_shared<Error::Type const>(_e.type())); } |