summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/target/macros.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/target/macros.rs')
-rw-r--r--src/tools/rustfmt/tests/target/macros.rs1062
1 files changed, 1062 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/target/macros.rs b/src/tools/rustfmt/tests/target/macros.rs
new file mode 100644
index 000000000..e930b5037
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/macros.rs
@@ -0,0 +1,1062 @@
+// rustfmt-normalize_comments: true
+// rustfmt-format_macro_matchers: true
+itemmacro!(this, is.now().formatted(yay));
+
+itemmacro!(
+ really,
+ long.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb()
+ .is
+ .formatted()
+);
+
+itemmacro! {this, is.brace().formatted()}
+
+fn main() {
+ foo!();
+
+ foo!(,);
+
+ bar!(a, b, c);
+
+ bar!(a, b, c,);
+
+ baz!(1 + 2 + 3, quux.kaas());
+
+ quux!(
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ );
+
+ kaas!(
+ // comments
+ a, // post macro
+ b // another
+ );
+
+ trailingcomma!(a, b, c,);
+ // Preserve trailing comma only when necessary.
+ ok!(file.seek(SeekFrom::Start(
+ table.map(|table| fixture.offset(table)).unwrap_or(0),
+ )));
+
+ noexpr!( i am not an expression, OK? );
+
+ vec![a, b, c];
+
+ vec![
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ AAAAAA,
+ BBBBB,
+ 5,
+ 100 - 30,
+ 1.33,
+ b,
+ b,
+ b,
+ ];
+
+ vec![a /* comment */];
+
+ // Trailing spaces after a comma
+ vec![a];
+
+ vec![a; b];
+ vec![a; b];
+ vec![a; b];
+
+ vec![a, b; c];
+ vec![a; b, c];
+
+ vec![
+ a;
+ (|x| {
+ let y = x + 1;
+ let z = y + 1;
+ z
+ })(2)
+ ];
+ vec![
+ a;
+ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+ ];
+ vec![a; unsafe { x + 1 }];
+
+ unknown_bracket_macro__comma_should_not_be_stripped![a,];
+
+ foo(makro!(1, 3));
+
+ hamkaas! { () };
+
+ macrowithbraces! {dont, format, me}
+
+ x!(fn);
+
+ some_macro!();
+
+ some_macro![];
+
+ some_macro! {
+ // comment
+ };
+
+ some_macro! {
+ // comment
+ };
+
+ some_macro!(
+ // comment
+ not function like
+ );
+
+ // #1712
+ let image = gray_image!(
+ 00, 01, 02;
+ 10, 11, 12;
+ 20, 21, 22);
+
+ // #1092
+ chain!(input, a: take!(max_size), || []);
+
+ // #2727
+ foo!("bar");
+}
+
+impl X {
+ empty_invoc! {}
+ empty_invoc! {}
+}
+
+fn issue_1279() {
+ println!("dsfs"); // a comment
+}
+
+fn issue_1555() {
+ let hello = &format!(
+ "HTTP/1.1 200 OK\r\nServer: {}\r\n\r\n{}",
+ "65454654654654654654654655464", "4"
+ );
+}
+
+fn issue1178() {
+ macro_rules! foo {
+ (#[$attr:meta] $name:ident) => {};
+ }
+
+ foo!(
+ #[doc = "bar"]
+ baz
+ );
+}
+
+fn issue1739() {
+ sql_function!(
+ add_rss_item,
+ add_rss_item_t,
+ (
+ a: types::Integer,
+ b: types::Timestamptz,
+ c: types::Text,
+ d: types::Text,
+ e: types::Text
+ )
+ );
+
+ w.slice_mut(s![
+ ..,
+ init_size[1] - extreeeeeeeeeeeeeeeeeeeeeeeem..init_size[1],
+ ..
+ ])
+ .par_map_inplace(|el| *el = 0.);
+}
+
+fn issue_1885() {
+ let threads = people
+ .into_iter()
+ .map(|name| {
+ chan_select! {
+ rx.recv() => {}
+ }
+ })
+ .collect::<Vec<_>>();
+}
+
+fn issue_1917() {
+ mod x {
+ quickcheck! {
+ fn test(a: String, s: String, b: String) -> TestResult {
+ if a.find(&s).is_none() {
+
+ TestResult::from_bool(true)
+ } else {
+ TestResult::discard()
+ }
+ }
+ }
+ }
+}
+
+fn issue_1921() {
+ // Macro with tabs.
+ lazy_static! {
+ static ref ONE: u32 = 1;
+ static ref TWO: u32 = 2;
+ static ref THREE: u32 = 3;
+ static ref FOUR: u32 = {
+ let mut acc = 1;
+ acc += 1;
+ acc += 2;
+ acc
+ };
+ }
+}
+
+// #1577
+fn issue1577() {
+ let json = json!({
+ "foo": "bar",
+ });
+}
+
+// #3174
+fn issue_3174() {
+ let data = if let Some(debug) = error.debug_info() {
+ json!({
+ "errorKind": format!("{:?}", error.err_kind()),
+ "debugMessage": debug.message,
+ })
+ } else {
+ json!({ "errorKind": format!("{:?}", error.err_kind()) })
+ };
+}
+
+gfx_pipeline!(pipe {
+ vbuf: gfx::VertexBuffer<Vertex> = (),
+ out: gfx::RenderTarget<ColorFormat> = "Target0",
+});
+
+// #1919
+#[test]
+fn __bindgen_test_layout_HandleWithDtor_open0_int_close0_instantiation() {
+ assert_eq!(
+ ::std::mem::size_of::<HandleWithDtor<::std::os::raw::c_int>>(),
+ 8usize,
+ concat!(
+ "Size of template specialization: ",
+ stringify!(HandleWithDtor<::std::os::raw::c_int>)
+ )
+ );
+ assert_eq!(
+ ::std::mem::align_of::<HandleWithDtor<::std::os::raw::c_int>>(),
+ 8usize,
+ concat!(
+ "Alignment of template specialization: ",
+ stringify!(HandleWithDtor<::std::os::raw::c_int>)
+ )
+ );
+}
+
+// #878
+macro_rules! try_opt {
+ ($expr:expr) => {
+ match $expr {
+ Some(val) => val,
+
+ None => {
+ return None;
+ }
+ }
+ };
+}
+
+// #2214
+// macro call whose argument is an array with trailing comma.
+fn issue2214() {
+ make_test!(
+ str_searcher_ascii_haystack,
+ "bb",
+ "abbcbbd",
+ [
+ Reject(0, 1),
+ Match(1, 3),
+ Reject(3, 4),
+ Match(4, 6),
+ Reject(6, 7),
+ ]
+ );
+}
+
+fn special_case_macros() {
+ let p = eprint!();
+ let q = eprint!("{}", 1);
+ let r = eprint!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = eprint!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ let q = eprintln!("{}", 1);
+ let r = eprintln!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = eprintln!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ let q = format!("{}", 1);
+ let r = format!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = format!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ let q = format_args!("{}", 1);
+ let r = format_args!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = format_args!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ let q = print!("{}", 1);
+ let r = print!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = print!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ let q = println!("{}", 1);
+ let r = println!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = println!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ let q = unreachable!("{}", 1);
+ let r = unreachable!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ let s = unreachable!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ debug!("{}", 1);
+ debug!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ debug!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ error!("{}", 1);
+ error!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ error!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ info!("{}", 1);
+ info!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ info!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ panic!("{}", 1);
+ panic!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ panic!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ warn!("{}", 1);
+ warn!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
+ );
+ warn!(
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ assert!();
+ assert!(result == 42);
+ assert!(result == 42, "Ahoy there, {}!", target);
+ assert!(
+ result == 42,
+ "Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}')",
+ result,
+ input,
+ expected
+ );
+ assert!(
+ result == 42,
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ assert_eq!();
+ assert_eq!(left);
+ assert_eq!(left, right);
+ assert_eq!(left, right, "Ahoy there, {}!", target);
+ assert_eq!(
+ left, right,
+ "Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}')",
+ result, input, expected
+ );
+ assert_eq!(
+ first_realllllllllllly_long_variable_that_doesnt_fit_one_one_line,
+ second_reallllllllllly_long_variable_that_doesnt_fit_one_one_line,
+ "Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}')",
+ result,
+ input,
+ expected
+ );
+ assert_eq!(
+ left + 42,
+ right,
+ "Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}')",
+ result,
+ input,
+ expected
+ );
+ assert_eq!(
+ left,
+ right,
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ write!(&mut s, "Ahoy there, {}!", target);
+ write!(
+ &mut s,
+ "Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}')",
+ result, input, expected
+ );
+ write!(
+ &mut s,
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+
+ writeln!(&mut s, "Ahoy there, {}!", target);
+ writeln!(
+ &mut s,
+ "Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}')",
+ result, input, expected
+ );
+ writeln!(
+ &mut s,
+ "{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}",
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26
+ );
+}
+
+// #1209
+impl Foo {
+ /// foo
+ pub fn foo(&self) -> Bar<foo!()> {}
+}
+
+// #819
+fn macro_in_pattern_position() {
+ let x = match y {
+ foo!() => (),
+ bar!(a, b, c) => (),
+ bar!(a, b, c,) => (),
+ baz!(1 + 2 + 3, quux.kaas()) => (),
+ quux!(
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
+ ) => (),
+ };
+}
+
+macro foo() {}
+
+pub macro bar($x:ident + $y:expr;) {
+ fn foo($x: Foo) {
+ long_function(
+ a_long_argument_to_a_long_function_is_what_this_is(AAAAAAAAAAAAAAAAAAAAAAAAAAAA),
+ $x.bar($y),
+ );
+ }
+}
+
+macro foo() {
+ // a comment
+ fn foo() {
+ // another comment
+ bar();
+ }
+}
+
+// #2574
+macro_rules! test {
+ () => {{}};
+}
+
+macro lex_err($kind: ident $(, $body: expr)*) {
+ Err(QlError::LexError(LexError::$kind($($body,)*)))
+}
+
+// Preserve trailing comma on item-level macro with `()` or `[]`.
+methods![get, post, delete,];
+methods!(get, post, delete,);
+
+// #2588
+macro_rules! m {
+ () => {
+ r#"
+ test
+ "#
+ };
+}
+fn foo() {
+ f! {r#"
+ test
+ "#};
+}
+
+// #2591
+fn foo() {
+ match 0u32 {
+ 0 => (),
+ _ => unreachable!(/* obviously */),
+ }
+}
+
+fn foo() {
+ let _ = column!(/* here */);
+}
+
+// #2616
+// Preserve trailing comma when using mixed layout for macro call.
+fn foo() {
+ foo!(
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ );
+ foo!(
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ );
+}
+
+// #2830
+// Preserve trailing comma-less/ness inside nested macro.
+named!(
+ do_parse_gsv<GsvData>,
+ map_res!(
+ do_parse!(
+ number_of_sentences: map_res!(digit, parse_num::<u16>)
+ >> char!(',')
+ >> sentence_index: map_res!(digit, parse_num::<u16>)
+ >> char!(',')
+ >> total_number_of_sats: map_res!(digit, parse_num::<u16>)
+ >> char!(',')
+ >> sat0: opt!(complete!(parse_gsv_sat_info))
+ >> sat1: opt!(complete!(parse_gsv_sat_info))
+ >> sat2: opt!(complete!(parse_gsv_sat_info))
+ >> sat3: opt!(complete!(parse_gsv_sat_info))
+ >> (
+ number_of_sentences,
+ sentence_index,
+ total_number_of_sats,
+ sat0,
+ sat1,
+ sat2,
+ sat3
+ )
+ ),
+ construct_gsv_data
+ )
+);
+
+// #2857
+convert_args!(vec!(1, 2, 3));
+
+// #3031
+thread_local!(
+ /// TLV Holds a set of JSTraceables that need to be rooted
+ static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> = RefCell::new(RootedTraceableSet::new());
+);
+
+thread_local![
+ /// TLV Holds a set of JSTraceables that need to be rooted
+ static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> = RefCell::new(RootedTraceableSet::new());
+
+ /// TLV Holds a set of JSTraceables that need to be rooted
+ static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> =
+ RefCell::new(RootedTraceableSet::new(0));
+
+ /// TLV Holds a set of JSTraceables that need to be rooted
+ static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> =
+ RefCell::new(RootedTraceableSet::new(), xxx, yyy);
+
+ /// TLV Holds a set of JSTraceables that need to be rooted
+ static ROOTED_TRACEABLES: RefCell<RootedTraceableSet> =
+ RefCell::new(RootedTraceableSet::new(1234));
+];
+
+fn issue3004() {
+ foo!(|_| { () });
+ stringify!((foo+));
+}
+
+// #3331
+pub fn fold_abi<V: Fold + ?Sized>(_visitor: &mut V, _i: Abi) -> Abi {
+ Abi {
+ extern_token: Token![extern](tokens_helper(_visitor, &_i.extern_token.span)),
+ name: (_i.name).map(|it| _visitor.fold_lit_str(it)),
+ }
+}
+
+// #3463
+x! {()}
+
+// #3746
+f!(match a {
+ 4 => &[
+ (3, false), // Missing
+ (4, true) // I-frame
+ ][..],
+});
+
+// #3583
+foo!(|x = y|);