From c70cefc848dede2c1954d7d823f373434fc06843 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 7 Jun 2025 08:53:42 -0700 Subject: [PATCH] [position] Pop captured piece from CapturesList on unmake --- position/src/position.rs | 7 ++++++- position/src/position/captures.rs | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/position/src/position.rs b/position/src/position.rs index bac5b01..e674b81 100644 --- a/position/src/position.rs +++ b/position/src/position.rs @@ -189,7 +189,12 @@ impl Position { let unmake_result = self.board.unmake_move(&last_move_record); - if unmake_result.is_err() { + if unmake_result.is_ok() { + if let Some(capture) = last_move_record.captured_piece { + let popped_piece = self.captures.pop(last_move_record.color); + debug_assert_eq!(Some(capture), popped_piece); + } + } else { self.moves.push(last_move_record); } diff --git a/position/src/position/captures.rs b/position/src/position/captures.rs index ddd9dac..f879c5b 100644 --- a/position/src/position/captures.rs +++ b/position/src/position/captures.rs @@ -17,6 +17,10 @@ impl CapturesList { self.0[color as usize].push(piece); } + pub fn pop(&mut self, color: Color) -> Option { + self.0[color as usize].pop() + } + pub fn is_empty(&self) -> bool { self.0.iter().all(Vec::is_empty) }