Skip to content

Commit 6d97e76

Browse files
sei40krclaude
authored andcommitted
feat: add is_success and is_failure methods for ParseResult
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 20374ce commit 6d97e76

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

  • rust/ruby-prism/src/parse_result

rust/ruby-prism/src/parse_result/mod.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,20 @@ impl<'pr> ParseResult<'pr> {
184184
pub fn node(&self) -> Node<'_> {
185185
Node::new(self.parser, self.node.as_ptr())
186186
}
187+
188+
/// Returns true if there were no errors during parsing and false if there
189+
/// were.
190+
#[must_use]
191+
pub fn is_success(&self) -> bool {
192+
self.errors().next().is_none()
193+
}
194+
195+
/// Returns true if there were errors during parsing and false if there were
196+
/// not.
197+
#[must_use]
198+
pub fn is_failure(&self) -> bool {
199+
!self.is_success()
200+
}
187201
}
188202

189203
impl Drop for ParseResult<'_> {
@@ -195,3 +209,22 @@ impl Drop for ParseResult<'_> {
195209
}
196210
}
197211
}
212+
213+
#[cfg(test)]
214+
mod tests {
215+
use crate::parse;
216+
217+
#[test]
218+
fn test_is_success() {
219+
let result = parse(b"1 + 1");
220+
assert!(result.is_success());
221+
assert!(!result.is_failure());
222+
}
223+
224+
#[test]
225+
fn test_is_failure() {
226+
let result = parse(b"<>");
227+
assert!(result.is_failure());
228+
assert!(!result.is_success());
229+
}
230+
}

0 commit comments

Comments
 (0)