[INFO] crate gll 0.0.2 is already in cache [INFO] extracting crate gll 0.0.2 into work/ex/clippy-test-run/sources/stable/reg/gll/0.0.2 [INFO] extracting crate gll 0.0.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gll/0.0.2 [INFO] validating manifest of gll-0.0.2 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of gll-0.0.2 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing gll-0.0.2 [INFO] finished frobbing gll-0.0.2 [INFO] frobbed toml for gll-0.0.2 written to work/ex/clippy-test-run/sources/stable/reg/gll/0.0.2/Cargo.toml [INFO] started frobbing gll-0.0.2 [INFO] finished frobbing gll-0.0.2 [INFO] frobbed toml for gll-0.0.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gll/0.0.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting gll-0.0.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/gll/0.0.2:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 16975e34184ad0b246255bdf9a1e80ca99d17bf79f0c2156de7418eee77a5042 [INFO] running `"docker" "start" "-a" "16975e34184ad0b246255bdf9a1e80ca99d17bf79f0c2156de7418eee77a5042"` [INFO] [stderr] Compiling indexing v0.3.2 [INFO] [stderr] Compiling gll v0.0.2 (/opt/crater/workdir) [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/generate/rust.rs:1477:21 [INFO] [stderr] | [INFO] [stderr] 1477 | / write!( [INFO] [stderr] 1478 | | s, [INFO] [stderr] 1479 | | "{} _{}: {} => {},", [INFO] [stderr] 1480 | | i, [INFO] [stderr] ... | [INFO] [stderr] 1483 | | rule.generate_traverse_shape(true, parse_nodes) [INFO] [stderr] 1484 | | ); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/generate/rust.rs:1486:17 [INFO] [stderr] | [INFO] [stderr] 1486 | write!(s, " }}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/generate/rust.rs:230:1 [INFO] [stderr] | [INFO] [stderr] 230 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/generate/rust.rs:1090:5 [INFO] [stderr] | [INFO] [stderr] 1090 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/generate/rust.rs:1343:5 [INFO] [stderr] | [INFO] [stderr] 1343 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/generate/rust.rs:230:1 [INFO] [stderr] | [INFO] [stderr] 230 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/generate/rust.rs:1090:5 [INFO] [stderr] | [INFO] [stderr] 1090 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/generate/rust.rs:1343:5 [INFO] [stderr] | [INFO] [stderr] 1343 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/generate/rust.rs:1354:17 [INFO] [stderr] | [INFO] [stderr] 1354 | cont [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/generate/rust.rs:1353:28 [INFO] [stderr] | [INFO] [stderr] 1353 | let cont = check(&code).apply(cont); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/generate/rust.rs:1360:17 [INFO] [stderr] | [INFO] [stderr] 1360 | cont [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/generate/rust.rs:1359:28 [INFO] [stderr] | [INFO] [stderr] 1359 | let cont = check(&code).apply(cont); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/generate/rust.rs:1408:17 [INFO] [stderr] | [INFO] [stderr] 1408 | cont [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/generate/rust.rs:1407:28 [INFO] [stderr] | [INFO] [stderr] 1407 | let cont = opt(rule.generate_parse(parse_nodes)).apply(cont); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Try not to call a closure in the expression where it is declared. [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:1793:9 [INFO] [stderr] | [INFO] [stderr] 1793 | / (|| Ok({ [INFO] [stderr] 1794 | | let sppf = &self.parser.sppf; [INFO] [stderr] 1795 | | let node = self.node.unpack_alias(); [INFO] [stderr] 1796 | | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1797 | | Or::from_sppf(self.parser, node, r) [INFO] [stderr] 1798 | | }))().map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] help: Try doing something like: [INFO] [stderr] | [INFO] [stderr] 1793 | Ok({ [INFO] [stderr] 1794 | let sppf = &self.parser.sppf; [INFO] [stderr] 1795 | let node = self.node.unpack_alias(); [INFO] [stderr] 1796 | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1797 | Or::from_sppf(self.parser, node, r) [INFO] [stderr] 1798 | }).map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Try not to call a closure in the expression where it is declared. [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:1894:9 [INFO] [stderr] | [INFO] [stderr] 1894 | / (|| Ok({ [INFO] [stderr] 1895 | | let sppf = &self.parser.sppf; [INFO] [stderr] 1896 | | let node = self.node.unpack_alias(); [INFO] [stderr] 1897 | | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1898 | | Concat::from_sppf(self.parser, node, r) [INFO] [stderr] 1899 | | }))().map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] help: Try doing something like: [INFO] [stderr] | [INFO] [stderr] 1894 | Ok({ [INFO] [stderr] 1895 | let sppf = &self.parser.sppf; [INFO] [stderr] 1896 | let node = self.node.unpack_alias(); [INFO] [stderr] 1897 | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1898 | Concat::from_sppf(self.parser, node, r) [INFO] [stderr] 1899 | }).map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2781:21 [INFO] [stderr] | [INFO] [stderr] 2781 | / if p.input_consume_left(_range, " ").is_none() { [INFO] [stderr] 2782 | | if p.input_consume_left(_range, "\t").is_none() { [INFO] [stderr] 2783 | | if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2784 | | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2792 | | } [INFO] [stderr] 2793 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2781 | if p.input_consume_left(_range, " ").is_none() && p.input_consume_left(_range, "\t").is_none() { [INFO] [stderr] 2782 | if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2783 | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2784 | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2782:25 [INFO] [stderr] | [INFO] [stderr] 2782 | / if p.input_consume_left(_range, "\t").is_none() { [INFO] [stderr] 2783 | | if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2784 | | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2785 | | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2791 | | } [INFO] [stderr] 2792 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2782 | if p.input_consume_left(_range, "\t").is_none() && p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2783 | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2784 | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2783:29 [INFO] [stderr] | [INFO] [stderr] 2783 | / if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2784 | | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2785 | | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2786 | | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2790 | | } [INFO] [stderr] 2791 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2783 | if p.input_consume_left(_range, "\n").is_none() && p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2784 | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] 2788 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2784:33 [INFO] [stderr] | [INFO] [stderr] 2784 | / if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2785 | | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2786 | | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2787 | | p.ret(c, _range); [INFO] [stderr] 2788 | | } [INFO] [stderr] 2789 | | } [INFO] [stderr] 2790 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2784 | if p.input_consume_left(_range, "\r").is_none() && p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] 2788 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2785:37 [INFO] [stderr] | [INFO] [stderr] 2785 | / if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2786 | | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2787 | | p.ret(c, _range); [INFO] [stderr] 2788 | | } [INFO] [stderr] 2789 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2785 | if p.input_consume_left(_range, "//").is_none() && p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2925:21 [INFO] [stderr] | [INFO] [stderr] 2925 | / if p.input_consume_left(_range, 'a'..='z').is_none() { [INFO] [stderr] 2926 | | if p.input_consume_left(_range, 'A'..='Z').is_none() { [INFO] [stderr] 2927 | | if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2928 | | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2932 | | } [INFO] [stderr] 2933 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2925 | if p.input_consume_left(_range, 'a'..='z').is_none() && p.input_consume_left(_range, 'A'..='Z').is_none() { [INFO] [stderr] 2926 | if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2927 | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2928 | p.ret(c, _range); [INFO] [stderr] 2929 | } [INFO] [stderr] 2930 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2926:25 [INFO] [stderr] | [INFO] [stderr] 2926 | / if p.input_consume_left(_range, 'A'..='Z').is_none() { [INFO] [stderr] 2927 | | if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2928 | | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2929 | | p.ret(c, _range); [INFO] [stderr] 2930 | | } [INFO] [stderr] 2931 | | } [INFO] [stderr] 2932 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2926 | if p.input_consume_left(_range, 'A'..='Z').is_none() && p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2927 | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2928 | p.ret(c, _range); [INFO] [stderr] 2929 | } [INFO] [stderr] 2930 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2927:29 [INFO] [stderr] | [INFO] [stderr] 2927 | / if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2928 | | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2929 | | p.ret(c, _range); [INFO] [stderr] 2930 | | } [INFO] [stderr] 2931 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2927 | if p.input_consume_left(_range, "_").is_none() && p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2928 | p.ret(c, _range); [INFO] [stderr] 2929 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2976:21 [INFO] [stderr] | [INFO] [stderr] 2976 | / if p.input_consume_left(_range, "\\").is_none() { [INFO] [stderr] 2977 | | if p.input_consume_left(_range, "\"").is_none() { [INFO] [stderr] 2978 | | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 2979 | | c.code = _C::StrLit__1__1; [INFO] [stderr] ... | [INFO] [stderr] 2982 | | } [INFO] [stderr] 2983 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2976 | if p.input_consume_left(_range, "\\").is_none() && p.input_consume_left(_range, "\"").is_none() { [INFO] [stderr] 2977 | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 2978 | c.code = _C::StrLit__1__1; [INFO] [stderr] 2979 | p.threads.spawn(c, _range); [INFO] [stderr] 2980 | } [INFO] [stderr] 2981 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:3004:25 [INFO] [stderr] | [INFO] [stderr] 3004 | / if p.input_consume_left(_range, "\\").is_none() { [INFO] [stderr] 3005 | | if p.input_consume_left(_range, "\'").is_none() { [INFO] [stderr] 3006 | | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 3007 | | c.code = _C::CharLit__0; [INFO] [stderr] ... | [INFO] [stderr] 3010 | | } [INFO] [stderr] 3011 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 3004 | if p.input_consume_left(_range, "\\").is_none() && p.input_consume_left(_range, "\'").is_none() { [INFO] [stderr] 3005 | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 3006 | c.code = _C::CharLit__0; [INFO] [stderr] 3007 | p.threads.spawn(c, _range); [INFO] [stderr] 3008 | } [INFO] [stderr] 3009 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/generate/rust.rs:1354:17 [INFO] [stderr] | [INFO] [stderr] 1354 | cont [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/generate/rust.rs:1353:28 [INFO] [stderr] | [INFO] [stderr] 1353 | let cont = check(&code).apply(cont); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/generate/rust.rs:1360:17 [INFO] [stderr] | [INFO] [stderr] 1360 | cont [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/generate/rust.rs:1359:28 [INFO] [stderr] | [INFO] [stderr] 1359 | let cont = check(&code).apply(cont); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/generate/rust.rs:1408:17 [INFO] [stderr] | [INFO] [stderr] 1408 | cont [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/generate/rust.rs:1407:28 [INFO] [stderr] | [INFO] [stderr] 1407 | let cont = opt(rule.generate_parse(parse_nodes)).apply(cont); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Try not to call a closure in the expression where it is declared. [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:1793:9 [INFO] [stderr] | [INFO] [stderr] 1793 | / (|| Ok({ [INFO] [stderr] 1794 | | let sppf = &self.parser.sppf; [INFO] [stderr] 1795 | | let node = self.node.unpack_alias(); [INFO] [stderr] 1796 | | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1797 | | Or::from_sppf(self.parser, node, r) [INFO] [stderr] 1798 | | }))().map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] help: Try doing something like: [INFO] [stderr] | [INFO] [stderr] 1793 | Ok({ [INFO] [stderr] 1794 | let sppf = &self.parser.sppf; [INFO] [stderr] 1795 | let node = self.node.unpack_alias(); [INFO] [stderr] 1796 | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1797 | Or::from_sppf(self.parser, node, r) [INFO] [stderr] 1798 | }).map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Try not to call a closure in the expression where it is declared. [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:1894:9 [INFO] [stderr] | [INFO] [stderr] 1894 | / (|| Ok({ [INFO] [stderr] 1895 | | let sppf = &self.parser.sppf; [INFO] [stderr] 1896 | | let node = self.node.unpack_alias(); [INFO] [stderr] 1897 | | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1898 | | Concat::from_sppf(self.parser, node, r) [INFO] [stderr] 1899 | | }))().map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stderr] help: Try doing something like: [INFO] [stderr] | [INFO] [stderr] 1894 | Ok({ [INFO] [stderr] 1895 | let sppf = &self.parser.sppf; [INFO] [stderr] 1896 | let node = self.node.unpack_alias(); [INFO] [stderr] 1897 | let r = traverse!(one(sppf, node) _); [INFO] [stderr] 1898 | Concat::from_sppf(self.parser, node, r) [INFO] [stderr] 1899 | }).map_err(|::gll::runtime::MoreThanOne| Ambiguity(self)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2781:21 [INFO] [stderr] | [INFO] [stderr] 2781 | / if p.input_consume_left(_range, " ").is_none() { [INFO] [stderr] 2782 | | if p.input_consume_left(_range, "\t").is_none() { [INFO] [stderr] 2783 | | if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2784 | | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2792 | | } [INFO] [stderr] 2793 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2781 | if p.input_consume_left(_range, " ").is_none() && p.input_consume_left(_range, "\t").is_none() { [INFO] [stderr] 2782 | if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2783 | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2784 | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2782:25 [INFO] [stderr] | [INFO] [stderr] 2782 | / if p.input_consume_left(_range, "\t").is_none() { [INFO] [stderr] 2783 | | if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2784 | | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2785 | | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2791 | | } [INFO] [stderr] 2792 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2782 | if p.input_consume_left(_range, "\t").is_none() && p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2783 | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2784 | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2783:29 [INFO] [stderr] | [INFO] [stderr] 2783 | / if p.input_consume_left(_range, "\n").is_none() { [INFO] [stderr] 2784 | | if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2785 | | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2786 | | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2790 | | } [INFO] [stderr] 2791 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2783 | if p.input_consume_left(_range, "\n").is_none() && p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2784 | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] 2788 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2784:33 [INFO] [stderr] | [INFO] [stderr] 2784 | / if p.input_consume_left(_range, "\r").is_none() { [INFO] [stderr] 2785 | | if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2786 | | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2787 | | p.ret(c, _range); [INFO] [stderr] 2788 | | } [INFO] [stderr] 2789 | | } [INFO] [stderr] 2790 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2784 | if p.input_consume_left(_range, "\r").is_none() && p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2785 | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] 2788 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2785:37 [INFO] [stderr] | [INFO] [stderr] 2785 | / if p.input_consume_left(_range, "//").is_none() { [INFO] [stderr] 2786 | | if p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2787 | | p.ret(c, _range); [INFO] [stderr] 2788 | | } [INFO] [stderr] 2789 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2785 | if p.input_consume_left(_range, "//").is_none() && p.input_consume_left(_range, "/*").is_none() { [INFO] [stderr] 2786 | p.ret(c, _range); [INFO] [stderr] 2787 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2925:21 [INFO] [stderr] | [INFO] [stderr] 2925 | / if p.input_consume_left(_range, 'a'..='z').is_none() { [INFO] [stderr] 2926 | | if p.input_consume_left(_range, 'A'..='Z').is_none() { [INFO] [stderr] 2927 | | if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2928 | | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] ... | [INFO] [stderr] 2932 | | } [INFO] [stderr] 2933 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2925 | if p.input_consume_left(_range, 'a'..='z').is_none() && p.input_consume_left(_range, 'A'..='Z').is_none() { [INFO] [stderr] 2926 | if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2927 | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2928 | p.ret(c, _range); [INFO] [stderr] 2929 | } [INFO] [stderr] 2930 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2926:25 [INFO] [stderr] | [INFO] [stderr] 2926 | / if p.input_consume_left(_range, 'A'..='Z').is_none() { [INFO] [stderr] 2927 | | if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2928 | | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2929 | | p.ret(c, _range); [INFO] [stderr] 2930 | | } [INFO] [stderr] 2931 | | } [INFO] [stderr] 2932 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2926 | if p.input_consume_left(_range, 'A'..='Z').is_none() && p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2927 | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2928 | p.ret(c, _range); [INFO] [stderr] 2929 | } [INFO] [stderr] 2930 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2927:29 [INFO] [stderr] | [INFO] [stderr] 2927 | / if p.input_consume_left(_range, "_").is_none() { [INFO] [stderr] 2928 | | if p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2929 | | p.ret(c, _range); [INFO] [stderr] 2930 | | } [INFO] [stderr] 2931 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2927 | if p.input_consume_left(_range, "_").is_none() && p.input_consume_left(_range, '0'..='9').is_none() { [INFO] [stderr] 2928 | p.ret(c, _range); [INFO] [stderr] 2929 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2976:21 [INFO] [stderr] | [INFO] [stderr] 2976 | / if p.input_consume_left(_range, "\\").is_none() { [INFO] [stderr] 2977 | | if p.input_consume_left(_range, "\"").is_none() { [INFO] [stderr] 2978 | | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 2979 | | c.code = _C::StrLit__1__1; [INFO] [stderr] ... | [INFO] [stderr] 2982 | | } [INFO] [stderr] 2983 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 2976 | if p.input_consume_left(_range, "\\").is_none() && p.input_consume_left(_range, "\"").is_none() { [INFO] [stderr] 2977 | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 2978 | c.code = _C::StrLit__1__1; [INFO] [stderr] 2979 | p.threads.spawn(c, _range); [INFO] [stderr] 2980 | } [INFO] [stderr] 2981 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:3004:25 [INFO] [stderr] | [INFO] [stderr] 3004 | / if p.input_consume_left(_range, "\\").is_none() { [INFO] [stderr] 3005 | | if p.input_consume_left(_range, "\'").is_none() { [INFO] [stderr] 3006 | | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 3007 | | c.code = _C::CharLit__0; [INFO] [stderr] ... | [INFO] [stderr] 3010 | | } [INFO] [stderr] 3011 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 3004 | if p.input_consume_left(_range, "\\").is_none() && p.input_consume_left(_range, "\'").is_none() { [INFO] [stderr] 3005 | if let Some(_range) = p.input_consume_left(_range, '\u{0}'..='\u{10ffff}') { [INFO] [stderr] 3006 | c.code = _C::CharLit__0; [INFO] [stderr] 3007 | p.threads.spawn(c, _range); [INFO] [stderr] 3008 | } [INFO] [stderr] 3009 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:34:10 [INFO] [stderr] | [INFO] [stderr] 34 | ) -> Option>, &str, OrderMap<&str, OrderSet>>)>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/generate/rust.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | if path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:108:22 [INFO] [stderr] | [INFO] [stderr] 108 | parse_nodes: &RefCell< [INFO] [stderr] | ______________________^ [INFO] [stderr] 109 | | OrderMap>)>, [INFO] [stderr] 110 | | >, [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:168:22 [INFO] [stderr] | [INFO] [stderr] 168 | parse_nodes: &RefCell< [INFO] [stderr] | ______________________^ [INFO] [stderr] 169 | | OrderMap>)>, [INFO] [stderr] 170 | | >, [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 70 [INFO] [stderr] --> src/generate/rust.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / pub fn generate_rust_with_options(&self, options: Options) -> String { [INFO] [stderr] 236 | | self.check(); [INFO] [stderr] 237 | | [INFO] [stderr] 238 | | let mut out = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 1019 | | out [INFO] [stderr] 1020 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/generate/rust.rs:862:9 [INFO] [stderr] | [INFO] [stderr] 862 | / let mut substitute = vec![]; [INFO] [stderr] 863 | | if options.no_macros { [INFO] [stderr] 864 | | substitute = all_parse_nodes.iter().enumerate().map(|(i, (kind, _, _))| { [INFO] [stderr] 865 | | (kind.to_string(), format!("_P::_{}", i)) [INFO] [stderr] ... | [INFO] [stderr] 876 | | "); [INFO] [stderr] 877 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 862 | let substitute = if options.no_macros { all_parse_nodes.iter().enumerate().map(|(i, (kind, _, _))| { [INFO] [stderr] 863 | (kind.to_string(), format!("_P::_{}", i)) [INFO] [stderr] 864 | }).collect() } else { ..; < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/generate/rust.rs:1059:18 [INFO] [stderr] | [INFO] [stderr] 1059 | fn to_inline(&mut self) -> &mut String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/generate/rust.rs:1079:17 [INFO] [stderr] | [INFO] [stderr] 1079 | fn to_label(&mut self) -> &mut CodeLabel { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/generate/rust.rs:1289:24 [INFO] [stderr] | [INFO] [stderr] 1289 | if let None = nested_frames[child_cont.nested_frames.len() - 1] { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 1290 | | let inner_fn_label = mem::replace(child_cont.fn_code_label, outer_fn_label); [INFO] [stderr] 1291 | | child_cont.reify_as(inner_fn_label); [INFO] [stderr] 1292 | | child_cont = [INFO] [stderr] 1293 | | call(mem::replace(child_cont.to_label(), ret_label)).apply(child_cont); [INFO] [stderr] 1294 | | *child_cont.nested_frames.last_mut().unwrap() = None; [INFO] [stderr] 1295 | | } [INFO] [stderr] | |_________________- help: try this: `if nested_frames[child_cont.nested_frames.len() - 1].is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:1346:22 [INFO] [stderr] | [INFO] [stderr] 1346 | parse_nodes: Option<&'a RefCell>)>>> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:34:10 [INFO] [stderr] | [INFO] [stderr] 34 | ) -> Option>, &str, OrderMap<&str, OrderSet>>)>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/generate/rust.rs:45:24 [INFO] [stderr] | [INFO] [stderr] 45 | if path.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `path.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:108:22 [INFO] [stderr] | [INFO] [stderr] 108 | parse_nodes: &RefCell< [INFO] [stderr] | ______________________^ [INFO] [stderr] 109 | | OrderMap>)>, [INFO] [stderr] 110 | | >, [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:168:22 [INFO] [stderr] | [INFO] [stderr] 168 | parse_nodes: &RefCell< [INFO] [stderr] | ______________________^ [INFO] [stderr] 169 | | OrderMap>)>, [INFO] [stderr] 170 | | >, [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:1452:22 [INFO] [stderr] | [INFO] [stderr] 1452 | parse_nodes: &RefCell< [INFO] [stderr] | ______________________^ [INFO] [stderr] 1453 | | OrderMap, (ParseNodeKind, Option>)>, [INFO] [stderr] 1454 | | >, [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/generate/rust.rs:1477:21 [INFO] [stderr] | [INFO] [stderr] 1477 | / write!( [INFO] [stderr] 1478 | | s, [INFO] [stderr] 1479 | | "{} _{}: {} => {},", [INFO] [stderr] 1480 | | i, [INFO] [stderr] ... | [INFO] [stderr] 1483 | | rule.generate_traverse_shape(true, parse_nodes) [INFO] [stderr] 1484 | | ); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/generate/rust.rs:1486:17 [INFO] [stderr] | [INFO] [stderr] 1486 | write!(s, " }}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 70 [INFO] [stderr] --> src/generate/rust.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / pub fn generate_rust_with_options(&self, options: Options) -> String { [INFO] [stderr] 236 | | self.check(); [INFO] [stderr] 237 | | [INFO] [stderr] 238 | | let mut out = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 1019 | | out [INFO] [stderr] 1020 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `grammar::Grammar` [INFO] [stderr] --> src/grammar.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / pub fn new() -> Self { [INFO] [stderr] 44 | | Grammar { [INFO] [stderr] 45 | | rules: OrderMap::new(), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 38 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/runtime.rs:63:20 [INFO] [stderr] | [INFO] [stderr] 63 | .split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/runtime.rs:103:18 [INFO] [stderr] | [INFO] [stderr] 103 | unsafe { self.begin().offset(self.0.len() as isize) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.begin().add(self.0.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/generate/rust.rs:862:9 [INFO] [stderr] | [INFO] [stderr] 862 | / let mut substitute = vec![]; [INFO] [stderr] 863 | | if options.no_macros { [INFO] [stderr] 864 | | substitute = all_parse_nodes.iter().enumerate().map(|(i, (kind, _, _))| { [INFO] [stderr] 865 | | (kind.to_string(), format!("_P::_{}", i)) [INFO] [stderr] ... | [INFO] [stderr] 876 | | "); [INFO] [stderr] 877 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 862 | let substitute = if options.no_macros { all_parse_nodes.iter().enumerate().map(|(i, (kind, _, _))| { [INFO] [stderr] 863 | (kind.to_string(), format!("_P::_{}", i)) [INFO] [stderr] 864 | }).collect() } else { ..; < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/runtime.rs:368:24 [INFO] [stderr] | [INFO] [stderr] 368 | if !t.range.contains(old.range.start()).is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `t.range.contains(old.range.start()).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `runtime::nd::Id` [INFO] [stderr] --> src/runtime.rs:739:9 [INFO] [stderr] | [INFO] [stderr] 739 | / pub fn new() -> Self { [INFO] [stderr] 740 | | Id(PhantomData) [INFO] [stderr] 741 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 736 | #[derive(Default)] [INFO] [stderr] 737 | pub struct Id(PhantomData); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/generate/rust.rs:1059:18 [INFO] [stderr] | [INFO] [stderr] 1059 | fn to_inline(&mut self) -> &mut String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/generate/rust.rs:1079:17 [INFO] [stderr] | [INFO] [stderr] 1079 | fn to_label(&mut self) -> &mut CodeLabel { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/generate/rust.rs:1289:24 [INFO] [stderr] | [INFO] [stderr] 1289 | if let None = nested_frames[child_cont.nested_frames.len() - 1] { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 1290 | | let inner_fn_label = mem::replace(child_cont.fn_code_label, outer_fn_label); [INFO] [stderr] 1291 | | child_cont.reify_as(inner_fn_label); [INFO] [stderr] 1292 | | child_cont = [INFO] [stderr] 1293 | | call(mem::replace(child_cont.to_label(), ret_label)).apply(child_cont); [INFO] [stderr] 1294 | | *child_cont.nested_frames.last_mut().unwrap() = None; [INFO] [stderr] 1295 | | } [INFO] [stderr] | |_________________- help: try this: `if nested_frames[child_cont.nested_frames.len() - 1].is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:1346:22 [INFO] [stderr] | [INFO] [stderr] 1346 | parse_nodes: Option<&'a RefCell>)>>> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/generate/rust.rs:1452:22 [INFO] [stderr] | [INFO] [stderr] 1452 | parse_nodes: &RefCell< [INFO] [stderr] | ______________________^ [INFO] [stderr] 1453 | | OrderMap, (ParseNodeKind, Option>)>, [INFO] [stderr] 1454 | | >, [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:958:31 [INFO] [stderr] | [INFO] [stderr] 958 | fn one_list_head(self) -> ListHead, Handle<'a, 'i, I, [T]>), Ambiguity>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/generate/rust.rs:1477:21 [INFO] [stderr] | [INFO] [stderr] 1477 | / write!( [INFO] [stderr] 1478 | | s, [INFO] [stderr] 1479 | | "{} _{}: {} => {},", [INFO] [stderr] 1480 | | i, [INFO] [stderr] ... | [INFO] [stderr] 1483 | | rule.generate_traverse_shape(true, parse_nodes) [INFO] [stderr] 1484 | | ); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/generate/rust.rs:1486:17 [INFO] [stderr] | [INFO] [stderr] 1486 | write!(s, " }}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `grammar::Grammar` [INFO] [stderr] --> src/grammar.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / pub fn new() -> Self { [INFO] [stderr] 44 | | Grammar { [INFO] [stderr] 45 | | rules: OrderMap::new(), [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 38 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/runtime.rs:63:20 [INFO] [stderr] | [INFO] [stderr] 63 | .split("\n") [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/runtime.rs:103:18 [INFO] [stderr] | [INFO] [stderr] 103 | unsafe { self.begin().offset(self.0.len() as isize) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.begin().add(self.0.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/runtime.rs:368:24 [INFO] [stderr] | [INFO] [stderr] 368 | if !t.range.contains(old.range.start()).is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `t.range.contains(old.range.start()).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `runtime::nd::Id` [INFO] [stderr] --> src/runtime.rs:739:9 [INFO] [stderr] | [INFO] [stderr] 739 | / pub fn new() -> Self { [INFO] [stderr] 740 | | Id(PhantomData) [INFO] [stderr] 741 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 736 | #[derive(Default)] [INFO] [stderr] 737 | pub struct Id(PhantomData); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:958:31 [INFO] [stderr] | [INFO] [stderr] 958 | fn one_list_head(self) -> ListHead, Handle<'a, 'i, I, [T]>), Ambiguity>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 108 [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2775:1 [INFO] [stderr] | [INFO] [stderr] 2775 | / fn parse(p: &mut ::gll::runtime::Parser<_P, _C, I>) [INFO] [stderr] 2776 | | where I: ::gll::runtime::Input [INFO] [stderr] 2777 | | { [INFO] [stderr] 2778 | | while let Some(Call { callee: mut c, range: _range }) = p.threads.steal() { [INFO] [stderr] ... | [INFO] [stderr] 3530 | | } [INFO] [stderr] 3531 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 108 [INFO] [stderr] --> /opt/crater/target/debug/build/gll-2d2ee29eaa4faf6a/out/parse_grammar.rs:2775:1 [INFO] [stderr] | [INFO] [stderr] 2775 | / fn parse(p: &mut ::gll::runtime::Parser<_P, _C, I>) [INFO] [stderr] 2776 | | where I: ::gll::runtime::Input [INFO] [stderr] 2777 | | { [INFO] [stderr] 2778 | | while let Some(Call { callee: mut c, range: _range }) = p.threads.steal() { [INFO] [stderr] ... | [INFO] [stderr] 3530 | | } [INFO] [stderr] 3531 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 17.50s [INFO] running `"docker" "inspect" "16975e34184ad0b246255bdf9a1e80ca99d17bf79f0c2156de7418eee77a5042"` [INFO] running `"docker" "rm" "-f" "16975e34184ad0b246255bdf9a1e80ca99d17bf79f0c2156de7418eee77a5042"` [INFO] [stdout] 16975e34184ad0b246255bdf9a1e80ca99d17bf79f0c2156de7418eee77a5042