Skip to main content

luaur_ast/methods/
parser_parse_continue.rs

1use crate::records::ast_stat::AstStat;
2use crate::records::ast_stat_continue::AstStatContinue;
3use crate::records::location::Location;
4use crate::records::parser::Parser;
5
6impl Parser {
7    #[allow(non_snake_case)]
8    pub fn parser_parse_continue(&mut self, start: &Location) -> *mut AstStat {
9        if self.function_stack.last().unwrap().loop_depth == 0 {
10            return self.report_stat_error(
11                *start,
12                crate::records::ast_array::AstArray::default(),
13                crate::records::ast_array::AstArray::default(),
14                format_args!("continue statement must be inside a loop"),
15            ) as *mut AstStat;
16        }
17
18        // note: the token is already parsed for us!
19        let continue_stat = AstStatContinue::new(*start);
20        unsafe { (*self.allocator).alloc(continue_stat) as *mut AstStat }
21    }
22}