Skip to main content

luaur_analysis/records/
visitor.rs

1use luaur_ast::records::ast_stat_return::AstStatReturn;
2use luaur_ast::records::ast_visitor::AstVisitor;
3
4#[derive(Debug, Clone)]
5pub struct Visitor {
6    pub(crate) result: *mut AstStatReturn,
7}
8
9impl Visitor {
10    pub fn new() -> Self {
11        Self {
12            result: core::ptr::null_mut(),
13        }
14    }
15}
16
17impl Default for Visitor {
18    fn default() -> Self {
19        Self::new()
20    }
21}
22
23impl AstVisitor for Visitor {
24    fn visit_expr(&mut self, _node: *mut core::ffi::c_void) -> bool {
25        false
26    }
27
28    fn visit_stat_return(&mut self, node: *mut core::ffi::c_void) -> bool {
29        let node = node as *mut AstStatReturn;
30        unsafe {
31            if self.result.is_null() && (*node).list.len() > 0 {
32                self.result = node;
33            }
34        }
35        false
36    }
37
38    fn visit_node(&mut self, _node: *mut core::ffi::c_void) -> bool {
39        false
40    }
41}