[INFO] fetching crate artlr_syntax 0.3.0... [INFO] testing artlr_syntax-0.3.0 against try#c2e32f1c9652b13ed99608599c1e855462f421f3 for pr-146098-7 [INFO] extracting crate artlr_syntax 0.3.0 into /workspace/builds/worker-5-tc2/source [INFO] started tweaking crates.io crate artlr_syntax 0.3.0 [INFO] finished tweaking crates.io crate artlr_syntax 0.3.0 [INFO] tweaked toml for crates.io crate artlr_syntax 0.3.0 written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate artlr_syntax 0.3.0 on toolchain c2e32f1c9652b13ed99608599c1e855462f421f3 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f3c41954c7afa62e684d3100abc53dc77fd0be0d871ebfa90f07184f1933a12e [INFO] running `Command { std: "docker" "start" "-a" "f3c41954c7afa62e684d3100abc53dc77fd0be0d871ebfa90f07184f1933a12e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f3c41954c7afa62e684d3100abc53dc77fd0be0d871ebfa90f07184f1933a12e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f3c41954c7afa62e684d3100abc53dc77fd0be0d871ebfa90f07184f1933a12e", kill_on_drop: false }` [INFO] [stdout] f3c41954c7afa62e684d3100abc53dc77fd0be0d871ebfa90f07184f1933a12e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b1881053b59d2b344fb9be23b29dc28e9fcad0a01ffd6c22162717b46174b898 [INFO] running `Command { std: "docker" "start" "-a" "b1881053b59d2b344fb9be23b29dc28e9fcad0a01ffd6c22162717b46174b898", kill_on_drop: false }` [INFO] [stderr] Compiling artlr_syntax v0.3.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: call to `.borrow()` on a reference in this situation does nothing [INFO] [stdout] --> src/grammar/first_follow_symbols.rs:296:45 [INFO] [stdout] | [INFO] [stdout] 296 | .get(output_symbol).unwrap().borrow(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `HashSet` does not implement `Borrow`, so calling `borrow` on `&HashSet` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 296 - .get(output_symbol).unwrap().borrow(); [INFO] [stdout] 296 + .get(output_symbol).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] WARN rustc_errors::emitter Invalid span /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs:125:1: 125:1 (#0), error=SourceNotAvailable { filename: Real(Remapped { local_path: None, virtual_name: "/rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs" }) } [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser/recursive_descent_parser.rs:248:9 [INFO] [stdout] | [INFO] [stdout] 248 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 252 | ) -> ParseSymbolResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 252 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser/recursive_descent_parser.rs:325:9 [INFO] [stdout] | [INFO] [stdout] 325 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 329 | ) -> ParseSymbolResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 329 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.38s [INFO] running `Command { std: "docker" "inspect" "b1881053b59d2b344fb9be23b29dc28e9fcad0a01ffd6c22162717b46174b898", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b1881053b59d2b344fb9be23b29dc28e9fcad0a01ffd6c22162717b46174b898", kill_on_drop: false }` [INFO] [stdout] b1881053b59d2b344fb9be23b29dc28e9fcad0a01ffd6c22162717b46174b898 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0fd29f7656a3ecd3e4db470100cbac95faa4810861667083b0771b546ccec9a6 [INFO] running `Command { std: "docker" "start" "-a" "0fd29f7656a3ecd3e4db470100cbac95faa4810861667083b0771b546ccec9a6", kill_on_drop: false }` [INFO] [stderr] WARN rustc_errors::emitter Invalid span /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs:125:1: 125:1 (#0), error=SourceNotAvailable { filename: Real(Remapped { local_path: None, virtual_name: "/rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs" }) } [INFO] [stdout] warning: call to `.borrow()` on a reference in this situation does nothing [INFO] [stdout] --> src/grammar/first_follow_symbols.rs:296:45 [INFO] [stdout] | [INFO] [stdout] 296 | .get(output_symbol).unwrap().borrow(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `HashSet` does not implement `Borrow`, so calling `borrow` on `&HashSet` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 296 - .get(output_symbol).unwrap().borrow(); [INFO] [stdout] 296 + .get(output_symbol).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser/recursive_descent_parser.rs:248:9 [INFO] [stdout] | [INFO] [stdout] 248 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 252 | ) -> ParseSymbolResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 252 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser/recursive_descent_parser.rs:325:9 [INFO] [stdout] | [INFO] [stdout] 325 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 329 | ) -> ParseSymbolResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 329 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling artlr_syntax v0.3.0 (/opt/rustwide/workdir) [INFO] [stderr] WARN rustc_errors::emitter Invalid span /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs:125:1: 125:1 (#0), error=SourceNotAvailable { filename: Real(Remapped { local_path: None, virtual_name: "/rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs" }) } [INFO] [stdout] warning: call to `.borrow()` on a reference in this situation does nothing [INFO] [stdout] --> src/grammar/first_follow_symbols.rs:296:45 [INFO] [stdout] | [INFO] [stdout] 296 | .get(output_symbol).unwrap().borrow(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the type `HashSet` does not implement `Borrow`, so calling `borrow` on `&HashSet` copies the reference, which does not do anything and can be removed [INFO] [stdout] = note: `#[warn(noop_method_call)]` on by default [INFO] [stdout] help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] 296 - .get(output_symbol).unwrap().borrow(); [INFO] [stdout] 296 + .get(output_symbol).unwrap(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser/recursive_descent_parser.rs:248:9 [INFO] [stdout] | [INFO] [stdout] 248 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 252 | ) -> ParseSymbolResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 252 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parser/recursive_descent_parser.rs:325:9 [INFO] [stdout] | [INFO] [stdout] 325 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 329 | ) -> ParseSymbolResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 329 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 4.28s [INFO] running `Command { std: "docker" "inspect" "0fd29f7656a3ecd3e4db470100cbac95faa4810861667083b0771b546ccec9a6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0fd29f7656a3ecd3e4db470100cbac95faa4810861667083b0771b546ccec9a6", kill_on_drop: false }` [INFO] [stdout] 0fd29f7656a3ecd3e4db470100cbac95faa4810861667083b0771b546ccec9a6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] a0efa27199c1195a88b438a36c8b47c83906f4d58f65b6378672ee2b53683b20 [INFO] running `Command { std: "docker" "start" "-a" "a0efa27199c1195a88b438a36c8b47c83906f4d58f65b6378672ee2b53683b20", kill_on_drop: false }` [INFO] [stderr] WARN rustc_errors::emitter Invalid span /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs:125:1: 125:1 (#0), error=SourceNotAvailable { filename: Real(Remapped { local_path: None, virtual_name: "/rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs" }) } [INFO] [stderr] warning: call to `.borrow()` on a reference in this situation does nothing [INFO] [stderr] --> src/grammar/first_follow_symbols.rs:296:45 [INFO] [stderr] | [INFO] [stderr] 296 | .get(output_symbol).unwrap().borrow(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: the type `HashSet` does not implement `Borrow`, so calling `borrow` on `&HashSet` copies the reference, which does not do anything and can be removed [INFO] [stderr] = note: `#[warn(noop_method_call)]` on by default [INFO] [stderr] help: remove this redundant call [INFO] [stderr] | [INFO] [stderr] 296 - .get(output_symbol).unwrap().borrow(); [INFO] [stderr] 296 + .get(output_symbol).unwrap(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/parser/recursive_descent_parser.rs:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | &self, [INFO] [stderr] | ^^^^^ the lifetime is elided here [INFO] [stderr] ... [INFO] [stderr] 252 | ) -> ParseSymbolResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 252 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stderr] | +++ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/parser/recursive_descent_parser.rs:325:9 [INFO] [stderr] | [INFO] [stderr] 325 | &self, [INFO] [stderr] | ^^^^^ the lifetime is elided here [INFO] [stderr] ... [INFO] [stderr] 329 | ) -> ParseSymbolResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 329 | ) -> ParseSymbolResult<'_, TLex, TSyntax> { [INFO] [stderr] | +++ [INFO] [stderr] [INFO] [stderr] warning: `artlr_syntax` (lib) generated 3 warnings (run `cargo fix --lib -p artlr_syntax` to apply 3 suggestions) [INFO] [stdout] [INFO] [stdout] running 29 tests [INFO] [stderr] WARN rustc_errors::emitter Invalid span /rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs:125:1: 125:1 (#0), error=SourceNotAvailable { filename: Real(Remapped { local_path: None, virtual_name: "/rustc/c2e32f1c9652b13ed99608599c1e855462f421f3/library/std/src/collections/hash/set.rs" }) } [INFO] [stderr] warning: `artlr_syntax` (lib test) generated 3 warnings (3 duplicates) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/artlr_syntax-b8456b720c3ccf9e) [INFO] [stdout] test grammar::context_free_grammar_spec::test::new::it_creates_a_new_instance ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_first_epsilon_symbols_non_terminal_epsilon ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_first_symbols ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_first_symbols_non_terminal ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_first_symbols_non_terminal_epsilon ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_follow_symbols_non_terminal_epsilon_chain ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_no_additional_first_symbols_on_infinite_recursion ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_follow_symbols_non_terminal ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_fails_on_unexpected_symbol_when_a_production_is_found ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_fails_on_unexpected_symbol_when_a_production_is_found_with_parsed_symbols_ordered ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_parses_with_first_first_conflict ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_fails_on_unexpected_symbol_when_no_production_is_found ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_fails_on_unexpected_symbol_when_multiple_productions_are_found ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_parses_epsilon_production ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_first_symbols_terminal ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_follow_symbols_non_terminal_last ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_follow_symbols ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_follow_symbols_non_terminal_last_epsilon_chain ... ok [INFO] [stdout] test grammar::first_follow_symbols_spec::test::get_first_follow_symbols::it_returns_next_symbol_first_symbols_on_infinite_recursion_if_first_symbol_contains_epsilon ... ok [INFO] [stdout] test parser::recursive_descent_parser_transitions_spec::test::from_grammar::it_adds_follow_symbols_productions ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_parses_terminal_production ... ok [INFO] [stdout] test parser::recursive_descent_parser_transitions_spec::test::from_grammar::it_adds_first_symbols_productions ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_parses_with_production_backtracking ... ok [INFO] [stdout] test parser::recursive_descent_parser_transitions_spec::test::from_grammar::it_adds_on_non_terminal_symbol_with_first_set_is_epsilon ... ok [INFO] [stdout] test parser::recursive_descent_parser_transitions_spec::test::from_grammar::it_adds_once_on_first_follow_conflict ... ok [INFO] [stdout] test grammar::context_free_grammar_spec::test::new::it_panics_if_production_input_is_epsilon - should panic ... ok [INFO] [stdout] test grammar::context_free_grammar_spec::test::new::it_panics_if_production_output_has_epsilon_and_any_other_symbol - should panic ... ok [INFO] [stdout] test grammar::context_free_grammar_spec::test::new::it_panics_if_production_output_has_no_symbols - should panic ... ok [INFO] [stdout] test parser::recursive_descent_parser_spec::test::parse_from_tokens::it_does_not_parse_empty_input - should panic ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Doc-tests artlr_syntax [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "a0efa27199c1195a88b438a36c8b47c83906f4d58f65b6378672ee2b53683b20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a0efa27199c1195a88b438a36c8b47c83906f4d58f65b6378672ee2b53683b20", kill_on_drop: false }` [INFO] [stdout] a0efa27199c1195a88b438a36c8b47c83906f4d58f65b6378672ee2b53683b20