Catch FatalError in CompilerStack::analysis to cover all the analysis tests

This commit is contained in:
Alex Beregszaszi 2018-04-05 14:23:36 +02:00
parent d5f40c141b
commit e8be0e61b3
2 changed files with 11 additions and 11 deletions

View File

@ -59,18 +59,8 @@ 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.
}
return Error::containsOnlyWarnings(m_errorReporter.errors());
}

View File

@ -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;