luau-syntax 0.732.0

Luau lexer, parser, AST, CST, and source utilities
Documentation
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
    }
}