use super::*;
impl Parser<'_, '_, '_, '_> {
pub(in crate::parser) fn report_parse_error(&mut self, error: ParseError) -> usize {
if self.diagnostics.error_limit_reached && !self.options.no_error_limit() {
return self.diagnostics.errors.len().saturating_sub(1);
}
if self
.diagnostics
.errors
.last()
.is_some_and(|last| last.location == error.location)
{
return self.diagnostics.errors.len() - 1;
}
self.push_parse_error(error)
}
pub(in crate::parser) fn push_parse_error(&mut self, error: ParseError) -> usize {
let message_index = self.diagnostics.errors.len();
let location = error.location;
self.diagnostics.errors.push(error);
let limit = flags::LuauParseErrorLimit.get() as usize;
if self.diagnostics.errors.len() >= limit && !self.options.no_error_limit() {
self.diagnostics.error_limit_reached = true;
if limit > 1 {
self.diagnostics.errors.push(ParseError::new(
location,
format!("Reached error limit ({limit})"),
));
}
}
message_index
}
}