[INFO] crate gherkin_rust 0.4.1 is already in cache [INFO] extracting crate gherkin_rust 0.4.1 into work/ex/clippy-test-run/sources/stable/reg/gherkin_rust/0.4.1 [INFO] extracting crate gherkin_rust 0.4.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gherkin_rust/0.4.1 [INFO] validating manifest of gherkin_rust-0.4.1 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 gherkin_rust-0.4.1 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 gherkin_rust-0.4.1 [INFO] removed 1 missing tests [INFO] finished frobbing gherkin_rust-0.4.1 [INFO] frobbed toml for gherkin_rust-0.4.1 written to work/ex/clippy-test-run/sources/stable/reg/gherkin_rust/0.4.1/Cargo.toml [INFO] started frobbing gherkin_rust-0.4.1 [INFO] removed 1 missing tests [INFO] finished frobbing gherkin_rust-0.4.1 [INFO] frobbed toml for gherkin_rust-0.4.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gherkin_rust/0.4.1/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 gherkin_rust-0.4.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/gherkin_rust/0.4.1:/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] 80976a4cd5e6f542044b91ebe0856f21e9dbe52137dc233de65ee3c5e4830be9 [INFO] running `"docker" "start" "-a" "80976a4cd5e6f542044b91ebe0856f21e9dbe52137dc233de65ee3c5e4830be9"` [INFO] [stderr] warning: An explicit [[test]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other test targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a test target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/tests/cucumber.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a test target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autotests = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] Checking gherkin_rust v0.3.1 [INFO] [stderr] Checking gherkin_rust v0.4.1 (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parser.rs:15:18 [INFO] [stderr] | [INFO] [stderr] 15 | const _GRAMMAR: &'static str = include_str!("./feature.pest"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:535:13 [INFO] [stderr] | [INFO] [stderr] 535 | positives: _, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:536:13 [INFO] [stderr] | [INFO] [stderr] 536 | negatives: _ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `ParsingError { pos, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:540:13 [INFO] [stderr] | [INFO] [stderr] 540 | message: _ [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `CustomErrorPos { pos, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] Checking cucumber_rust v0.3.4 [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:188:1 [INFO] [stderr] | [INFO] [stderr] 188 | / fn parse_tags<'a>(outer_rule: pest::iterators::Pair<'a, parser::Rule>) -> Vec { [INFO] [stderr] 189 | | let mut tags = vec![]; [INFO] [stderr] 190 | | [INFO] [stderr] 191 | | for rule in outer_rule.into_inner() { [INFO] [stderr] ... | [INFO] [stderr] 201 | | tags [INFO] [stderr] 202 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:192:9 [INFO] [stderr] | [INFO] [stderr] 192 | / match rule.as_rule() { [INFO] [stderr] 193 | | parser::Rule::tag => { [INFO] [stderr] 194 | | let tag = rule.clone().into_span().as_str().to_string(); [INFO] [stderr] 195 | | tags.push(tag); [INFO] [stderr] 196 | | }, [INFO] [stderr] 197 | | _ => {} [INFO] [stderr] 198 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 192 | if let parser::Rule::tag = rule.as_rule() { [INFO] [stderr] 193 | let tag = rule.clone().into_span().as_str().to_string(); [INFO] [stderr] 194 | tags.push(tag); [INFO] [stderr] 195 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:205:5 [INFO] [stderr] | [INFO] [stderr] 205 | / pub fn try_from<'a>(s: &'a str) -> Result { [INFO] [stderr] 206 | | use pest::Parser; [INFO] [stderr] 207 | | use parser::*; [INFO] [stderr] 208 | | [INFO] [stderr] ... | [INFO] [stderr] 213 | | Ok(Feature::from(inner_pair)) [INFO] [stderr] 214 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:278:20 [INFO] [stderr] | [INFO] [stderr] 278 | if s.ends_with("\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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:286:5 [INFO] [stderr] | [INFO] [stderr] 286 | / fn from_rule_with_context<'a>(outer_rule: pest::iterators::Pair<'a, parser::Rule>, context: Option) -> Self { [INFO] [stderr] 287 | | let mut builder = StepBuilder::default(); [INFO] [stderr] 288 | | [INFO] [stderr] 289 | | for rule in outer_rule.into_inner() { [INFO] [stderr] ... | [INFO] [stderr] 322 | | builder.build().expect("step to be built") [INFO] [stderr] 323 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:325:5 [INFO] [stderr] | [INFO] [stderr] 325 | / fn vec_from_rule<'a>(rule: pest::iterators::Pair<'a, parser::Rule>) -> Vec { [INFO] [stderr] 326 | | let mut steps: Vec = vec![]; [INFO] [stderr] 327 | | [INFO] [stderr] 328 | | for pair in rule.into_inner() { [INFO] [stderr] ... | [INFO] [stderr] 338 | | steps [INFO] [stderr] 339 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:329:13 [INFO] [stderr] | [INFO] [stderr] 329 | / match pair.as_rule() { [INFO] [stderr] 330 | | parser::Rule::step => { [INFO] [stderr] 331 | | let s = Step::from_rule_with_context(pair, steps.last().map(|x| x.ty)); [INFO] [stderr] 332 | | steps.push(s); [INFO] [stderr] 333 | | }, [INFO] [stderr] 334 | | _ => {} [INFO] [stderr] 335 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 329 | if let parser::Rule::step = pair.as_rule() { [INFO] [stderr] 330 | let s = Step::from_rule_with_context(pair, steps.last().map(|x| x.ty)); [INFO] [stderr] 331 | steps.push(s); [INFO] [stderr] 332 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lib.rs:439:9 [INFO] [stderr] | [INFO] [stderr] 439 | / fn row_from_inner<'a>(inner: pest::iterators::Pairs<'a, parser::Rule>) -> Vec { [INFO] [stderr] 440 | | let mut rows = vec![]; [INFO] [stderr] 441 | | for pair in inner { [INFO] [stderr] 442 | | match pair.as_rule() { [INFO] [stderr] ... | [INFO] [stderr] 449 | | rows [INFO] [stderr] 450 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:442:17 [INFO] [stderr] | [INFO] [stderr] 442 | / match pair.as_rule() { [INFO] [stderr] 443 | | parser::Rule::table_field => { [INFO] [stderr] 444 | | rows.push(pair.clone().into_span().as_str().trim().to_string()); [INFO] [stderr] 445 | | }, [INFO] [stderr] 446 | | _ => {} [INFO] [stderr] 447 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 442 | if let parser::Rule::table_field = pair.as_rule() { [INFO] [stderr] 443 | rows.push(pair.clone().into_span().as_str().trim().to_string()); [INFO] [stderr] 444 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/cucumber_rust-0.3.4/src/lib.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | #![feature(set_stdio)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> /opt/crater/cargo-home/registry/src/github.com-1ecc6299db9ec823/cucumber_rust-0.3.4/src/lib.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | #![feature(fnbox)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `cucumber_rust`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "80976a4cd5e6f542044b91ebe0856f21e9dbe52137dc233de65ee3c5e4830be9"` [INFO] running `"docker" "rm" "-f" "80976a4cd5e6f542044b91ebe0856f21e9dbe52137dc233de65ee3c5e4830be9"` [INFO] [stdout] 80976a4cd5e6f542044b91ebe0856f21e9dbe52137dc233de65ee3c5e4830be9