[INFO] fetching crate ritter-macro 0.1.0-pre.1...
[INFO] testing ritter-macro-0.1.0-pre.1 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate ritter-macro 0.1.0-pre.1 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate ritter-macro 0.1.0-pre.1
[INFO] finished tweaking crates.io crate ritter-macro 0.1.0-pre.1
[INFO] tweaked toml for crates.io crate ritter-macro 0.1.0-pre.1 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate ritter-macro 0.1.0-pre.1 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ritter-macro 0.1.0-pre.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ritter-common v0.1.0-pre.1
[INFO] [stderr]   Downloaded ritter-types v0.1.0-pre.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688
[INFO] running `Command { std: "docker" "start" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling itertools v0.15.0
[INFO] [stderr]    Compiling syn v3.0.4
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling indexmap v2.14.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling ritter-types v0.1.0-pre.1
[INFO] [stderr]    Compiling ritter-common v0.1.0-pre.1
[INFO] [stderr]    Compiling ritter-macro v0.1.0-pre.1 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.75s
[INFO] running `Command { std: "docker" "inspect" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling console v0.16.4
[INFO] [stderr]    Compiling similar v2.7.0
[INFO] [stderr]    Compiling ritter-macro v0.1.0-pre.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling insta v1.48.0
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.35s
[INFO] running `Command { std: "docker" "inspect" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.44s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ritter_macro-5d78831f579ed768)
[INFO] [stdout] 
[INFO] [stdout] running 11 tests
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stderr] error: 'rustfmt' is not installed for the toolchain '1.99.0-beta.8-x86_64-unknown-linux-gnu'.
[INFO] [stderr] help: run `rustup component add --toolchain 1.99.0-beta.8-x86_64-unknown-linux-gnu rustfmt` to install it
[INFO] [stdout] test tests::spanned_in_vec ... FAILED
[INFO] [stdout] test tests::enum_recursive ... FAILED
[INFO] [stdout] test tests::enum_with_named_field ... FAILED
[INFO] [stdout] test tests::struct_optional ... FAILED
[INFO] [stdout] test tests::struct_extra ... FAILED
[INFO] [stdout] test tests::grammar_unboxed_field ... FAILED
[INFO] [stdout] test tests::struct_repeat ... FAILED
[INFO] [stdout] test tests::enum_transformed_fields ... FAILED
[INFO] [stdout] test tests::enum_with_unamed_vector ... FAILED
[INFO] [stdout] test tests::expand_extract_test ... FAILED
[INFO] [stdout] test tests::enum_prec_left ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::spanned_in_vec stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__spanned_in_vec.snap
[INFO] [stdout] Snapshot: spanned_in_vec
[INFO] [stdout] Source: src/lib.rs:395
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         use ritter::{Rule, Spanned}; #[derive(Rule)] #[language] pub struct
[INFO] [stdout]         NumberList { numbers: Vec<Spanned<Number>>, } #[derive(Rule)] pub
[INFO] [stdout]         struct Number { #[leaf(re(r"\d+"))] v: i32 } #[derive(Rule)] #[extra]
[INFO] [stdout]         struct Whitespace { #[leaf(pattern(r"\s"))] _whitespace: (), }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    use ritter::{Rule, Spanned};
[INFO] [stdout]     3       │-    impl ::ritter::rule::Language for NumberList {
[INFO] [stdout]     4       │-        fn produce_grammar() -> String {
[INFO] [stdout]     5       │-            String::new()
[INFO] [stdout]     6       │-        }
[INFO] [stdout]     7       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     8       │-            unsafe extern "C" {
[INFO] [stdout]     9       │-                fn tree_sitter_NumberList() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]    10       │-            }
[INFO] [stdout]    11       │-            unsafe { tree_sitter_NumberList() }
[INFO] [stdout]    12       │-        }
[INFO] [stdout]    13       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    14       │-        #[doc = "[`NumberList`]"]
[INFO] [stdout]    15       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    16       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    17       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    18       │-        }
[INFO] [stdout]    19       │-    }
[INFO] [stdout]    20       │-    impl ::ritter::Extract for NumberList {
[INFO] [stdout]    21       │-        type Output = Self;
[INFO] [stdout]    22       │-        type LeafFn = ();
[INFO] [stdout]    23       │-        #[allow(non_snake_case)]
[INFO] [stdout]    24       │-        fn extract<'tree>(
[INFO] [stdout]    25       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    26       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    27       │-            source: &[u8],
[INFO] [stdout]    28       │-            _l: Self::LeafFn,
[INFO] [stdout]    29       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    30       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    31       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    32       │-                stringify!(NumberList),
[INFO] [stdout]    33       │-                node,
[INFO] [stdout]    34       │-                move |state| {
[INFO] [stdout]    35       │-                    Ok(NumberList {
[INFO] [stdout]    36       │-                        numbers: ::ritter::__private::extract_field::<Vec<Spanned<Number>>, _>(
[INFO] [stdout]    37       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    38       │-                            (),
[INFO] [stdout]    39       │-                            state,
[INFO] [stdout]    40       │-                            ::ritter::extract::ExtractFieldContext::new(2u32, true, |state| {
[INFO] [stdout]    41       │-                                match state {
[INFO] [stdout]    42       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    43       │-                                        "Number", true, false,
[INFO] [stdout]    44       │-                                    ),
[INFO] [stdout]    45       │-                                    1u32 => ::ritter::extract::ExtractFieldState::Repeat1,
[INFO] [stdout]    46       │-                                    2u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    47       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    48       │-                                }
[INFO] [stdout]    49       │-                            }),
[INFO] [stdout]    50       │-                            source,
[INFO] [stdout]    51       │-                            "numbers",
[INFO] [stdout]    52       │-                        )?,
[INFO] [stdout]    53       │-                    })
[INFO] [stdout]    54       │-                },
[INFO] [stdout]    55       │-            )
[INFO] [stdout]    56       │-        }
[INFO] [stdout]    57       │-    }
[INFO] [stdout]    58       │-    impl ::ritter::rule::Rule for NumberList {
[INFO] [stdout]    59       │-        const RULE_NAME: &'static str = "NumberList";
[INFO] [stdout]    60       │-        fn produce_ast() -> String {
[INFO] [stdout]    61       │-            String::new()
[INFO] [stdout]    62       │-        }
[INFO] [stdout]    63       │-    }
[INFO] [stdout]    64       │-    impl ::ritter::Extract for Number {
[INFO] [stdout]    65       │-        type Output = Self;
[INFO] [stdout]    66       │-        type LeafFn = ();
[INFO] [stdout]    67       │-        #[allow(non_snake_case)]
[INFO] [stdout]    68       │-        fn extract<'tree>(
[INFO] [stdout]    69       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    70       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    71       │-            source: &[u8],
[INFO] [stdout]    72       │-            _l: Self::LeafFn,
[INFO] [stdout]    73       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    74       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    75       │-            ::ritter::__private::extract_struct_or_variant(stringify!(Number), node, move |state| {
[INFO] [stdout]    76       │-                Ok(Number {
[INFO] [stdout]    77       │-                    v: ::ritter::__private::extract_field::<i32, _>(
[INFO] [stdout]    78       │-                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    79       │-                        (),
[INFO] [stdout]    80       │-                        state,
[INFO] [stdout]    81       │-                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    82       │-                            0u32,
[INFO] [stdout]    83       │-                            false,
[INFO] [stdout]    84       │-                            |state| match state {
[INFO] [stdout]    85       │-                                0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    86       │-                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    87       │-                            },
[INFO] [stdout]    88       │-                        ),
[INFO] [stdout]    89       │-                        source,
[INFO] [stdout]    90       │-                        "v",
[INFO] [stdout]    91       │-                    )?,
[INFO] [stdout]    92       │-                })
[INFO] [stdout]    93       │-            })
[INFO] [stdout]    94       │-        }
[INFO] [stdout]    95       │-    }
[INFO] [stdout]    96       │-    impl ::ritter::rule::Rule for Number {
[INFO] [stdout]    97       │-        const RULE_NAME: &'static str = "Number";
[INFO] [stdout]    98       │-        fn produce_ast() -> String {
[INFO] [stdout]    99       │-            String::new()
[INFO] [stdout]   100       │-        }
[INFO] [stdout]   101       │-    }
[INFO] [stdout]   102       │-    impl ::ritter::Extract for Whitespace {
[INFO] [stdout]   103       │-        type Output = Self;
[INFO] [stdout]   104       │-        type LeafFn = ();
[INFO] [stdout]   105       │-        #[allow(non_snake_case)]
[INFO] [stdout]   106       │-        fn extract<'tree>(
[INFO] [stdout]   107       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]   108       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]   109       │-            source: &[u8],
[INFO] [stdout]   110       │-            _l: Self::LeafFn,
[INFO] [stdout]   111       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]   112       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]   113       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]   114       │-                stringify!(Whitespace),
[INFO] [stdout]   115       │-                node,
[INFO] [stdout]   116       │-                move |state| {
[INFO] [stdout]   117       │-                    Ok(Whitespace {
[INFO] [stdout]   118       │-                        _whitespace: ::ritter::__private::extract_field::<(), _>(
[INFO] [stdout]   119       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]   120       │-                            (),
[INFO] [stdout]   121       │-                            state,
[INFO] [stdout]   122       │-                            ::ritter::extract::ExtractFieldContext::new(0u32, false, |state| {
[INFO] [stdout]   123       │-                                match state {
[INFO] [stdout]   124       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]   125       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   126       │-                                }
[INFO] [stdout]   127       │-                            }),
[INFO] [stdout]   128       │-                            source,
[INFO] [stdout]   129       │-                            "_whitespace",
[INFO] [stdout]   130       │-                        )?,
[INFO] [stdout]   131       │-                    })
[INFO] [stdout]   132       │-                },
[INFO] [stdout]   133       │-            )
[INFO] [stdout]   134       │-        }
[INFO] [stdout]   135       │-    }
[INFO] [stdout]   136       │-    impl ::ritter::rule::Rule for Whitespace {
[INFO] [stdout]   137       │-        const RULE_NAME: &'static str = "Whitespace";
[INFO] [stdout]   138       │-        fn produce_ast() -> String {
[INFO] [stdout]   139       │-            String::new()
[INFO] [stdout]   140       │-        }
[INFO] [stdout]   141       │-    }
[INFO] [stdout]   142       │-}
[INFO] [stdout]           1 │+mod grammar { use ritter :: { Rule , Spanned } ; impl :: ritter :: rule :: Language for NumberList { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_NumberList () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_NumberList () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`NumberList`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for NumberList { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (NumberList) , node , move | state | Ok (NumberList { numbers : :: ritter :: __private :: extract_field :: < Vec < Spanned < Number > > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (2u32 , true , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Number" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Repeat1 , 2u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "numbers") ? })) } } impl :: ritter :: rule :: Rule for NumberList { const RULE_NAME : & 'static str = "NumberList" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Number { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Number) , node , move | state | Ok (Number { v : :: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "v") ? })) } } impl :: ritter :: rule :: Rule for Number { const RULE_NAME : & 'static str = "Number" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Whitespace { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Whitespace) , node , move | state | Ok (Whitespace { _whitespace : :: ritter :: __private :: extract_field :: < () , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "_whitespace") ? })) } } impl :: ritter :: rule :: Rule for Whitespace { const RULE_NAME : & 'static str = "Whitespace" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::spanned_in_vec' (494) panicked at src/lib.rs:395:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__spanned_in_vec.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c2b70 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c2b70 - ritter_macro[598f42a7b31a4841]::tests::spanned_in_vec
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:395:9
[INFO] [stdout]   22:     0x5b00da7ba79d - ritter_macro[598f42a7b31a4841]::tests::spanned_in_vec::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:394:28
[INFO] [stdout]   23:     0x5b00da7dba76 - <ritter_macro[598f42a7b31a4841]::tests::spanned_in_vec::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::enum_recursive stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__enum_recursive.snap
[INFO] [stdout] Snapshot: enum_recursive
[INFO] [stdout] Source: src/lib.rs:170
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub enum Expression
[INFO] [stdout]         {
[INFO] [stdout]             Number(#[leaf(re(r"\d+"))] i32),
[INFO] [stdout]             Neg(#[leaf("-")] (), Box<Expression>),
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for Expression {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_Expression() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_Expression() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`Expression`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for Expression {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            let mut cursor = node.walk();
[INFO] [stdout]    31       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    32       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    33       │-            }
[INFO] [stdout]    34       │-            loop {
[INFO] [stdout]    35       │-                let node = cursor.node();
[INFO] [stdout]    36       │-                match node.kind() {
[INFO] [stdout]    37       │-                    "Expression_Number" => {
[INFO] [stdout]    38       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    39       │-                            stringify!(Expression::Number),
[INFO] [stdout]    40       │-                            node,
[INFO] [stdout]    41       │-                            move |state| {
[INFO] [stdout]    42       │-                                Ok(Expression::Number(::ritter::__private::extract_field::<
[INFO] [stdout]    43       │-                                    i32,
[INFO] [stdout]    44       │-                                    _,
[INFO] [stdout]    45       │-                                >(
[INFO] [stdout]    46       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    47       │-                                    (),
[INFO] [stdout]    48       │-                                    state,
[INFO] [stdout]    49       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    50       │-                                        0u32,
[INFO] [stdout]    51       │-                                        false,
[INFO] [stdout]    52       │-                                        |state| match state {
[INFO] [stdout]    53       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    54       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    55       │-                                        },
[INFO] [stdout]    56       │-                                    ),
[INFO] [stdout]    57       │-                                    source,
[INFO] [stdout]    58       │-                                    "0",
[INFO] [stdout]    59       │-                                )?))
[INFO] [stdout]    60       │-                            },
[INFO] [stdout]    61       │-                        )
[INFO] [stdout]    62       │-                    }
[INFO] [stdout]    63       │-                    "Expression_Neg" => {
[INFO] [stdout]    64       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    65       │-                            stringify!(Expression::Neg),
[INFO] [stdout]    66       │-                            node,
[INFO] [stdout]    67       │-                            move |state| {
[INFO] [stdout]    68       │-                                Ok(Expression::Neg(
[INFO] [stdout]    69       │-                                    ::ritter::__private::extract_field::<(), _>(
[INFO] [stdout]    70       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    71       │-                                        (),
[INFO] [stdout]    72       │-                                        state,
[INFO] [stdout]    73       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    74       │-                                            1u32,
[INFO] [stdout]    75       │-                                            false,
[INFO] [stdout]    76       │-                                            |state| match state {
[INFO] [stdout]    77       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    78       │-                                                    "-", false, false,
[INFO] [stdout]    79       │-                                                ),
[INFO] [stdout]    80       │-                                                1u32 => {
[INFO] [stdout]    81       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]    82       │-                                                }
[INFO] [stdout]    83       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    84       │-                                            },
[INFO] [stdout]    85       │-                                        ),
[INFO] [stdout]    86       │-                                        source,
[INFO] [stdout]    87       │-                                        "0",
[INFO] [stdout]    88       │-                                    )?,
[INFO] [stdout]    89       │-                                    ::ritter::__private::extract_field::<Box<Expression>, _>(
[INFO] [stdout]    90       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    91       │-                                        (),
[INFO] [stdout]    92       │-                                        state,
[INFO] [stdout]    93       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    94       │-                                            1u32,
[INFO] [stdout]    95       │-                                            false,
[INFO] [stdout]    96       │-                                            |state| match state {
[INFO] [stdout]    97       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    98       │-                                                    "Expression",
[INFO] [stdout]    99       │-                                                    true,
[INFO] [stdout]   100       │-                                                    false,
[INFO] [stdout]   101       │-                                                ),
[INFO] [stdout]   102       │-                                                1u32 => {
[INFO] [stdout]   103       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]   104       │-                                                }
[INFO] [stdout]   105       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   106       │-                                            },
[INFO] [stdout]   107       │-                                        ),
[INFO] [stdout]   108       │-                                        source,
[INFO] [stdout]   109       │-                                        "1",
[INFO] [stdout]   110       │-                                    )?,
[INFO] [stdout]   111       │-                                ))
[INFO] [stdout]   112       │-                            },
[INFO] [stdout]   113       │-                        )
[INFO] [stdout]   114       │-                    }
[INFO] [stdout]   115       │-                    k => {
[INFO] [stdout]   116       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]   117       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]   118       │-                        }
[INFO] [stdout]   119       │-                    }
[INFO] [stdout]   120       │-                }
[INFO] [stdout]   121       │-            }
[INFO] [stdout]   122       │-        }
[INFO] [stdout]   123       │-    }
[INFO] [stdout]   124       │-    impl ::ritter::rule::Rule for Expression {
[INFO] [stdout]   125       │-        const RULE_NAME: &'static str = "Expression";
[INFO] [stdout]   126       │-        fn produce_ast() -> String {
[INFO] [stdout]   127       │-            String::new()
[INFO] [stdout]   128       │-        }
[INFO] [stdout]   129       │-    }
[INFO] [stdout]   130       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for Expression { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Expression () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Expression () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Expression`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Expression { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expression_Number" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Number) , node , move | state | Ok (Expression :: Number (:: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , "Expression_Neg" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Neg) , node , move | state | Ok (Expression :: Neg (:: ritter :: __private :: extract_field :: < () , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("-" , false , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ? , :: ritter :: __private :: extract_field :: < Box < Expression > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Expression" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "1") ?))) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expression { const RULE_NAME : & 'static str = "Expression" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::enum_recursive' (488) panicked at src/lib.rs:170:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__enum_recursive.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c15a5 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c15a5 - ritter_macro[598f42a7b31a4841]::tests::enum_recursive
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:170:9
[INFO] [stdout]   22:     0x5b00da7ba75d - ritter_macro[598f42a7b31a4841]::tests::enum_recursive::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:169:28
[INFO] [stdout]   23:     0x5b00da7dba56 - <ritter_macro[598f42a7b31a4841]::tests::enum_recursive::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::enum_with_named_field stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__enum_with_named_field.snap
[INFO] [stdout] Snapshot: enum_with_named_field
[INFO] [stdout] Source: src/lib.rs:368
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub enum Expr
[INFO] [stdout]         {
[INFO] [stdout]             Number(#[leaf(pattern(r"\d+"))] u32), Neg
[INFO] [stdout]             { #[leaf("!")] _bang: (), value: Box<Expr>, }
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for Expr {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_Expr() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_Expr() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`Expr`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for Expr {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            let mut cursor = node.walk();
[INFO] [stdout]    31       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    32       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    33       │-            }
[INFO] [stdout]    34       │-            loop {
[INFO] [stdout]    35       │-                let node = cursor.node();
[INFO] [stdout]    36       │-                match node.kind() {
[INFO] [stdout]    37       │-                    "Expr_Number" => {
[INFO] [stdout]    38       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    39       │-                            stringify!(Expr::Number),
[INFO] [stdout]    40       │-                            node,
[INFO] [stdout]    41       │-                            move |state| {
[INFO] [stdout]    42       │-                                Ok(Expr::Number(::ritter::__private::extract_field::<u32, _>(
[INFO] [stdout]    43       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    44       │-                                    (),
[INFO] [stdout]    45       │-                                    state,
[INFO] [stdout]    46       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    47       │-                                        0u32,
[INFO] [stdout]    48       │-                                        false,
[INFO] [stdout]    49       │-                                        |state| match state {
[INFO] [stdout]    50       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    51       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    52       │-                                        },
[INFO] [stdout]    53       │-                                    ),
[INFO] [stdout]    54       │-                                    source,
[INFO] [stdout]    55       │-                                    "0",
[INFO] [stdout]    56       │-                                )?))
[INFO] [stdout]    57       │-                            },
[INFO] [stdout]    58       │-                        )
[INFO] [stdout]    59       │-                    }
[INFO] [stdout]    60       │-                    "Expr_Neg" => {
[INFO] [stdout]    61       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    62       │-                            stringify!(Expr::Neg),
[INFO] [stdout]    63       │-                            node,
[INFO] [stdout]    64       │-                            move |state| {
[INFO] [stdout]    65       │-                                Ok(Expr::Neg {
[INFO] [stdout]    66       │-                                    _bang: ::ritter::__private::extract_field::<(), _>(
[INFO] [stdout]    67       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    68       │-                                        (),
[INFO] [stdout]    69       │-                                        state,
[INFO] [stdout]    70       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    71       │-                                            1u32,
[INFO] [stdout]    72       │-                                            false,
[INFO] [stdout]    73       │-                                            |state| match state {
[INFO] [stdout]    74       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    75       │-                                                    "!", false, false,
[INFO] [stdout]    76       │-                                                ),
[INFO] [stdout]    77       │-                                                1u32 => {
[INFO] [stdout]    78       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]    79       │-                                                }
[INFO] [stdout]    80       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    81       │-                                            },
[INFO] [stdout]    82       │-                                        ),
[INFO] [stdout]    83       │-                                        source,
[INFO] [stdout]    84       │-                                        "_bang",
[INFO] [stdout]    85       │-                                    )?,
[INFO] [stdout]    86       │-                                    value: ::ritter::__private::extract_field::<Box<Expr>, _>(
[INFO] [stdout]    87       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    88       │-                                        (),
[INFO] [stdout]    89       │-                                        state,
[INFO] [stdout]    90       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    91       │-                                            1u32,
[INFO] [stdout]    92       │-                                            false,
[INFO] [stdout]    93       │-                                            |state| match state {
[INFO] [stdout]    94       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    95       │-                                                    "Expr", true, false,
[INFO] [stdout]    96       │-                                                ),
[INFO] [stdout]    97       │-                                                1u32 => {
[INFO] [stdout]    98       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]    99       │-                                                }
[INFO] [stdout]   100       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   101       │-                                            },
[INFO] [stdout]   102       │-                                        ),
[INFO] [stdout]   103       │-                                        source,
[INFO] [stdout]   104       │-                                        "value",
[INFO] [stdout]   105       │-                                    )?,
[INFO] [stdout]   106       │-                                })
[INFO] [stdout]   107       │-                            },
[INFO] [stdout]   108       │-                        )
[INFO] [stdout]   109       │-                    }
[INFO] [stdout]   110       │-                    k => {
[INFO] [stdout]   111       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]   112       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]   113       │-                        }
[INFO] [stdout]   114       │-                    }
[INFO] [stdout]   115       │-                }
[INFO] [stdout]   116       │-            }
[INFO] [stdout]   117       │-        }
[INFO] [stdout]   118       │-    }
[INFO] [stdout]   119       │-    impl ::ritter::rule::Rule for Expr {
[INFO] [stdout]   120       │-        const RULE_NAME: &'static str = "Expr";
[INFO] [stdout]   121       │-        fn produce_ast() -> String {
[INFO] [stdout]   122       │-            String::new()
[INFO] [stdout]   123       │-        }
[INFO] [stdout]   124       │-    }
[INFO] [stdout]   125       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for Expr { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Expr () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Expr () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Expr`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Expr { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expr_Number" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expr :: Number) , node , move | state | Ok (Expr :: Number (:: ritter :: __private :: extract_field :: < u32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , "Expr_Neg" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expr :: Neg) , node , move | state | Ok (Expr :: Neg { _bang : :: ritter :: __private :: extract_field :: < () , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("!" , false , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "_bang") ? , value : :: ritter :: __private :: extract_field :: < Box < Expr > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Expr" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "value") ? })) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expr { const RULE_NAME : & 'static str = "Expr" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::enum_with_named_field' (490) panicked at src/lib.rs:368:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__enum_with_named_field.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c5d8c - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c5d8c - ritter_macro[598f42a7b31a4841]::tests::enum_with_named_field
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:368:9
[INFO] [stdout]   22:     0x5b00da7ba84d - ritter_macro[598f42a7b31a4841]::tests::enum_with_named_field::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:367:35
[INFO] [stdout]   23:     0x5b00da7dbad6 - <ritter_macro[598f42a7b31a4841]::tests::enum_with_named_field::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::struct_optional stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__struct_optional.snap
[INFO] [stdout] Snapshot: struct_optional
[INFO] [stdout] Source: src/lib.rs:313
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub struct Language
[INFO] [stdout]         { #[leaf(re(r"\d+"))] v: Option<i32>, t: Option<Number>, }
[INFO] [stdout]         #[derive(ritter::Rule)] pub struct Number
[INFO] [stdout]         { #[leaf(re(r"\d+"))] v: i32 }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for Language {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_Language() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_Language() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`Language`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for Language {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    31       │-                stringify!(Language),
[INFO] [stdout]    32       │-                node,
[INFO] [stdout]    33       │-                move |state| {
[INFO] [stdout]    34       │-                    Ok(Language {
[INFO] [stdout]    35       │-                        v: ::ritter::__private::extract_field::<Option<i32>, _>(
[INFO] [stdout]    36       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    37       │-                            (),
[INFO] [stdout]    38       │-                            state,
[INFO] [stdout]    39       │-                            ::ritter::extract::ExtractFieldContext::new(0u32, true, |state| {
[INFO] [stdout]    40       │-                                match state {
[INFO] [stdout]    41       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    42       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    43       │-                                }
[INFO] [stdout]    44       │-                            }),
[INFO] [stdout]    45       │-                            source,
[INFO] [stdout]    46       │-                            "v",
[INFO] [stdout]    47       │-                        )?,
[INFO] [stdout]    48       │-                        t: ::ritter::__private::extract_field::<Option<Number>, _>(
[INFO] [stdout]    49       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    50       │-                            (),
[INFO] [stdout]    51       │-                            state,
[INFO] [stdout]    52       │-                            ::ritter::extract::ExtractFieldContext::new(1u32, true, |state| {
[INFO] [stdout]    53       │-                                match state {
[INFO] [stdout]    54       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    55       │-                                        "Number", true, false,
[INFO] [stdout]    56       │-                                    ),
[INFO] [stdout]    57       │-                                    1u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    58       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    59       │-                                }
[INFO] [stdout]    60       │-                            }),
[INFO] [stdout]    61       │-                            source,
[INFO] [stdout]    62       │-                            "t",
[INFO] [stdout]    63       │-                        )?,
[INFO] [stdout]    64       │-                    })
[INFO] [stdout]    65       │-                },
[INFO] [stdout]    66       │-            )
[INFO] [stdout]    67       │-        }
[INFO] [stdout]    68       │-    }
[INFO] [stdout]    69       │-    impl ::ritter::rule::Rule for Language {
[INFO] [stdout]    70       │-        const RULE_NAME: &'static str = "Language";
[INFO] [stdout]    71       │-        fn produce_ast() -> String {
[INFO] [stdout]    72       │-            String::new()
[INFO] [stdout]    73       │-        }
[INFO] [stdout]    74       │-    }
[INFO] [stdout]    75       │-    impl ::ritter::Extract for Number {
[INFO] [stdout]    76       │-        type Output = Self;
[INFO] [stdout]    77       │-        type LeafFn = ();
[INFO] [stdout]    78       │-        #[allow(non_snake_case)]
[INFO] [stdout]    79       │-        fn extract<'tree>(
[INFO] [stdout]    80       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    81       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    82       │-            source: &[u8],
[INFO] [stdout]    83       │-            _l: Self::LeafFn,
[INFO] [stdout]    84       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    85       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    86       │-            ::ritter::__private::extract_struct_or_variant(stringify!(Number), node, move |state| {
[INFO] [stdout]    87       │-                Ok(Number {
[INFO] [stdout]    88       │-                    v: ::ritter::__private::extract_field::<i32, _>(
[INFO] [stdout]    89       │-                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    90       │-                        (),
[INFO] [stdout]    91       │-                        state,
[INFO] [stdout]    92       │-                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    93       │-                            0u32,
[INFO] [stdout]    94       │-                            false,
[INFO] [stdout]    95       │-                            |state| match state {
[INFO] [stdout]    96       │-                                0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    97       │-                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    98       │-                            },
[INFO] [stdout]    99       │-                        ),
[INFO] [stdout]   100       │-                        source,
[INFO] [stdout]   101       │-                        "v",
[INFO] [stdout]   102       │-                    )?,
[INFO] [stdout]   103       │-                })
[INFO] [stdout]   104       │-            })
[INFO] [stdout]   105       │-        }
[INFO] [stdout]   106       │-    }
[INFO] [stdout]   107       │-    impl ::ritter::rule::Rule for Number {
[INFO] [stdout]   108       │-        const RULE_NAME: &'static str = "Number";
[INFO] [stdout]   109       │-        fn produce_ast() -> String {
[INFO] [stdout]   110       │-            String::new()
[INFO] [stdout]   111       │-        }
[INFO] [stdout]   112       │-    }
[INFO] [stdout]   113       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for Language { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Language () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Language () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Language`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Language { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Language) , node , move | state | Ok (Language { v : :: ritter :: __private :: extract_field :: < Option < i32 > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , true , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "v") ? , t : :: ritter :: __private :: extract_field :: < Option < Number > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , true , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Number" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "t") ? })) } } impl :: ritter :: rule :: Rule for Language { const RULE_NAME : & 'static str = "Language" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Number { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Number) , node , move | state | Ok (Number { v : :: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "v") ? })) } } impl :: ritter :: rule :: Rule for Number { const RULE_NAME : & 'static str = "Number" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::struct_optional' (496) panicked at src/lib.rs:313:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__struct_optional.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c3db8 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c3db8 - ritter_macro[598f42a7b31a4841]::tests::struct_optional
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:313:9
[INFO] [stdout]   22:     0x5b00da7ba7dd - ritter_macro[598f42a7b31a4841]::tests::struct_optional::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:312:29
[INFO] [stdout]   23:     0x5b00da7dba96 - <ritter_macro[598f42a7b31a4841]::tests::struct_optional::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::struct_extra stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__struct_extra.snap
[INFO] [stdout] Snapshot: struct_extra
[INFO] [stdout] Source: src/lib.rs:226
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub enum Expression
[INFO] [stdout]         { Number(#[leaf(re(r"\d+"))] i32,), } #[derive(Rule)] #[extra] struct
[INFO] [stdout]         Whitespace { #[leaf(pattern(r"\s"))] _whitespace: (), }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for Expression {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_Expression() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_Expression() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`Expression`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for Expression {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            let mut cursor = node.walk();
[INFO] [stdout]    31       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    32       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    33       │-            }
[INFO] [stdout]    34       │-            loop {
[INFO] [stdout]    35       │-                let node = cursor.node();
[INFO] [stdout]    36       │-                match node.kind() {
[INFO] [stdout]    37       │-                    "Expression_Number" => {
[INFO] [stdout]    38       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    39       │-                            stringify!(Expression::Number),
[INFO] [stdout]    40       │-                            node,
[INFO] [stdout]    41       │-                            move |state| {
[INFO] [stdout]    42       │-                                Ok(Expression::Number(::ritter::__private::extract_field::<
[INFO] [stdout]    43       │-                                    i32,
[INFO] [stdout]    44       │-                                    _,
[INFO] [stdout]    45       │-                                >(
[INFO] [stdout]    46       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    47       │-                                    (),
[INFO] [stdout]    48       │-                                    state,
[INFO] [stdout]    49       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    50       │-                                        0u32,
[INFO] [stdout]    51       │-                                        false,
[INFO] [stdout]    52       │-                                        |state| match state {
[INFO] [stdout]    53       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    54       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    55       │-                                        },
[INFO] [stdout]    56       │-                                    ),
[INFO] [stdout]    57       │-                                    source,
[INFO] [stdout]    58       │-                                    "0",
[INFO] [stdout]    59       │-                                )?))
[INFO] [stdout]    60       │-                            },
[INFO] [stdout]    61       │-                        )
[INFO] [stdout]    62       │-                    }
[INFO] [stdout]    63       │-                    k => {
[INFO] [stdout]    64       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]    65       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]    66       │-                        }
[INFO] [stdout]    67       │-                    }
[INFO] [stdout]    68       │-                }
[INFO] [stdout]    69       │-            }
[INFO] [stdout]    70       │-        }
[INFO] [stdout]    71       │-    }
[INFO] [stdout]    72       │-    impl ::ritter::rule::Rule for Expression {
[INFO] [stdout]    73       │-        const RULE_NAME: &'static str = "Expression";
[INFO] [stdout]    74       │-        fn produce_ast() -> String {
[INFO] [stdout]    75       │-            String::new()
[INFO] [stdout]    76       │-        }
[INFO] [stdout]    77       │-    }
[INFO] [stdout]    78       │-    impl ::ritter::Extract for Whitespace {
[INFO] [stdout]    79       │-        type Output = Self;
[INFO] [stdout]    80       │-        type LeafFn = ();
[INFO] [stdout]    81       │-        #[allow(non_snake_case)]
[INFO] [stdout]    82       │-        fn extract<'tree>(
[INFO] [stdout]    83       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    84       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    85       │-            source: &[u8],
[INFO] [stdout]    86       │-            _l: Self::LeafFn,
[INFO] [stdout]    87       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    88       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    89       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    90       │-                stringify!(Whitespace),
[INFO] [stdout]    91       │-                node,
[INFO] [stdout]    92       │-                move |state| {
[INFO] [stdout]    93       │-                    Ok(Whitespace {
[INFO] [stdout]    94       │-                        _whitespace: ::ritter::__private::extract_field::<(), _>(
[INFO] [stdout]    95       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    96       │-                            (),
[INFO] [stdout]    97       │-                            state,
[INFO] [stdout]    98       │-                            ::ritter::extract::ExtractFieldContext::new(0u32, false, |state| {
[INFO] [stdout]    99       │-                                match state {
[INFO] [stdout]   100       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]   101       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   102       │-                                }
[INFO] [stdout]   103       │-                            }),
[INFO] [stdout]   104       │-                            source,
[INFO] [stdout]   105       │-                            "_whitespace",
[INFO] [stdout]   106       │-                        )?,
[INFO] [stdout]   107       │-                    })
[INFO] [stdout]   108       │-                },
[INFO] [stdout]   109       │-            )
[INFO] [stdout]   110       │-        }
[INFO] [stdout]   111       │-    }
[INFO] [stdout]   112       │-    impl ::ritter::rule::Rule for Whitespace {
[INFO] [stdout]   113       │-        const RULE_NAME: &'static str = "Whitespace";
[INFO] [stdout]   114       │-        fn produce_ast() -> String {
[INFO] [stdout]   115       │-            String::new()
[INFO] [stdout]   116       │-        }
[INFO] [stdout]   117       │-    }
[INFO] [stdout]   118       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for Expression { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Expression () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Expression () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Expression`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Expression { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expression_Number" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Number) , node , move | state | Ok (Expression :: Number (:: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expression { const RULE_NAME : & 'static str = "Expression" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Whitespace { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Whitespace) , node , move | state | Ok (Whitespace { _whitespace : :: ritter :: __private :: extract_field :: < () , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "_whitespace") ? })) } } impl :: ritter :: rule :: Rule for Whitespace { const RULE_NAME : & 'static str = "Whitespace" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::struct_extra' (495) panicked at src/lib.rs:226:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__struct_extra.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7bdf57 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7bdf57 - ritter_macro[598f42a7b31a4841]::tests::struct_extra
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:226:9
[INFO] [stdout]   22:     0x5b00da7ba69d - ritter_macro[598f42a7b31a4841]::tests::struct_extra::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:225:26
[INFO] [stdout]   23:     0x5b00da7db9f6 - <ritter_macro[598f42a7b31a4841]::tests::struct_extra::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::grammar_unboxed_field stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__grammar_unboxed_field.snap
[INFO] [stdout] Snapshot: grammar_unboxed_field
[INFO] [stdout] Source: src/lib.rs:254
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub struct Language
[INFO] [stdout]         { e: Expression, } #[derive(ritter::Rule)] pub enum Expression
[INFO] [stdout]         { Number(#[leaf(re(r"\d+"))] i32), }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for Language {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_Language() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_Language() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`Language`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for Language {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    31       │-                stringify!(Language),
[INFO] [stdout]    32       │-                node,
[INFO] [stdout]    33       │-                move |state| {
[INFO] [stdout]    34       │-                    Ok(Language {
[INFO] [stdout]    35       │-                        e: ::ritter::__private::extract_field::<Expression, _>(
[INFO] [stdout]    36       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    37       │-                            (),
[INFO] [stdout]    38       │-                            state,
[INFO] [stdout]    39       │-                            ::ritter::extract::ExtractFieldContext::new(1u32, false, |state| {
[INFO] [stdout]    40       │-                                match state {
[INFO] [stdout]    41       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    42       │-                                        "Expression",
[INFO] [stdout]    43       │-                                        true,
[INFO] [stdout]    44       │-                                        false,
[INFO] [stdout]    45       │-                                    ),
[INFO] [stdout]    46       │-                                    1u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    47       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    48       │-                                }
[INFO] [stdout]    49       │-                            }),
[INFO] [stdout]    50       │-                            source,
[INFO] [stdout]    51       │-                            "e",
[INFO] [stdout]    52       │-                        )?,
[INFO] [stdout]    53       │-                    })
[INFO] [stdout]    54       │-                },
[INFO] [stdout]    55       │-            )
[INFO] [stdout]    56       │-        }
[INFO] [stdout]    57       │-    }
[INFO] [stdout]    58       │-    impl ::ritter::rule::Rule for Language {
[INFO] [stdout]    59       │-        const RULE_NAME: &'static str = "Language";
[INFO] [stdout]    60       │-        fn produce_ast() -> String {
[INFO] [stdout]    61       │-            String::new()
[INFO] [stdout]    62       │-        }
[INFO] [stdout]    63       │-    }
[INFO] [stdout]    64       │-    impl ::ritter::Extract for Expression {
[INFO] [stdout]    65       │-        type Output = Self;
[INFO] [stdout]    66       │-        type LeafFn = ();
[INFO] [stdout]    67       │-        #[allow(non_snake_case)]
[INFO] [stdout]    68       │-        fn extract<'tree>(
[INFO] [stdout]    69       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    70       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    71       │-            source: &[u8],
[INFO] [stdout]    72       │-            _l: Self::LeafFn,
[INFO] [stdout]    73       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    74       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    75       │-            let mut cursor = node.walk();
[INFO] [stdout]    76       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    77       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    78       │-            }
[INFO] [stdout]    79       │-            loop {
[INFO] [stdout]    80       │-                let node = cursor.node();
[INFO] [stdout]    81       │-                match node.kind() {
[INFO] [stdout]    82       │-                    "Expression_Number" => {
[INFO] [stdout]    83       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    84       │-                            stringify!(Expression::Number),
[INFO] [stdout]    85       │-                            node,
[INFO] [stdout]    86       │-                            move |state| {
[INFO] [stdout]    87       │-                                Ok(Expression::Number(::ritter::__private::extract_field::<
[INFO] [stdout]    88       │-                                    i32,
[INFO] [stdout]    89       │-                                    _,
[INFO] [stdout]    90       │-                                >(
[INFO] [stdout]    91       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    92       │-                                    (),
[INFO] [stdout]    93       │-                                    state,
[INFO] [stdout]    94       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    95       │-                                        0u32,
[INFO] [stdout]    96       │-                                        false,
[INFO] [stdout]    97       │-                                        |state| match state {
[INFO] [stdout]    98       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    99       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   100       │-                                        },
[INFO] [stdout]   101       │-                                    ),
[INFO] [stdout]   102       │-                                    source,
[INFO] [stdout]   103       │-                                    "0",
[INFO] [stdout]   104       │-                                )?))
[INFO] [stdout]   105       │-                            },
[INFO] [stdout]   106       │-                        )
[INFO] [stdout]   107       │-                    }
[INFO] [stdout]   108       │-                    k => {
[INFO] [stdout]   109       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]   110       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]   111       │-                        }
[INFO] [stdout]   112       │-                    }
[INFO] [stdout]   113       │-                }
[INFO] [stdout]   114       │-            }
[INFO] [stdout]   115       │-        }
[INFO] [stdout]   116       │-    }
[INFO] [stdout]   117       │-    impl ::ritter::rule::Rule for Expression {
[INFO] [stdout]   118       │-        const RULE_NAME: &'static str = "Expression";
[INFO] [stdout]   119       │-        fn produce_ast() -> String {
[INFO] [stdout]   120       │-            String::new()
[INFO] [stdout]   121       │-        }
[INFO] [stdout]   122       │-    }
[INFO] [stdout]   123       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for Language { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Language () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Language () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Language`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Language { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Language) , node , move | state | Ok (Language { e : :: ritter :: __private :: extract_field :: < Expression , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Expression" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "e") ? })) } } impl :: ritter :: rule :: Rule for Language { const RULE_NAME : & 'static str = "Language" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Expression { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expression_Number" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Number) , node , move | state | Ok (Expression :: Number (:: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expression { const RULE_NAME : & 'static str = "Expression" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::grammar_unboxed_field' (493) panicked at src/lib.rs:254:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__grammar_unboxed_field.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c6d75 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c6d75 - ritter_macro[598f42a7b31a4841]::tests::grammar_unboxed_field
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:254:9
[INFO] [stdout]   22:     0x5b00da7ba88d - ritter_macro[598f42a7b31a4841]::tests::grammar_unboxed_field::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:253:35
[INFO] [stdout]   23:     0x5b00da7dbaf6 - <ritter_macro[598f42a7b31a4841]::tests::grammar_unboxed_field::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::struct_repeat stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__struct_repeat.snap
[INFO] [stdout] Snapshot: struct_repeat
[INFO] [stdout] Source: src/lib.rs:281
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub struct NumberList
[INFO] [stdout]         { numbers: Vec<Number>, } #[derive(ritter::Rule)] pub struct Number
[INFO] [stdout]         { #[leaf(re(r"\d+"))] v: i32 } #[derive(ritter::Rule)] #[extra] struct
[INFO] [stdout]         Whitespace { #[leaf(pattern(r"\s"))] _whitespace: (), }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for NumberList {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_NumberList() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_NumberList() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`NumberList`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for NumberList {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    31       │-                stringify!(NumberList),
[INFO] [stdout]    32       │-                node,
[INFO] [stdout]    33       │-                move |state| {
[INFO] [stdout]    34       │-                    Ok(NumberList {
[INFO] [stdout]    35       │-                        numbers: ::ritter::__private::extract_field::<Vec<Number>, _>(
[INFO] [stdout]    36       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    37       │-                            (),
[INFO] [stdout]    38       │-                            state,
[INFO] [stdout]    39       │-                            ::ritter::extract::ExtractFieldContext::new(2u32, true, |state| {
[INFO] [stdout]    40       │-                                match state {
[INFO] [stdout]    41       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    42       │-                                        "Number", true, false,
[INFO] [stdout]    43       │-                                    ),
[INFO] [stdout]    44       │-                                    1u32 => ::ritter::extract::ExtractFieldState::Repeat1,
[INFO] [stdout]    45       │-                                    2u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    46       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    47       │-                                }
[INFO] [stdout]    48       │-                            }),
[INFO] [stdout]    49       │-                            source,
[INFO] [stdout]    50       │-                            "numbers",
[INFO] [stdout]    51       │-                        )?,
[INFO] [stdout]    52       │-                    })
[INFO] [stdout]    53       │-                },
[INFO] [stdout]    54       │-            )
[INFO] [stdout]    55       │-        }
[INFO] [stdout]    56       │-    }
[INFO] [stdout]    57       │-    impl ::ritter::rule::Rule for NumberList {
[INFO] [stdout]    58       │-        const RULE_NAME: &'static str = "NumberList";
[INFO] [stdout]    59       │-        fn produce_ast() -> String {
[INFO] [stdout]    60       │-            String::new()
[INFO] [stdout]    61       │-        }
[INFO] [stdout]    62       │-    }
[INFO] [stdout]    63       │-    impl ::ritter::Extract for Number {
[INFO] [stdout]    64       │-        type Output = Self;
[INFO] [stdout]    65       │-        type LeafFn = ();
[INFO] [stdout]    66       │-        #[allow(non_snake_case)]
[INFO] [stdout]    67       │-        fn extract<'tree>(
[INFO] [stdout]    68       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    69       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    70       │-            source: &[u8],
[INFO] [stdout]    71       │-            _l: Self::LeafFn,
[INFO] [stdout]    72       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    73       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    74       │-            ::ritter::__private::extract_struct_or_variant(stringify!(Number), node, move |state| {
[INFO] [stdout]    75       │-                Ok(Number {
[INFO] [stdout]    76       │-                    v: ::ritter::__private::extract_field::<i32, _>(
[INFO] [stdout]    77       │-                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    78       │-                        (),
[INFO] [stdout]    79       │-                        state,
[INFO] [stdout]    80       │-                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    81       │-                            0u32,
[INFO] [stdout]    82       │-                            false,
[INFO] [stdout]    83       │-                            |state| match state {
[INFO] [stdout]    84       │-                                0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    85       │-                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    86       │-                            },
[INFO] [stdout]    87       │-                        ),
[INFO] [stdout]    88       │-                        source,
[INFO] [stdout]    89       │-                        "v",
[INFO] [stdout]    90       │-                    )?,
[INFO] [stdout]    91       │-                })
[INFO] [stdout]    92       │-            })
[INFO] [stdout]    93       │-        }
[INFO] [stdout]    94       │-    }
[INFO] [stdout]    95       │-    impl ::ritter::rule::Rule for Number {
[INFO] [stdout]    96       │-        const RULE_NAME: &'static str = "Number";
[INFO] [stdout]    97       │-        fn produce_ast() -> String {
[INFO] [stdout]    98       │-            String::new()
[INFO] [stdout]    99       │-        }
[INFO] [stdout]   100       │-    }
[INFO] [stdout]   101       │-    impl ::ritter::Extract for Whitespace {
[INFO] [stdout]   102       │-        type Output = Self;
[INFO] [stdout]   103       │-        type LeafFn = ();
[INFO] [stdout]   104       │-        #[allow(non_snake_case)]
[INFO] [stdout]   105       │-        fn extract<'tree>(
[INFO] [stdout]   106       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]   107       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]   108       │-            source: &[u8],
[INFO] [stdout]   109       │-            _l: Self::LeafFn,
[INFO] [stdout]   110       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]   111       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]   112       │-            ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]   113       │-                stringify!(Whitespace),
[INFO] [stdout]   114       │-                node,
[INFO] [stdout]   115       │-                move |state| {
[INFO] [stdout]   116       │-                    Ok(Whitespace {
[INFO] [stdout]   117       │-                        _whitespace: ::ritter::__private::extract_field::<(), _>(
[INFO] [stdout]   118       │-                            ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]   119       │-                            (),
[INFO] [stdout]   120       │-                            state,
[INFO] [stdout]   121       │-                            ::ritter::extract::ExtractFieldContext::new(0u32, false, |state| {
[INFO] [stdout]   122       │-                                match state {
[INFO] [stdout]   123       │-                                    0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]   124       │-                                    _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   125       │-                                }
[INFO] [stdout]   126       │-                            }),
[INFO] [stdout]   127       │-                            source,
[INFO] [stdout]   128       │-                            "_whitespace",
[INFO] [stdout]   129       │-                        )?,
[INFO] [stdout]   130       │-                    })
[INFO] [stdout]   131       │-                },
[INFO] [stdout]   132       │-            )
[INFO] [stdout]   133       │-        }
[INFO] [stdout]   134       │-    }
[INFO] [stdout]   135       │-    impl ::ritter::rule::Rule for Whitespace {
[INFO] [stdout]   136       │-        const RULE_NAME: &'static str = "Whitespace";
[INFO] [stdout]   137       │-        fn produce_ast() -> String {
[INFO] [stdout]   138       │-            String::new()
[INFO] [stdout]   139       │-        }
[INFO] [stdout]   140       │-    }
[INFO] [stdout]   141       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for NumberList { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_NumberList () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_NumberList () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`NumberList`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for NumberList { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (NumberList) , node , move | state | Ok (NumberList { numbers : :: ritter :: __private :: extract_field :: < Vec < Number > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (2u32 , true , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Number" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Repeat1 , 2u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "numbers") ? })) } } impl :: ritter :: rule :: Rule for NumberList { const RULE_NAME : & 'static str = "NumberList" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Number { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Number) , node , move | state | Ok (Number { v : :: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "v") ? })) } } impl :: ritter :: rule :: Rule for Number { const RULE_NAME : & 'static str = "Number" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: Extract for Whitespace { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Whitespace) , node , move | state | Ok (Whitespace { _whitespace : :: ritter :: __private :: extract_field :: < () , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "_whitespace") ? })) } } impl :: ritter :: rule :: Rule for Whitespace { const RULE_NAME : & 'static str = "Whitespace" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::struct_repeat' (497) panicked at src/lib.rs:281:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__struct_repeat.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7bf44d - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7bf44d - ritter_macro[598f42a7b31a4841]::tests::struct_repeat
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:281:9
[INFO] [stdout]   22:     0x5b00da7ba6dd - ritter_macro[598f42a7b31a4841]::tests::struct_repeat::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:280:27
[INFO] [stdout]   23:     0x5b00da7dba16 - <ritter_macro[598f42a7b31a4841]::tests::struct_repeat::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::enum_transformed_fields stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__enum_transformed_fields.snap
[INFO] [stdout] Snapshot: enum_transformed_fields
[INFO] [stdout] Source: src/lib.rs:147
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         use ritter::Rule; #[derive(Rule)] #[language] pub enum Expression
[INFO] [stdout]         { Number(#[leaf(re(r"\d+"))] i32), }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    use ritter::Rule;
[INFO] [stdout]     3       │-    impl ::ritter::rule::Language for Expression {
[INFO] [stdout]     4       │-        fn produce_grammar() -> String {
[INFO] [stdout]     5       │-            String::new()
[INFO] [stdout]     6       │-        }
[INFO] [stdout]     7       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     8       │-            unsafe extern "C" {
[INFO] [stdout]     9       │-                fn tree_sitter_Expression() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]    10       │-            }
[INFO] [stdout]    11       │-            unsafe { tree_sitter_Expression() }
[INFO] [stdout]    12       │-        }
[INFO] [stdout]    13       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    14       │-        #[doc = "[`Expression`]"]
[INFO] [stdout]    15       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    16       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    17       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    18       │-        }
[INFO] [stdout]    19       │-    }
[INFO] [stdout]    20       │-    impl ::ritter::Extract for Expression {
[INFO] [stdout]    21       │-        type Output = Self;
[INFO] [stdout]    22       │-        type LeafFn = ();
[INFO] [stdout]    23       │-        #[allow(non_snake_case)]
[INFO] [stdout]    24       │-        fn extract<'tree>(
[INFO] [stdout]    25       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    26       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    27       │-            source: &[u8],
[INFO] [stdout]    28       │-            _l: Self::LeafFn,
[INFO] [stdout]    29       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    30       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    31       │-            let mut cursor = node.walk();
[INFO] [stdout]    32       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    33       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    34       │-            }
[INFO] [stdout]    35       │-            loop {
[INFO] [stdout]    36       │-                let node = cursor.node();
[INFO] [stdout]    37       │-                match node.kind() {
[INFO] [stdout]    38       │-                    "Expression_Number" => {
[INFO] [stdout]    39       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    40       │-                            stringify!(Expression::Number),
[INFO] [stdout]    41       │-                            node,
[INFO] [stdout]    42       │-                            move |state| {
[INFO] [stdout]    43       │-                                Ok(Expression::Number(::ritter::__private::extract_field::<
[INFO] [stdout]    44       │-                                    i32,
[INFO] [stdout]    45       │-                                    _,
[INFO] [stdout]    46       │-                                >(
[INFO] [stdout]    47       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    48       │-                                    (),
[INFO] [stdout]    49       │-                                    state,
[INFO] [stdout]    50       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    51       │-                                        0u32,
[INFO] [stdout]    52       │-                                        false,
[INFO] [stdout]    53       │-                                        |state| match state {
[INFO] [stdout]    54       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    55       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    56       │-                                        },
[INFO] [stdout]    57       │-                                    ),
[INFO] [stdout]    58       │-                                    source,
[INFO] [stdout]    59       │-                                    "0",
[INFO] [stdout]    60       │-                                )?))
[INFO] [stdout]    61       │-                            },
[INFO] [stdout]    62       │-                        )
[INFO] [stdout]    63       │-                    }
[INFO] [stdout]    64       │-                    k => {
[INFO] [stdout]    65       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]    66       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]    67       │-                        }
[INFO] [stdout]    68       │-                    }
[INFO] [stdout]    69       │-                }
[INFO] [stdout]    70       │-            }
[INFO] [stdout]    71       │-        }
[INFO] [stdout]    72       │-    }
[INFO] [stdout]    73       │-    impl ::ritter::rule::Rule for Expression {
[INFO] [stdout]    74       │-        const RULE_NAME: &'static str = "Expression";
[INFO] [stdout]    75       │-        fn produce_ast() -> String {
[INFO] [stdout]    76       │-            String::new()
[INFO] [stdout]    77       │-        }
[INFO] [stdout]    78       │-    }
[INFO] [stdout]    79       │-}
[INFO] [stdout]           1 │+mod grammar { use ritter :: Rule ; impl :: ritter :: rule :: Language for Expression { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Expression () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Expression () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Expression`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Expression { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expression_Number" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Number) , node , move | state | Ok (Expression :: Number (:: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expression { const RULE_NAME : & 'static str = "Expression" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::enum_transformed_fields' (489) panicked at src/lib.rs:147:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__enum_transformed_fields.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c7afe - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c7afe - ritter_macro[598f42a7b31a4841]::tests::enum_transformed_fields
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:147:9
[INFO] [stdout]   22:     0x5b00da7ba8cd - ritter_macro[598f42a7b31a4841]::tests::enum_transformed_fields::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:146:37
[INFO] [stdout]   23:     0x5b00da7dbb16 - <ritter_macro[598f42a7b31a4841]::tests::enum_transformed_fields::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::enum_with_unamed_vector stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__enum_with_unamed_vector.snap
[INFO] [stdout] Snapshot: enum_with_unamed_vector
[INFO] [stdout] Source: src/lib.rs:340
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] pub struct Number
[INFO] [stdout]         { #[leaf(re(r"\d+"))] value: u32 } #[derive(ritter::Rule)] #[language]
[INFO] [stdout]         pub enum Expr { Numbers(#[repeat1] Vec<Number>) }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::Extract for Number {
[INFO] [stdout]     3       │-        type Output = Self;
[INFO] [stdout]     4       │-        type LeafFn = ();
[INFO] [stdout]     5       │-        #[allow(non_snake_case)]
[INFO] [stdout]     6       │-        fn extract<'tree>(
[INFO] [stdout]     7       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]     8       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]     9       │-            source: &[u8],
[INFO] [stdout]    10       │-            _l: Self::LeafFn,
[INFO] [stdout]    11       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    12       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    13       │-            ::ritter::__private::extract_struct_or_variant(stringify!(Number), node, move |state| {
[INFO] [stdout]    14       │-                Ok(Number {
[INFO] [stdout]    15       │-                    value: ::ritter::__private::extract_field::<u32, _>(
[INFO] [stdout]    16       │-                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    17       │-                        (),
[INFO] [stdout]    18       │-                        state,
[INFO] [stdout]    19       │-                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    20       │-                            0u32,
[INFO] [stdout]    21       │-                            false,
[INFO] [stdout]    22       │-                            |state| match state {
[INFO] [stdout]    23       │-                                0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    24       │-                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    25       │-                            },
[INFO] [stdout]    26       │-                        ),
[INFO] [stdout]    27       │-                        source,
[INFO] [stdout]    28       │-                        "value",
[INFO] [stdout]    29       │-                    )?,
[INFO] [stdout]    30       │-                })
[INFO] [stdout]    31       │-            })
[INFO] [stdout]    32       │-        }
[INFO] [stdout]    33       │-    }
[INFO] [stdout]    34       │-    impl ::ritter::rule::Rule for Number {
[INFO] [stdout]    35       │-        const RULE_NAME: &'static str = "Number";
[INFO] [stdout]    36       │-        fn produce_ast() -> String {
[INFO] [stdout]    37       │-            String::new()
[INFO] [stdout]    38       │-        }
[INFO] [stdout]    39       │-    }
[INFO] [stdout]    40       │-    impl ::ritter::rule::Language for Expr {
[INFO] [stdout]    41       │-        fn produce_grammar() -> String {
[INFO] [stdout]    42       │-            String::new()
[INFO] [stdout]    43       │-        }
[INFO] [stdout]    44       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]    45       │-            unsafe extern "C" {
[INFO] [stdout]    46       │-                fn tree_sitter_Expr() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]    47       │-            }
[INFO] [stdout]    48       │-            unsafe { tree_sitter_Expr() }
[INFO] [stdout]    49       │-        }
[INFO] [stdout]    50       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    51       │-        #[doc = "[`Expr`]"]
[INFO] [stdout]    52       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    53       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    54       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    55       │-        }
[INFO] [stdout]    56       │-    }
[INFO] [stdout]    57       │-    impl ::ritter::Extract for Expr {
[INFO] [stdout]    58       │-        type Output = Self;
[INFO] [stdout]    59       │-        type LeafFn = ();
[INFO] [stdout]    60       │-        #[allow(non_snake_case)]
[INFO] [stdout]    61       │-        fn extract<'tree>(
[INFO] [stdout]    62       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    63       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    64       │-            source: &[u8],
[INFO] [stdout]    65       │-            _l: Self::LeafFn,
[INFO] [stdout]    66       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    67       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    68       │-            let mut cursor = node.walk();
[INFO] [stdout]    69       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    70       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    71       │-            }
[INFO] [stdout]    72       │-            loop {
[INFO] [stdout]    73       │-                let node = cursor.node();
[INFO] [stdout]    74       │-                match node.kind() {
[INFO] [stdout]    75       │-                    "Expr_Numbers" => {
[INFO] [stdout]    76       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    77       │-                            stringify!(Expr::Numbers),
[INFO] [stdout]    78       │-                            node,
[INFO] [stdout]    79       │-                            move |state| {
[INFO] [stdout]    80       │-                                Ok(Expr::Numbers(::ritter::__private::extract_field::<
[INFO] [stdout]    81       │-                                    Vec<Number>,
[INFO] [stdout]    82       │-                                    _,
[INFO] [stdout]    83       │-                                >(
[INFO] [stdout]    84       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    85       │-                                    (),
[INFO] [stdout]    86       │-                                    state,
[INFO] [stdout]    87       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    88       │-                                        2u32,
[INFO] [stdout]    89       │-                                        false,
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] [stdout]    90       │-                                        |state| match state {
[INFO] [stdout]    91       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    92       │-                                                "Number", true, false,
[INFO] [stdout]    93       │-                                            ),
[INFO] [stdout]    94       │-                                            1u32 => ::ritter::extract::ExtractFieldState::Repeat1,
[INFO] [stdout]    95       │-                                            2u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    96       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    97       │-                                        },
[INFO] [stdout]    98       │-                                    ),
[INFO] [stdout]    99       │-                                    source,
[INFO] [stdout]   100       │-                                    "0",
[INFO] [stdout]   101       │-                                )?))
[INFO] [stdout]   102       │-                            },
[INFO] [stdout]   103       │-                        )
[INFO] [stdout]   104       │-                    }
[INFO] [stdout]   105       │-                    k => {
[INFO] [stdout]   106       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]   107       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]   108       │-                        }
[INFO] [stdout]   109       │-                    }
[INFO] [stdout]   110       │-                }
[INFO] [stdout]   111       │-            }
[INFO] [stdout]   112       │-        }
[INFO] [stdout]   113       │-    }
[INFO] [stdout]   114       │-    impl ::ritter::rule::Rule for Expr {
[INFO] [stdout]   115       │-        const RULE_NAME: &'static str = "Expr";
[INFO] [stdout]   116       │-        fn produce_ast() -> String {
[INFO] [stdout]   117       │-            String::new()
[INFO] [stdout]   118       │-        }
[INFO] [stdout]   119       │-    }
[INFO] [stdout]   120       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: Extract for Number { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; :: ritter :: __private :: extract_struct_or_variant (stringify ! (Number) , node , move | state | Ok (Number { value : :: ritter :: __private :: extract_field :: < u32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "value") ? })) } } impl :: ritter :: rule :: Rule for Number { const RULE_NAME : & 'static str = "Number" ; fn produce_ast () -> String { String :: new () } } impl :: ritter :: rule :: Language for Expr { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Expr () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Expr () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Expr`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Expr { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expr_Numbers" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expr :: Numbers) , node , move | state | Ok (Expr :: Numbers (:: ritter :: __private :: extract_field :: < Vec < Number > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (2u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Number" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Repeat1 , 2u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expr { const RULE_NAME : & 'static str = "Expr" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::enum_with_unamed_vector' (491) panicked at src/lib.rs:340:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__enum_with_unamed_vector.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c8bb2 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c8bb2 - ritter_macro[598f42a7b31a4841]::tests::enum_with_unamed_vector
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:340:9
[INFO] [stdout]   22:     0x5b00da7ba90d - ritter_macro[598f42a7b31a4841]::tests::enum_with_unamed_vector::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:339:37
[INFO] [stdout]   23:     0x5b00da7dbb36 - <ritter_macro[598f42a7b31a4841]::tests::enum_with_unamed_vector::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::expand_extract_test stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__expand_extract_test.snap
[INFO] [stdout] Snapshot: expand_extract_test
[INFO] [stdout] Source: src/lib.rs:429
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar2(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(Extract)] #[with(Extractable::new)] pub struct Extractable
[INFO] [stdout]         { t: u64, } impl Extractable
[INFO] [stdout]         { fn new(s: &str) -> Self { Self { t: s.parse().unwrap() } } }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::rust_sitter::Extract for Extractable {
[INFO] [stdout]     3       │-        type Output = Self;
[INFO] [stdout]     4       │-        type LeafFn = ();
[INFO] [stdout]     5       │-        #[allow(non_snake_case)]
[INFO] [stdout]     6       │-        fn extract<'tree>(
[INFO] [stdout]     7       │-            ctx: &mut ::rust_sitter::extract::ExtractContext,
[INFO] [stdout]     8       │-            node: Option<::rust_sitter::tree_sitter::Node<'tree>>,
[INFO] [stdout]     9       │-            source: &[u8],
[INFO] [stdout]    10       │-            _l: Self::LeafFn,
[INFO] [stdout]    11       │-        ) -> Result<Self, ::rust_sitter::extract::ExtractError<'tree>> {
[INFO] [stdout]    12       │-            let node = node.ok_or_else(|| ::rust_sitter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    13       │-            let text = node.utf8_text(source).unwrap();
[INFO] [stdout]    14       │-            let result: ::rust_sitter::extract::__ExtractWithMacro<Extractable> =
[INFO] [stdout]    15       │-                Extractable::new(text).into();
[INFO] [stdout]    16       │-            result.extract(ctx)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl Extractable {
[INFO] [stdout]    20       │-        fn new(s: &str) -> Self {
[INFO] [stdout]    21       │-            Self {
[INFO] [stdout]    22       │-                t: s.parse().unwrap(),
[INFO] [stdout]    23       │-            }
[INFO] [stdout]    24       │-        }
[INFO] [stdout]    25       │-    }
[INFO] [stdout]    26       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: rust_sitter :: Extract for Extractable { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: rust_sitter :: extract :: ExtractContext , node : Option < :: rust_sitter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: rust_sitter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: rust_sitter :: error :: ExtractError :: missing_node (ctx) }) ? ; let text = node . utf8_text (source) . unwrap () ; let result : :: rust_sitter :: extract :: __ExtractWithMacro < Extractable > = Extractable :: new (text) . into () ; result . extract (ctx) } } impl Extractable { fn new (s : & str) -> Self { Self { t : s . parse () . unwrap () } } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::expand_extract_test' (492) panicked at src/lib.rs:429:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__expand_extract_test.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c4d6a - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c4d6a - ritter_macro[598f42a7b31a4841]::tests::expand_extract_test
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:429:9
[INFO] [stdout]   22:     0x5b00da7ba817 - ritter_macro[598f42a7b31a4841]::tests::expand_extract_test::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:428:29
[INFO] [stdout]   23:     0x5b00da7dbab6 - <ritter_macro[598f42a7b31a4841]::tests::expand_extract_test::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::enum_prec_left stdout ----
[INFO] [stdout] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Snapshot Summary ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[INFO] [stdout] Snapshot file: src/snapshots/ritter_macro__tests__enum_prec_left.snap
[INFO] [stdout] Snapshot: enum_prec_left
[INFO] [stdout] Source: src/lib.rs:197
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] Expression: rustfmt_code(&expand_grammar(parse_quote!
[INFO] [stdout] {
[INFO] [stdout]     mod grammar
[INFO] [stdout]     {
[INFO] [stdout]         #[derive(ritter::Rule)] #[language] pub enum Expression
[INFO] [stdout]         {
[INFO] [stdout]             Number(#[leaf(pattern(r"\d+"))] i32), #[prec_left(1)]
[INFO] [stdout]             Sub(Box<Expression>, #[leaf("-")] (), Box<Expression>),
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }).to_token_stream().to_string())
[INFO] [stdout] ────────────────────────────────────────────────────────────────────────────────
[INFO] [stdout] -old snapshot
[INFO] [stdout] +new results
[INFO] [stdout] ────────────┬───────────────────────────────────────────────────────────────────
[INFO] [stdout]     1       │-mod grammar {
[INFO] [stdout]     2       │-    impl ::ritter::rule::Language for Expression {
[INFO] [stdout]     3       │-        fn produce_grammar() -> String {
[INFO] [stdout]     4       │-            String::new()
[INFO] [stdout]     5       │-        }
[INFO] [stdout]     6       │-        fn language() -> ::ritter::tree_sitter::Language {
[INFO] [stdout]     7       │-            unsafe extern "C" {
[INFO] [stdout]     8       │-                fn tree_sitter_Expression() -> ::ritter::tree_sitter::Language;
[INFO] [stdout]     9       │-            }
[INFO] [stdout]    10       │-            unsafe { tree_sitter_Expression() }
[INFO] [stdout]    11       │-        }
[INFO] [stdout]    12       │-        #[doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"]
[INFO] [stdout]    13       │-        #[doc = "[`Expression`]"]
[INFO] [stdout]    14       │-        #[doc = r" instance containing the parsed structured data."]
[INFO] [stdout]    15       │-        fn parse(input: &str) -> ::ritter::ParseResult<Self> {
[INFO] [stdout]    16       │-            ::ritter::__private::parse(input, Self::language)
[INFO] [stdout]    17       │-        }
[INFO] [stdout]    18       │-    }
[INFO] [stdout]    19       │-    impl ::ritter::Extract for Expression {
[INFO] [stdout]    20       │-        type Output = Self;
[INFO] [stdout]    21       │-        type LeafFn = ();
[INFO] [stdout]    22       │-        #[allow(non_snake_case)]
[INFO] [stdout]    23       │-        fn extract<'tree>(
[INFO] [stdout]    24       │-            ctx: &mut ::ritter::extract::ExtractContext,
[INFO] [stdout]    25       │-            node: Option<::ritter::tree_sitter::Node<'tree>>,
[INFO] [stdout]    26       │-            source: &[u8],
[INFO] [stdout]    27       │-            _l: Self::LeafFn,
[INFO] [stdout]    28       │-        ) -> Result<Self, ::ritter::extract::ExtractError<'tree>> {
[INFO] [stdout]    29       │-            let node = node.ok_or_else(|| ::ritter::error::ExtractError::missing_node(ctx))?;
[INFO] [stdout]    30       │-            let mut cursor = node.walk();
[INFO] [stdout]    31       │-            if !cursor.goto_first_child() {
[INFO] [stdout]    32       │-                return Err(::ritter::error::ExtractError::missing_node(ctx));
[INFO] [stdout]    33       │-            }
[INFO] [stdout]    34       │-            loop {
[INFO] [stdout]    35       │-                let node = cursor.node();
[INFO] [stdout]    36       │-                match node.kind() {
[INFO] [stdout]    37       │-                    "Expression_Number" => {
[INFO] [stdout]    38       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    39       │-                            stringify!(Expression::Number),
[INFO] [stdout]    40       │-                            node,
[INFO] [stdout]    41       │-                            move |state| {
[INFO] [stdout]    42       │-                                Ok(Expression::Number(::ritter::__private::extract_field::<
[INFO] [stdout]    43       │-                                    i32,
[INFO] [stdout]    44       │-                                    _,
[INFO] [stdout]    45       │-                                >(
[INFO] [stdout]    46       │-                                    ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    47       │-                                    (),
[INFO] [stdout]    48       │-                                    state,
[INFO] [stdout]    49       │-                                    ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    50       │-                                        0u32,
[INFO] [stdout]    51       │-                                        false,
[INFO] [stdout]    52       │-                                        |state| match state {
[INFO] [stdout]    53       │-                                            0u32 => ::ritter::extract::ExtractFieldState::Complete,
[INFO] [stdout]    54       │-                                            _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    55       │-                                        },
[INFO] [stdout]    56       │-                                    ),
[INFO] [stdout]    57       │-                                    source,
[INFO] [stdout]    58       │-                                    "0",
[INFO] [stdout]    59       │-                                )?))
[INFO] [stdout]    60       │-                            },
[INFO] [stdout]    61       │-                        )
[INFO] [stdout]    62       │-                    }
[INFO] [stdout]    63       │-                    "Expression_Sub" => {
[INFO] [stdout]    64       │-                        return ::ritter::__private::extract_struct_or_variant(
[INFO] [stdout]    65       │-                            stringify!(Expression::Sub),
[INFO] [stdout]    66       │-                            node,
[INFO] [stdout]    67       │-                            move |state| {
[INFO] [stdout]    68       │-                                Ok(Expression::Sub(
[INFO] [stdout]    69       │-                                    ::ritter::__private::extract_field::<Box<Expression>, _>(
[INFO] [stdout]    70       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    71       │-                                        (),
[INFO] [stdout]    72       │-                                        state,
[INFO] [stdout]    73       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    74       │-                                            1u32,
[INFO] [stdout]    75       │-                                            false,
[INFO] [stdout]    76       │-                                            |state| match state {
[INFO] [stdout]    77       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]    78       │-                                                    "Expression",
[INFO] [stdout]    79       │-                                                    true,
[INFO] [stdout]    80       │-                                                    false,
[INFO] [stdout]    81       │-                                                ),
[INFO] [stdout]    82       │-                                                1u32 => {
[INFO] [stdout]    83       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]    84       │-                                                }
[INFO] [stdout]    85       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]    86       │-                                            },
[INFO] [stdout]    87       │-                                        ),
[INFO] [stdout]    88       │-                                        source,
[INFO] [stdout]    89       │-                                        "0",
[INFO] [stdout]    90       │-                                    )?,
[INFO] [stdout]    91       │-                                    ::ritter::__private::extract_field::<(), _>(
[INFO] [stdout]    92       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]    93       │-                                        (),
[INFO] [stdout]    94       │-                                        state,
[INFO] [stdout]    95       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]    96       │-                                            1u32,
[INFO] [stdout]    97       │-                                            false,
[INFO] [stdout]    98       │-                                            |state| match state {
[INFO] [stdout]    99       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]   100       │-                                                    "-", false, false,
[INFO] [stdout]   101       │-                                                ),
[INFO] [stdout]   102       │-                                                1u32 => {
[INFO] [stdout]   103       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]   104       │-                                                }
[INFO] [stdout]   105       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   106       │-                                            },
[INFO] [stdout]   107       │-                                        ),
[INFO] [stdout]   108       │-                                        source,
[INFO] [stdout]   109       │-                                        "1",
[INFO] [stdout]   110       │-                                    )?,
[INFO] [stdout]   111       │-                                    ::ritter::__private::extract_field::<Box<Expression>, _>(
[INFO] [stdout]   112       │-                                        ::ritter::extract::BaseExtractor::default(),
[INFO] [stdout]   113       │-                                        (),
[INFO] [stdout]   114       │-                                        state,
[INFO] [stdout]   115       │-                                        ::ritter::extract::ExtractFieldContext::new(
[INFO] [stdout]   116       │-                                            1u32,
[INFO] [stdout]   117       │-                                            false,
[INFO] [stdout]   118       │-                                            |state| match state {
[INFO] [stdout]   119       │-                                                0u32 => ::ritter::extract::ExtractFieldState::Str(
[INFO] [stdout]   120       │-                                                    "Expression",
[INFO] [stdout]   121       │-                                                    true,
[INFO] [stdout]   122       │-                                                    false,
[INFO] [stdout]   123       │-                                                ),
[INFO] [stdout]   124       │-                                                1u32 => {
[INFO] [stdout]   125       │-                                                    ::ritter::extract::ExtractFieldState::Complete
[INFO] [stdout]   126       │-                                                }
[INFO] [stdout]   127       │-                                                _ => ::ritter::extract::ExtractFieldState::Overflow,
[INFO] [stdout]   128       │-                                            },
[INFO] [stdout]   129       │-                                        ),
[INFO] [stdout]   130       │-                                        source,
[INFO] [stdout]   131       │-                                        "2",
[INFO] [stdout]   132       │-                                    )?,
[INFO] [stdout]   133       │-                                ))
[INFO] [stdout]   134       │-                            },
[INFO] [stdout]   135       │-                        )
[INFO] [stdout]   136       │-                    }
[INFO] [stdout]   137       │-                    k => {
[INFO] [stdout]   138       │-                        if !cursor.goto_next_sibling() {
[INFO] [stdout]   139       │-                            return Err(::ritter::error::ExtractError::missing_enum(ctx));
[INFO] [stdout]   140       │-                        }
[INFO] [stdout]   141       │-                    }
[INFO] [stdout]   142       │-                }
[INFO] [stdout]   143       │-            }
[INFO] [stdout]   144       │-        }
[INFO] [stdout]   145       │-    }
[INFO] [stdout]   146       │-    impl ::ritter::rule::Rule for Expression {
[INFO] [stdout]   147       │-        const RULE_NAME: &'static str = "Expression";
[INFO] [stdout]   148       │-        fn produce_ast() -> String {
[INFO] [stdout]   149       │-            String::new()
[INFO] [stdout]   150       │-        }
[INFO] [stdout]   151       │-    }
[INFO] [stdout]   152       │-}
[INFO] [stdout]           1 │+mod grammar { impl :: ritter :: rule :: Language for Expression { fn produce_grammar () -> String { String :: new () } fn language () -> :: ritter :: tree_sitter :: Language { unsafe extern "C" { fn tree_sitter_Expression () -> :: ritter :: tree_sitter :: Language ; } unsafe { tree_sitter_Expression () } } # [doc = r" Parse an input string according to the grammar. Returns either any parsing errors that happened, or a"] # [doc = "[`Expression`]"] # [doc = r" instance containing the parsed structured data."] fn parse (input : & str) -> :: ritter :: ParseResult < Self > { :: ritter :: __private :: parse (input , Self :: language) } } impl :: ritter :: Extract for Expression { type Output = Self ; type LeafFn = () ; # [allow (non_snake_case)] fn extract < 'tree > (ctx : & mut :: ritter :: extract :: ExtractContext , node : Option < :: ritter :: tree_sitter :: Node < 'tree > > , source : & [u8] , _l : Self :: LeafFn ,) -> Result < Self , :: ritter :: extract :: ExtractError < 'tree > > { let node = node . ok_or_else (| | { :: ritter :: error :: ExtractError :: missing_node (ctx) }) ? ; let mut cursor = node . walk () ; if ! cursor . goto_first_child () { return Err (:: ritter :: error :: ExtractError :: missing_node (ctx)) ; } loop { let node = cursor . node () ; match node . kind () { "Expression_Number" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Number) , node , move | state | Ok (Expression :: Number (:: ritter :: __private :: extract_field :: < i32 , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (0u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ?))) , "Expression_Sub" => return :: ritter :: __private :: extract_struct_or_variant (stringify ! (Expression :: Sub) , node , move | state | Ok (Expression :: Sub (:: ritter :: __private :: extract_field :: < Box < Expression > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Expression" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "0") ? , :: ritter :: __private :: extract_field :: < () , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("-" , false , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "1") ? , :: ritter :: __private :: extract_field :: < Box < Expression > , _ > (:: ritter :: extract :: BaseExtractor :: default () , () , state , :: ritter :: extract :: ExtractFieldContext :: new (1u32 , false , | state | { match state { 0u32 => :: ritter :: extract :: ExtractFieldState :: Str ("Expression" , true , false) , 1u32 => :: ritter :: extract :: ExtractFieldState :: Complete , _ => :: ritter :: extract :: ExtractFieldState :: Overflow , } }) , source , "2") ?))) , k => if ! cursor . goto_next_sibling () { return Err (:: ritter :: error :: ExtractError :: missing_enum (ctx)) ; } } } } } impl :: ritter :: rule :: Rule for Expression { const RULE_NAME : & 'static str = "Expression" ; fn produce_ast () -> String { String :: new () } } }
[INFO] [stdout] ────────────┴───────────────────────────────────────────────────────────────────
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::enum_prec_left' (487) panicked at src/lib.rs:197:9:
[INFO] [stdout] called `Result::unwrap()` on an `Err` value: FileIo(Os { code: 30, kind: ReadOnlyFilesystem, message: "Read-only file system" }, "/opt/rustwide/workdir/src/snapshots/ritter_macro__tests__enum_prec_left.snap.new")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x7f01a79c1821 - std[70759c8f55707aa4]::backtrace_rs::backtrace::trace_unsynchronized::<std[70759c8f55707aa4]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x7f01a79c1821 - std[70759c8f55707aa4]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x7f01a79c1821 - <<std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[df12db4294e9bfd3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x7f01a7a08aea - <core[df12db4294e9bfd3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x7f01a7a08aea - core[df12db4294e9bfd3]::fmt::write
[INFO] [stdout]    6:     0x7f01a79d27cc - core[df12db4294e9bfd3]::io::write::default_write_fmt::<alloc[2182bb758b4b3781]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:402:11
[INFO] [stdout]    7:     0x7f01a79d27cc - <alloc[2182bb758b4b3781]::vec::Vec<u8> as core[df12db4294e9bfd3]::io::write::Write>::write_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/io/write.rs:335:13
[INFO] [stdout]    8:     0x7f01a798b1a6 - <std[70759c8f55707aa4]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x7f01a798b1a6 - std[70759c8f55707aa4]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x7f01a79b22a9 - std[70759c8f55707aa4]::panicking::default_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5b00da8d7ec0 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   12:     0x5b00da8d7ec0 - test[9d35eded1c95d3be]::test_main_inner::<test[9d35eded1c95d3be]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x7f01a79b25d2 - <alloc[2182bb758b4b3781]::boxed::Box<dyn for<'a, 'b> core[df12db4294e9bfd3]::ops::function::Fn<(&'a std[70759c8f55707aa4]::panic::PanicHookInfo<'b>,), Output = ()> + core[df12db4294e9bfd3]::marker::Send + core[df12db4294e9bfd3]::marker::Sync> as core[df12db4294e9bfd3]::ops::function::Fn<(&std[70759c8f55707aa4]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2334:9
[INFO] [stdout]   14:     0x7f01a79b25d2 - std[70759c8f55707aa4]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:823:13
[INFO] [stdout]   15:     0x7f01a798b252 - std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:688:13
[INFO] [stdout]   16:     0x7f01a79828a9 - std[70759c8f55707aa4]::sys::backtrace::__rust_end_short_backtrace::<std[70759c8f55707aa4]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x7f01a798cb5d - __rustc[8fa7c3cbc660c2b3]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:679:5
[INFO] [stdout]   18:     0x7f01a7a0957c - core[df12db4294e9bfd3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x7f01a7a09262 - core[df12db4294e9bfd3]::result::unwrap_failed
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1871:5
[INFO] [stdout]   20:     0x5b00da7c05d8 - <core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::error::Error>>>::unwrap
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/result.rs:1232:23
[INFO] [stdout]   21:     0x5b00da7c05d8 - ritter_macro[598f42a7b31a4841]::tests::enum_prec_left
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:197:9
[INFO] [stdout]   22:     0x5b00da7ba71d - ritter_macro[598f42a7b31a4841]::tests::enum_prec_left::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/lib.rs:196:28
[INFO] [stdout]   23:     0x5b00da7dba36 - <ritter_macro[598f42a7b31a4841]::tests::enum_prec_left::{closure#0} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x5b00da8cb1ab - <fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x5b00da8cb1ab - test[9d35eded1c95d3be]::__rust_begin_short_backtrace::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, fn() -> core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:733:18
[INFO] [stdout]   26:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:74
[INFO] [stdout]   27:     0x5b00da8d8815 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   28:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   29:     0x5b00da8d8815 - std[70759c8f55707aa4]::panicking::catch_unwind::<core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>, core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x5b00da8d8815 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<test[9d35eded1c95d3be]::run_test_in_process::{closure#0}>, core[df12db4294e9bfd3]::result::Result<(), alloc[2182bb758b4b3781]::string::String>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test_in_process
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:756:27
[INFO] [stdout]   32:     0x5b00da8d8815 - test[9d35eded1c95d3be]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:677:43
[INFO] [stdout]   33:     0x5b00da8d20d4 - test[9d35eded1c95d3be]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/test/src/lib.rs:707:41
[INFO] [stdout]   34:     0x5b00da8d20d4 - std[70759c8f55707aa4]::sys::backtrace::__rust_begin_short_backtrace::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   36:     0x5b00da8db972 - <core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   37:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::do_call::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:576:43
[INFO] [stdout]   38:     0x5b00da8db972 - std[70759c8f55707aa4]::panicking::catch_unwind::<(), core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x5b00da8db972 - std[70759c8f55707aa4]::panic::catch_unwind::<core[df12db4294e9bfd3]::panic::unwind_safe::AssertUnwindSafe<std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x5b00da8db972 - std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked::<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   41:     0x5b00da8db972 - <std[70759c8f55707aa4]::thread::lifecycle::spawn_unchecked<test[9d35eded1c95d3be]::run_test::{closure#1}, ()>::{closure#1} as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x7f01a79bddf9 - <alloc[2182bb758b4b3781]::boxed::Box<dyn core[df12db4294e9bfd3]::ops::function::FnOnce<(), Output = ()> + core[df12db4294e9bfd3]::marker::Send> as core[df12db4294e9bfd3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/alloc/src/boxed.rs:2320:9
[INFO] [stdout]   43:     0x7f01a79bddf9 - <std[70759c8f55707aa4]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/dfb0accb7f508ae8be965d8629557221c889dd98/library/std/src/sys/thread/unix.rs:123:17
[INFO] [stdout]   44:     0x7f01a771bdfa - <unknown>
[INFO] [stdout]   45:     0x7f01a77af3d4 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::enum_prec_left
[INFO] [stdout]     tests::enum_recursive
[INFO] [stdout]     tests::enum_transformed_fields
[INFO] [stdout]     tests::enum_with_named_field
[INFO] [stdout]     tests::enum_with_unamed_vector
[INFO] [stdout]     tests::expand_extract_test
[INFO] [stdout]     tests::grammar_unboxed_field
[INFO] [stdout]     tests::spanned_in_vec
[INFO] [stdout]     tests::struct_extra
[INFO] [stdout]     tests::struct_optional
[INFO] [stdout]     tests::struct_repeat
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 11 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.95s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688", kill_on_drop: false }`
[INFO] [stdout] 98fc534d0da1e054af705e49f2459381afa8589cc0f89de873c9f69a7d876688
