diff --git a/src/nodes/block.rs b/src/nodes/block.rs index 6306c33..d845989 100644 --- a/src/nodes/block.rs +++ b/src/nodes/block.rs @@ -59,6 +59,13 @@ impl Block { self.statements.push(statement.into()); } + pub fn remove_statement(&mut self, index: usize) { + self.statements.remove(index); + if let Some(tokens) = &mut self.tokens { + tokens.semicolons.remove(index); + } + } + pub fn with_statement>(mut self, statement: T) -> Self { self.statements.push(statement.into()); self @@ -407,6 +414,15 @@ mod test { ); } + #[test] + fn remove_statement() { + let mut block = parse_block_with_tokens("while true do end"); + + block.remove_statement(0); + + assert!(block.is_empty()); + } + #[test] fn clean_removes_semicolon_tokens() { let mut block = Block::default()