summaryrefslogtreecommitdiffstats
path: root/third_party/rust/nom/tests/inference.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/nom/tests/inference.rs
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/nom/tests/inference.rs')
-rw-r--r--third_party/rust/nom/tests/inference.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/third_party/rust/nom/tests/inference.rs b/third_party/rust/nom/tests/inference.rs
new file mode 100644
index 0000000000..851c1382c9
--- /dev/null
+++ b/third_party/rust/nom/tests/inference.rs
@@ -0,0 +1,53 @@
+//! test type inference issues in parsee compilation
+//#![feature(trace_macros)]
+#![allow(dead_code)]
+#![allow(unused_comparisons)]
+#![allow(unused_variables)]
+#![allow(unused_imports)]
+
+#[macro_use]
+extern crate nom;
+
+use std::str;
+use nom::character::{streaming::alpha1 as alpha, is_digit};
+
+// issue #617
+named!(multi<&[u8], () >, fold_many0!( take_while1!( is_digit ), (), |_, _| {}));
+
+// issue #561
+#[cfg(feature = "alloc")]
+named!(
+ value<Vec<Vec<&str>>>,
+ do_parse!(
+ first_line: map_res!(is_not!("\n"), std::str::from_utf8)
+ >> rest:
+ many_m_n!(
+ 0,
+ 1,
+ separated_list!(
+ tag!("\n\t"),
+ map_res!(take_while!(call!(|c| c != b'\n')), std::str::from_utf8)
+ )
+ ) >> (rest)
+ )
+);
+
+// issue #534
+#[cfg(feature = "alloc")]
+fn wrap_suffix(input: &Option<Vec<&[u8]>>) -> Option<String> {
+ if input.is_some() {
+ // I've tried both of the lines below individually and get the same error.
+ Some("hello".to_string())
+ //Some(str::from_utf8(u).expect("Found invalid UTF-8").to_string())
+ } else {
+ None
+ }
+}
+
+#[cfg(feature = "alloc")]
+named!(parse_suffix<&[u8],Option<String>>,do_parse!(
+ u: opt!(many1!(alt!(
+ complete!(tag!("%")) | complete!(tag!("#")) | complete!(tag!("@")) | complete!(alpha)
+ ))) >>
+ (wrap_suffix(&u))
+));