Skip to main content

luaur_analysis/methods/
find_node_visit_ast_query_alt_c.rs

1use crate::records::find_node::FindNode;
2use luaur_ast::records::ast_node::AstNode;
3use luaur_ast::records::ast_stat::AstStat;
4use luaur_ast::records::ast_stat_block::AstStatBlock;
5use luaur_ast::visit::ast_stat_visit;
6
7impl FindNode {
8    pub fn visit_ast_stat_block(&mut self, block: *mut AstStatBlock) -> bool {
9        self.visit_ast_node(block as *mut AstNode);
10
11        let block_ref = unsafe { &*block };
12        let body = block_ref.body;
13
14        for i in 0..body.size {
15            let stat = unsafe { *body.data.add(i) };
16            let stat_ref = unsafe { &*stat };
17
18            if stat_ref.base.location.end < self.pos {
19                continue;
20            }
21            if stat_ref.base.location.begin > self.pos {
22                break;
23            }
24
25            unsafe {
26                ast_stat_visit(stat, self);
27            }
28        }
29
30        false
31    }
32}