luaur_compiler/methods/
compiler_patch_loop_jumps.rs1use crate::enums::type_compiler::Type;
2use crate::records::compiler::Compiler;
3use crate::records::loop_jump::LoopJump;
4use luaur_ast::records::ast_node::AstNode;
5use luaur_common::macros::luau_assert::LUAU_ASSERT;
6
7impl Compiler {
8 pub fn patch_loop_jumps(
9 &mut self,
10 node: *mut AstNode,
11 old_jumps: usize,
12 end_label: usize,
13 cont_label: usize,
14 ) {
15 LUAU_ASSERT!(old_jumps <= self.loop_jumps.len());
16
17 for i in old_jumps..self.loop_jumps.len() {
18 let lj: &LoopJump = &self.loop_jumps[i];
19
20 match lj.r#type {
21 Type::Break => {
22 self.patch_jump(node, lj.label, end_label);
23 }
24 Type::Continue => {
25 self.patch_jump(node, lj.label, cont_label);
26 }
27 _ => {
28 LUAU_ASSERT!(!true);
29 }
30 }
31 }
32 }
33}