summaryrefslogtreecommitdiffstats
path: root/third_party/rust/nom/tests/custom_errors.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/nom/tests/custom_errors.rs
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/nom/tests/custom_errors.rs')
-rw-r--r--third_party/rust/nom/tests/custom_errors.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/third_party/rust/nom/tests/custom_errors.rs b/third_party/rust/nom/tests/custom_errors.rs
new file mode 100644
index 0000000000..2021713341
--- /dev/null
+++ b/third_party/rust/nom/tests/custom_errors.rs
@@ -0,0 +1,48 @@
+#![allow(dead_code)]
+
+use nom::bytes::streaming::tag;
+use nom::character::streaming::digit1 as digit;
+use nom::combinator::verify;
+use nom::error::{ErrorKind, ParseError};
+#[cfg(feature = "alloc")]
+use nom::multi::count;
+use nom::sequence::terminated;
+use nom::IResult;
+
+#[derive(Debug)]
+pub struct CustomError(String);
+
+impl<'a> From<(&'a str, ErrorKind)> for CustomError {
+ fn from(error: (&'a str, ErrorKind)) -> Self {
+ CustomError(format!("error code was: {:?}", error))
+ }
+}
+
+impl<'a> ParseError<&'a str> for CustomError {
+ fn from_error_kind(_: &'a str, kind: ErrorKind) -> Self {
+ CustomError(format!("error code was: {:?}", kind))
+ }
+
+ fn append(_: &'a str, kind: ErrorKind, other: CustomError) -> Self {
+ CustomError(format!("{:?}\nerror code was: {:?}", other, kind))
+ }
+}
+
+fn test1(input: &str) -> IResult<&str, &str, CustomError> {
+ //fix_error!(input, CustomError, tag!("abcd"))
+ tag("abcd")(input)
+}
+
+fn test2(input: &str) -> IResult<&str, &str, CustomError> {
+ //terminated!(input, test1, fix_error!(CustomError, digit))
+ terminated(test1, digit)(input)
+}
+
+fn test3(input: &str) -> IResult<&str, &str, CustomError> {
+ verify(test1, |s: &str| s.starts_with("abcd"))(input)
+}
+
+#[cfg(feature = "alloc")]
+fn test4(input: &str) -> IResult<&str, Vec<&str>, CustomError> {
+ count(test1, 4)(input)
+}