[INFO] crate relexer-derive 0.1.0 is already in cache [INFO] extracting crate relexer-derive 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/relexer-derive/0.1.0 [INFO] extracting crate relexer-derive 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/relexer-derive/0.1.0 [INFO] validating manifest of relexer-derive-0.1.0 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 relexer-derive-0.1.0 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 relexer-derive-0.1.0 [INFO] finished frobbing relexer-derive-0.1.0 [INFO] frobbed toml for relexer-derive-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/relexer-derive/0.1.0/Cargo.toml [INFO] started frobbing relexer-derive-0.1.0 [INFO] finished frobbing relexer-derive-0.1.0 [INFO] frobbed toml for relexer-derive-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/relexer-derive/0.1.0/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 relexer-derive-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/relexer-derive/0.1.0:/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] dfb2bb4a12817f1de8da617e1dbf172fe4f300f522c00e54bb460cc35b4309df [INFO] running `"docker" "start" "-a" "dfb2bb4a12817f1de8da617e1dbf172fe4f300f522c00e54bb460cc35b4309df"` [INFO] [stderr] Checking syn v0.11.11 [INFO] [stderr] Checking synstructure v0.6.1 [INFO] [stderr] Checking relexer-derive v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [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:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / match s.ast().body { [INFO] [stderr] 16 | | syn::Body::Struct(_) => panic!("#[derive(Token)] only works on Enums"), [INFO] [stderr] 17 | | _ => {} [INFO] [stderr] 18 | | }; [INFO] [stderr] | |_____^ help: try this: `if let syn::Body::Struct(_) = s.ast().body { panic!("#[derive(Token)] only works on Enums") }` [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] [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:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | / match a.value { [INFO] [stderr] 81 | | syn::MetaItem::Word(ref id) => { [INFO] [stderr] 82 | | if id == "skip" { [INFO] [stderr] 83 | | return true [INFO] [stderr] ... | [INFO] [stderr] 86 | | _ => {} [INFO] [stderr] 87 | | } [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] 80 | if let syn::MetaItem::Word(ref id) = a.value { [INFO] [stderr] 81 | if id == "skip" { [INFO] [stderr] 82 | return true [INFO] [stderr] 83 | } [INFO] [stderr] 84 | } [INFO] [stderr] | [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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match a.value { [INFO] [stderr] 96 | | syn::MetaItem::NameValue(ref id, ref lit) => { [INFO] [stderr] 97 | | match *lit { [INFO] [stderr] 98 | | syn::Lit::Str(ref l, _) => { [INFO] [stderr] ... | [INFO] [stderr] 106 | | _ => {} [INFO] [stderr] 107 | | } [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] 95 | if let syn::MetaItem::NameValue(ref id, ref lit) = a.value { [INFO] [stderr] 96 | match *lit { [INFO] [stderr] 97 | syn::Lit::Str(ref l, _) => { [INFO] [stderr] 98 | if id == "expr" { [INFO] [stderr] 99 | expr = Some(l.as_str()); [INFO] [stderr] 100 | } [INFO] [stderr] ... [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:97:17 [INFO] [stderr] | [INFO] [stderr] 97 | / match *lit { [INFO] [stderr] 98 | | syn::Lit::Str(ref l, _) => { [INFO] [stderr] 99 | | if id == "expr" { [INFO] [stderr] 100 | | expr = Some(l.as_str()); [INFO] [stderr] ... | [INFO] [stderr] 103 | | _ => {} [INFO] [stderr] 104 | | } [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] 97 | if let syn::Lit::Str(ref l, _) = *lit { [INFO] [stderr] 98 | if id == "expr" { [INFO] [stderr] 99 | expr = Some(l.as_str()); [INFO] [stderr] 100 | } [INFO] [stderr] 101 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:109:18 [INFO] [stderr] | [INFO] [stderr] 109 | let e = expr.expect(&format!("#[derive(Token)] requires all variants to have the `expr` attribute: `{}`", v.ident.as_ref())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("#[derive(Token)] requires all variants to have the `expr` attribute: `{}`", v.ident.as_ref()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:110:38 [INFO] [stderr] | [INFO] [stderr] 110 | let regex = regex::Regex::new(e).expect(&format!("#[derive(Token)] Invalid regex for variant `{}`",v.ident.as_ref())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("#[derive(Token)] Invalid regex for variant `{}`", v.ident.as_ref()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [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:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / match s.ast().body { [INFO] [stderr] 16 | | syn::Body::Struct(_) => panic!("#[derive(Token)] only works on Enums"), [INFO] [stderr] 17 | | _ => {} [INFO] [stderr] 18 | | }; [INFO] [stderr] | |_____^ help: try this: `if let syn::Body::Struct(_) = s.ast().body { panic!("#[derive(Token)] only works on Enums") }` [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] [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:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | / match a.value { [INFO] [stderr] 81 | | syn::MetaItem::Word(ref id) => { [INFO] [stderr] 82 | | if id == "skip" { [INFO] [stderr] 83 | | return true [INFO] [stderr] ... | [INFO] [stderr] 86 | | _ => {} [INFO] [stderr] 87 | | } [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] 80 | if let syn::MetaItem::Word(ref id) = a.value { [INFO] [stderr] 81 | if id == "skip" { [INFO] [stderr] 82 | return true [INFO] [stderr] 83 | } [INFO] [stderr] 84 | } [INFO] [stderr] | [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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match a.value { [INFO] [stderr] 96 | | syn::MetaItem::NameValue(ref id, ref lit) => { [INFO] [stderr] 97 | | match *lit { [INFO] [stderr] 98 | | syn::Lit::Str(ref l, _) => { [INFO] [stderr] ... | [INFO] [stderr] 106 | | _ => {} [INFO] [stderr] 107 | | } [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] 95 | if let syn::MetaItem::NameValue(ref id, ref lit) = a.value { [INFO] [stderr] 96 | match *lit { [INFO] [stderr] 97 | syn::Lit::Str(ref l, _) => { [INFO] [stderr] 98 | if id == "expr" { [INFO] [stderr] 99 | expr = Some(l.as_str()); [INFO] [stderr] 100 | } [INFO] [stderr] ... [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:97:17 [INFO] [stderr] | [INFO] [stderr] 97 | / match *lit { [INFO] [stderr] 98 | | syn::Lit::Str(ref l, _) => { [INFO] [stderr] 99 | | if id == "expr" { [INFO] [stderr] 100 | | expr = Some(l.as_str()); [INFO] [stderr] ... | [INFO] [stderr] 103 | | _ => {} [INFO] [stderr] 104 | | } [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] 97 | if let syn::Lit::Str(ref l, _) = *lit { [INFO] [stderr] 98 | if id == "expr" { [INFO] [stderr] 99 | expr = Some(l.as_str()); [INFO] [stderr] 100 | } [INFO] [stderr] 101 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:109:18 [INFO] [stderr] | [INFO] [stderr] 109 | let e = expr.expect(&format!("#[derive(Token)] requires all variants to have the `expr` attribute: `{}`", v.ident.as_ref())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("#[derive(Token)] requires all variants to have the `expr` attribute: `{}`", v.ident.as_ref()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/lib.rs:110:38 [INFO] [stderr] | [INFO] [stderr] 110 | let regex = regex::Regex::new(e).expect(&format!("#[derive(Token)] Invalid regex for variant `{}`",v.ident.as_ref())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("#[derive(Token)] Invalid regex for variant `{}`", v.ident.as_ref()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 5.12s [INFO] running `"docker" "inspect" "dfb2bb4a12817f1de8da617e1dbf172fe4f300f522c00e54bb460cc35b4309df"` [INFO] running `"docker" "rm" "-f" "dfb2bb4a12817f1de8da617e1dbf172fe4f300f522c00e54bb460cc35b4309df"` [INFO] [stdout] dfb2bb4a12817f1de8da617e1dbf172fe4f300f522c00e54bb460cc35b4309df