[INFO] fetching crate sol-cerberus-macros 0.1.10... [INFO] linting sol-cerberus-macros-0.1.10 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate sol-cerberus-macros 0.1.10 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate sol-cerberus-macros 0.1.10 [INFO] finished tweaking crates.io crate sol-cerberus-macros 0.1.10 [INFO] tweaked toml for crates.io crate sol-cerberus-macros 0.1.10 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate sol-cerberus-macros 0.1.10 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 4 packages to latest compatible versions [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 813501925b099c3fc9632235ae4ca87c2f944af45e50cc9af4d3bf23404eb0e0 [INFO] running `Command { std: "docker" "start" "-a" "813501925b099c3fc9632235ae4ca87c2f944af45e50cc9af4d3bf23404eb0e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "813501925b099c3fc9632235ae4ca87c2f944af45e50cc9af4d3bf23404eb0e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "813501925b099c3fc9632235ae4ca87c2f944af45e50cc9af4d3bf23404eb0e0", kill_on_drop: false }` [INFO] [stdout] 813501925b099c3fc9632235ae4ca87c2f944af45e50cc9af4d3bf23404eb0e0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3754531f0e96ce3941f1fc59629f0a3f1d6cdffb89f8a205f85fc16ffc0a32f9 [INFO] running `Command { std: "docker" "start" "-a" "3754531f0e96ce3941f1fc59629f0a3f1d6cdffb89f8a205f85fc16ffc0a32f9", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Checking syn v2.0.117 [INFO] [stderr] Checking sol-cerberus-macros v0.1.10 (/opt/rustwide/workdir) [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> src/macros/rule.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | if text.is_empty() || text.as_bytes().len() > 16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `text.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `var_name` after checking its variant with `is_some` [INFO] [stdout] --> src/macros/rule.rs:70:24 [INFO] [stdout] | [INFO] [stdout] 68 | if var_name.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = var_name` [INFO] [stdout] 69 | for k in 0..3 { [INFO] [stdout] 70 | if var_name.unwrap() == var_names[k] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | if let Some(ref segment) = path.path.segments.first() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 11 - if let Some(ref segment) = path.path.segments.first() { [INFO] [stdout] 11 + if let Some(segment) = path.path.segments.first() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:28:25 [INFO] [stdout] | [INFO] [stdout] 28 | / if let syn::GenericArgument::Type(Type::Path(path)) = last_arg { [INFO] [stdout] 29 | | if path.path.is_ident("System") { [INFO] [stdout] 30 | | return true; [INFO] [stdout] 31 | | } [INFO] [stdout] 32 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:27:33 [INFO] [stdout] | [INFO] [stdout] 27 | if let Some(last_arg) = args.last() { [INFO] [stdout] | ^^^^^^^^ replace this binding [INFO] [stdout] 28 | if let syn::GenericArgument::Type(Type::Path(path)) = last_arg { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:45:36 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn sol_cerberus_accounts_macro<'info>(_: TokenStream, item: TokenStream) -> TokenStream { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:79:8 [INFO] [stdout] | [INFO] [stdout] 79 | if !item.generics.lifetimes().next().is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `item.generics.lifetimes().next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> src/macros/rule.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | if text.is_empty() || text.as_bytes().len() > 16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `text.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `var_name` after checking its variant with `is_some` [INFO] [stdout] --> src/macros/rule.rs:70:24 [INFO] [stdout] | [INFO] [stdout] 68 | if var_name.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = var_name` [INFO] [stdout] 69 | for k in 0..3 { [INFO] [stdout] 70 | if var_name.unwrap() == var_names[k] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | if let Some(ref segment) = path.path.segments.first() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 11 - if let Some(ref segment) = path.path.segments.first() { [INFO] [stdout] 11 + if let Some(segment) = path.path.segments.first() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:28:25 [INFO] [stdout] | [INFO] [stdout] 28 | / if let syn::GenericArgument::Type(Type::Path(path)) = last_arg { [INFO] [stdout] 29 | | if path.path.is_ident("System") { [INFO] [stdout] 30 | | return true; [INFO] [stdout] 31 | | } [INFO] [stdout] 32 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:27:33 [INFO] [stdout] | [INFO] [stdout] 27 | if let Some(last_arg) = args.last() { [INFO] [stdout] | ^^^^^^^^ replace this binding [INFO] [stdout] 28 | if let syn::GenericArgument::Type(Type::Path(path)) = last_arg { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:45:36 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn sol_cerberus_accounts_macro<'info>(_: TokenStream, item: TokenStream) -> TokenStream { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:79:8 [INFO] [stdout] | [INFO] [stdout] 79 | if !item.generics.lifetimes().next().is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `item.generics.lifetimes().next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needless call to `as_bytes` [INFO] [stdout] --> src/macros/rule.rs:7:27 [INFO] [stdout] | [INFO] [stdout] 7 | if text.is_empty() || text.as_bytes().len() > 16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: `len()` can be called directly on strings: `text.len()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_as_bytes [INFO] [stdout] = note: `#[warn(clippy::needless_as_bytes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `var_name` after checking its variant with `is_some` [INFO] [stdout] --> src/macros/rule.rs:70:24 [INFO] [stdout] | [INFO] [stdout] 68 | if var_name.is_some() { [INFO] [stdout] | --------------------- help: try: `if let Some() = var_name` [INFO] [stdout] 69 | for k in 0..3 { [INFO] [stdout] 70 | if var_name.unwrap() == var_names[k] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern creates a reference to a reference [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | if let Some(ref segment) = path.path.segments.first() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 11 - if let Some(ref segment) = path.path.segments.first() { [INFO] [stdout] 11 + if let Some(segment) = path.path.segments.first() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:28:25 [INFO] [stdout] | [INFO] [stdout] 28 | / if let syn::GenericArgument::Type(Type::Path(path)) = last_arg { [INFO] [stdout] 29 | | if path.path.is_ident("System") { [INFO] [stdout] 30 | | return true; [INFO] [stdout] 31 | | } [INFO] [stdout] 32 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:27:33 [INFO] [stdout] | [INFO] [stdout] 27 | if let Some(last_arg) = args.last() { [INFO] [stdout] | ^^^^^^^^ replace this binding [INFO] [stdout] 28 | if let syn::GenericArgument::Type(Type::Path(path)) = last_arg { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:45:36 [INFO] [stdout] | [INFO] [stdout] 45 | pub fn sol_cerberus_accounts_macro<'info>(_: TokenStream, item: TokenStream) -> TokenStream { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/macros/sol_cerberus_accounts.rs:79:8 [INFO] [stdout] | [INFO] [stdout] 79 | if !item.generics.lifetimes().next().is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `item.generics.lifetimes().next().is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> tests/test_sol_cerberus_accounts.rs:59:28 [INFO] [stdout] | [INFO] [stdout] 59 | fn to_account_info(&self) -> AccountInfo { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 59 | fn to_account_info(&self) -> AccountInfo<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> tests/test_sol_cerberus_accounts.rs:102:28 [INFO] [stdout] | [INFO] [stdout] 102 | fn to_account_info(&self) -> AccountInfo { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 102 | fn to_account_info(&self) -> AccountInfo<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> tests/test_sol_cerberus_accounts.rs:115:28 [INFO] [stdout] | [INFO] [stdout] 115 | fn to_account_info(&self) -> AccountInfo { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 115 | fn to_account_info(&self) -> AccountInfo<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.65s [INFO] running `Command { std: "docker" "inspect" "3754531f0e96ce3941f1fc59629f0a3f1d6cdffb89f8a205f85fc16ffc0a32f9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3754531f0e96ce3941f1fc59629f0a3f1d6cdffb89f8a205f85fc16ffc0a32f9", kill_on_drop: false }` [INFO] [stdout] 3754531f0e96ce3941f1fc59629f0a3f1d6cdffb89f8a205f85fc16ffc0a32f9