mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Accessors for exceptions.
This commit is contained in:
parent
cc2a8609d6
commit
b6bd85202c
@ -75,6 +75,16 @@ Error::Error(
|
||||
*this << util::errinfo_comment(_description);
|
||||
}
|
||||
|
||||
SourceLocation const* Error::sourceLocation() const noexcept
|
||||
{
|
||||
return boost::get_error_info<errinfo_sourceLocation>(*this);
|
||||
}
|
||||
|
||||
SecondarySourceLocation const* Error::secondarySourceLocation() const noexcept
|
||||
{
|
||||
return boost::get_error_info<errinfo_secondarySourceLocation>(*this);
|
||||
}
|
||||
|
||||
optional<Error::Severity> Error::severityFromString(string _input)
|
||||
{
|
||||
boost::algorithm::to_lower(_input);
|
||||
|
@ -197,6 +197,9 @@ public:
|
||||
Type type() const { return m_type; }
|
||||
std::string const& typeName() const { return m_typeName; }
|
||||
|
||||
SourceLocation const* sourceLocation() const noexcept;
|
||||
SecondarySourceLocation const* secondarySourceLocation() const noexcept;
|
||||
|
||||
/// helper functions
|
||||
static Error const* containsErrorOfType(ErrorList const& _list, Error::Type _type)
|
||||
{
|
||||
@ -206,7 +209,7 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static Severity errorSeverity(Type _type)
|
||||
static constexpr Severity errorSeverity(Type _type)
|
||||
{
|
||||
if (_type == Type::Info)
|
||||
return Severity::Info;
|
||||
|
@ -129,7 +129,7 @@ Json::Value formatErrorWithException(
|
||||
_charStreamProvider
|
||||
);
|
||||
|
||||
if (string const* description = boost::get_error_info<util::errinfo_comment>(_exception))
|
||||
if (string const* description = _exception.comment())
|
||||
message = ((_message.length() > 0) ? (_message + ":") : "") + *description;
|
||||
else
|
||||
message = _message;
|
||||
|
@ -39,8 +39,6 @@ struct Exception: virtual std::exception, virtual boost::exception
|
||||
|
||||
/// @returns the errinfo_comment of this exception.
|
||||
std::string const* comment() const noexcept;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
/// Throws an exception with a given description and extra information about the location the
|
||||
|
@ -100,7 +100,7 @@ ErrorList AnalysisFramework::filterErrors(ErrorList const& _errorList, bool _inc
|
||||
for (auto const& messagePrefix: m_messagesToCut)
|
||||
if (currentError->comment()->find(messagePrefix) == 0)
|
||||
{
|
||||
SourceLocation const* location = boost::get_error_info<errinfo_sourceLocation>(*currentError);
|
||||
SourceLocation const* location = currentError->sourceLocation();
|
||||
// sufficient for now, but in future we might clone the error completely, including the secondary location
|
||||
newError = make_shared<Error>(
|
||||
currentError->errorId(),
|
||||
|
@ -118,9 +118,10 @@ void SyntaxTest::filterObtainedErrors()
|
||||
{
|
||||
for (auto const& currentError: filterErrors(compiler().errors(), true))
|
||||
{
|
||||
int locationStart = -1, locationEnd = -1;
|
||||
int locationStart = -1;
|
||||
int locationEnd = -1;
|
||||
string sourceName;
|
||||
if (auto location = boost::get_error_info<errinfo_sourceLocation>(*currentError))
|
||||
if (SourceLocation const* location = currentError->sourceLocation())
|
||||
{
|
||||
solAssert(location->sourceName, "");
|
||||
sourceName = *location->sourceName;
|
||||
|
@ -54,7 +54,7 @@ void SyntaxTest::parseAndAnalyze()
|
||||
int locationStart = -1;
|
||||
int locationEnd = -1;
|
||||
|
||||
if (auto location = boost::get_error_info<errinfo_sourceLocation>(*error))
|
||||
if (SourceLocation const* location = error->sourceLocation())
|
||||
{
|
||||
locationStart = location->start;
|
||||
locationEnd = location->end;
|
||||
|
Loading…
Reference in New Issue
Block a user