diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/nom/tests/inference.rs | |
parent | Initial commit. (diff) | |
download | firefox-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.rs | 53 |
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)) +)); |