luaur_ast/methods/
printer_advance.rs1use crate::records::position::Position;
2use crate::records::printer::Printer;
3use luaur_common::macros::luau_assert::LUAU_ASSERT;
4
5pub trait IntoPosition {
6 fn into_position(self) -> Position;
7}
8
9impl IntoPosition for Position {
10 fn into_position(self) -> Position {
11 self
12 }
13}
14
15impl IntoPosition for &Position {
16 fn into_position(self) -> Position {
17 *self
18 }
19}
20
21impl<'a> Printer<'a> {
22 pub fn advance<P: IntoPosition>(&mut self, new_pos: P) {
23 let new_pos = new_pos.into_position();
24 LUAU_ASSERT!(new_pos.has_value());
25 self.writer.advance(&new_pos);
26 }
27}
28
29#[no_mangle]
30pub extern "C" fn printer_advance(this: *mut Printer, new_pos: *const Position) {
31 unsafe {
32 (*this).advance(&*new_pos);
33 }
34}