aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-11-08 07:14:23 +0800
committerchriseth <c@ethdev.com>2015-11-08 07:14:23 +0800
commit94ea61cbb5fb8a1007438c1bfea3fc7e253f1ea6 (patch)
treeb067bc33389f724a8dd14d49da0ce8f55baa560e /test
parent48ffa087837e19fd1cfa006ccb0737f07e735f0b (diff)
parenta15d2bbb524b68a480fd52ac54cc9363a9edfed8 (diff)
downloaddexon-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.cpp39
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()));
}