Merge pull request #2646 from ethereum/standardcompiler

Clean up error catching in StandardCompiler
This commit is contained in:
Yoichi Hirai 2017-07-27 11:20:17 +02:00 committed by GitHub
commit 772de8c4d9

View File

@ -285,25 +285,28 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
)); ));
} }
} }
/// This is only thrown in a very few locations.
catch (Error const& _error) catch (Error const& _error)
{ {
if (_error.type() == Error::Type::DocstringParsingError)
errors.append(formatError(
false,
"DocstringParsingError",
"general",
"Documentation parsing error: " + *boost::get_error_info<errinfo_comment>(_error)
));
else
errors.append(formatErrorWithException( errors.append(formatErrorWithException(
_error, _error,
false, false,
_error.typeName(), _error.typeName(),
"general", "general",
"", "Uncaught error: ",
scannerFromSourceName scannerFromSourceName
)); ));
} }
/// This should not be leaked from compile().
catch (FatalError const& _exception)
{
errors.append(formatError(
false,
"FatalError",
"general",
"Uncaught fatal error: " + boost::diagnostic_information(_exception)
));
}
catch (CompilerError const& _exception) catch (CompilerError const& _exception)
{ {
errors.append(formatErrorWithException( errors.append(formatErrorWithException(
@ -322,7 +325,8 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
false, false,
"InternalCompilerError", "InternalCompilerError",
"general", "general",
"Internal compiler error (" + _exception.lineInfo() + ")", scannerFromSourceName "Internal compiler error (" + _exception.lineInfo() + ")",
scannerFromSourceName
)); ));
} }
catch (UnimplementedFeatureError const& _exception) catch (UnimplementedFeatureError const& _exception)
@ -333,7 +337,8 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
"UnimplementedFeatureError", "UnimplementedFeatureError",
"general", "general",
"Unimplemented feature (" + _exception.lineInfo() + ")", "Unimplemented feature (" + _exception.lineInfo() + ")",
scannerFromSourceName)); scannerFromSourceName
));
} }
catch (Exception const& _exception) catch (Exception const& _exception)
{ {