Limit the number of errors output in a single run to 256

This commit is contained in:
Alex Beregszaszi
2018-04-06 13:52:19 +02:00
parent 9bd49516d8
commit d5f40c141b
5 changed files with 1065 additions and 0 deletions
+14
View File
@@ -61,6 +61,8 @@ void ErrorReporter::warning(
void ErrorReporter::error(Error::Type _type, SourceLocation const& _location, string const& _description)
{
abortIfExcessive();
auto err = make_shared<Error>(_type);
*err <<
errinfo_sourceLocation(_location) <<
@@ -71,6 +73,8 @@ void ErrorReporter::error(Error::Type _type, SourceLocation const& _location, st
void ErrorReporter::error(Error::Type _type, SourceLocation const& _location, SecondarySourceLocation const& _secondaryLocation, string const& _description)
{
abortIfExcessive();
auto err = make_shared<Error>(_type);
*err <<
errinfo_sourceLocation(_location) <<
@@ -80,6 +84,16 @@ void ErrorReporter::error(Error::Type _type, SourceLocation const& _location, Se
m_errorList.push_back(err);
}
void ErrorReporter::abortIfExcessive()
{
if (m_errorList.size() > 256)
{
auto err = make_shared<Error>(Error::Type::Warning);
*err << errinfo_comment("There are more than 256 errors. Aborting.");
m_errorList.push_back(err);
BOOST_THROW_EXCEPTION(FatalError());
}
}
void ErrorReporter::fatalError(Error::Type _type, SourceLocation const& _location, string const& _description)
{
+2
View File
@@ -102,6 +102,8 @@ private:
SourceLocation const& _location = SourceLocation(),
std::string const& _description = std::string());
void abortIfExcessive();
ErrorList& m_errorList;
};