luaur_ast/methods/
printer_visualize_else_if.rs1use crate::records::ast_stat_if::AstStatIf;
2use crate::records::printer::Printer;
3
4impl<'a> Printer<'a> {
5 pub fn visualize_else_if(&mut self, elseif: &mut AstStatIf) {
6 unsafe { self.visualize_ast_expr(&mut *elseif.condition) };
7
8 if let Some(ref loc) = elseif.then_location {
9 self.advance(&loc.begin);
10 }
11
12 self.writer.keyword("then");
13
14 unsafe { self.visualize_block_ast_stat_block(&mut *elseif.thenbody) };
15
16 if elseif.elsebody.is_null() {
17 self.advance(unsafe { &(*elseif.thenbody).base.base.location.end });
18 self.writer.keyword("end");
19 } else if let Some(elseifelseif) = unsafe {
20 crate::rtti::ast_node_as::<AstStatIf>(
21 elseif.elsebody as *mut crate::records::ast_node::AstNode,
22 )
23 .as_mut()
24 } {
25 if let Some(ref loc) = elseif.else_location {
26 self.advance(&loc.begin);
27 }
28 self.writer.keyword("elseif");
29 unsafe { self.visualize_else_if(elseifelseif) };
30 } else {
31 if let Some(ref loc) = elseif.else_location {
32 self.advance(&loc.begin);
33 }
34 self.writer.keyword("else");
35
36 unsafe { self.visualize_block_ast_stat(&mut *elseif.elsebody) };
37 self.advance(unsafe { &(*elseif.elsebody).base.location.end });
38 self.writer.keyword("end");
39 }
40 }
41}