diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2018-04-05 20:23:36 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2018-04-06 19:52:19 +0800 |
commit | e8be0e61b395c61a836e018861cc3fdec10f6a8a (patch) | |
tree | a6ba819670589b75a90cae96f60b523e00fa62c7 | |
parent | d5f40c141b203eb12c4d6fa97418b1a8f0f789bd (diff) | |
download | dexon-solidity-e8be0e61b395c61a836e018861cc3fdec10f6a8a.tar.gz dexon-solidity-e8be0e61b395c61a836e018861cc3fdec10f6a8a.tar.zst dexon-solidity-e8be0e61b395c61a836e018861cc3fdec10f6a8a.zip |
Catch FatalError in CompilerStack::analysis to cover all the analysis tests
-rw-r--r-- | libsolidity/analysis/TypeChecker.cpp | 12 | ||||
-rw-r--r-- | libsolidity/interface/CompilerStack.cpp | 10 |
2 files changed, 11 insertions, 11 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index a252742d..ce2771ca 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -60,17 +60,7 @@ bool typeSupportedByOldABIEncoder(Type const& _type) bool TypeChecker::checkTypeRequirements(ASTNode const& _contract) { - try - { - _contract.accept(*this); - } - catch (FatalError const&) - { - // We got a fatal error which required to stop further type checking, but we can - // continue normally from here. - if (m_errorReporter.errors().empty()) - throw; // Something is weird here, rather throw again. - } + _contract.accept(*this); return Error::containsOnlyWarnings(m_errorReporter.errors()); } diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index eacfca9c..e7cdb742 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -164,6 +164,8 @@ bool CompilerStack::analyze() resolveImports(); bool noErrors = true; + + try { SyntaxChecker syntaxChecker(m_errorReporter); for (Source const* source: m_sourceOrder) if (!syntaxChecker.checkSyntax(*source->ast)) @@ -245,6 +247,14 @@ bool CompilerStack::analyze() smtChecker.analyze(*source->ast); } + } + catch(FatalError const&) + { + if (m_errorReporter.errors().empty()) + throw; // Something is weird here, rather throw again. + noErrors = false; + } + if (noErrors) { m_stackState = AnalysisSuccessful; |