[INFO] fetching crate tusks-lib 2.1.6... [INFO] linting tusks-lib-2.1.6 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate tusks-lib 2.1.6 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate tusks-lib 2.1.6 [INFO] finished tweaking crates.io crate tusks-lib 2.1.6 [INFO] tweaked toml for crates.io crate tusks-lib 2.1.6 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate tusks-lib 2.1.6 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] crate crates.io crate tusks-lib 2.1.6 already has a lockfile, it will not be regenerated [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-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 3e86203ba0c68318ae6f5772782f287008313f3ecf6e429b11c8c859d1084d37 [INFO] running `Command { std: "docker" "start" "-a" "3e86203ba0c68318ae6f5772782f287008313f3ecf6e429b11c8c859d1084d37", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3e86203ba0c68318ae6f5772782f287008313f3ecf6e429b11c8c859d1084d37", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3e86203ba0c68318ae6f5772782f287008313f3ecf6e429b11c8c859d1084d37", kill_on_drop: false }` [INFO] [stdout] 3e86203ba0c68318ae6f5772782f287008313f3ecf6e429b11c8c859d1084d37 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 9e4c7336382ec411b8d86ede06d8560d1f882dd6549c4a54d8ea1ccace926b49 [INFO] running `Command { std: "docker" "start" "-a" "9e4c7336382ec411b8d86ede06d8560d1f882dd6549c4a54d8ea1ccace926b49", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.103 [INFO] [stderr] Compiling quote v1.0.42 [INFO] [stderr] Checking indexmap v2.12.1 [INFO] [stderr] Checking syn v2.0.111 [INFO] [stderr] Checking tusks-lib v2.1.6 (/opt/rustwide/workdir) [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parsing/module.rs:65:16 [INFO] [stdout] | [INFO] [stdout] 65 | if !self.external_parent.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.external_parent.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: unneeded `return` statement [INFO] [stdout] --> src/parsing/module.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 84 - return Ok(()); [INFO] [stdout] 84 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/parameters.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | / if let Some(field_name) = &field.ident { [INFO] [stdout] 29 | | if field_name == "super_" { [INFO] [stdout] 30 | | return Err(syn::Error::new_spanned( [INFO] [stdout] 31 | | field_name, [INFO] [stdout] ... | [INFO] [stdout] 36 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 28 ~ if let Some(field_name) = &field.ident [INFO] [stdout] 29 ~ && field_name == "super_" { [INFO] [stdout] 30 | return Err(syn::Error::new_spanned( [INFO] [stdout] ... [INFO] [stdout] 34 | )); [INFO] [stdout] 35 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/tusk.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | / if default_exists { [INFO] [stdout] 110 | | if let Some(attr) = item_fn.attrs.iter().find(|a| a.path().is_ident("default")) { [INFO] [stdout] 111 | | return Err(syn::Error::new_spanned( [INFO] [stdout] 112 | | attr, [INFO] [stdout] ... | [INFO] [stdout] 116 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 109 ~ if default_exists [INFO] [stdout] 110 ~ && let Some(attr) = item_fn.attrs.iter().find(|a| a.path().is_ident("default")) { [INFO] [stdout] 111 | return Err(syn::Error::new_spanned( [INFO] [stdout] ... [INFO] [stdout] 114 | )); [INFO] [stdout] 115 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/tusk.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | / if allow_external_subcommands { [INFO] [stdout] 154 | | if let syn::Type::Path(type_path) = &*pat_type.ty { [INFO] [stdout] 155 | | if is_vec_string(type_path) { [INFO] [stdout] 156 | | return Ok(()); [INFO] [stdout] ... | [INFO] [stdout] 159 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 153 ~ if allow_external_subcommands [INFO] [stdout] 154 ~ && let syn::Type::Path(type_path) = &*pat_type.ty { [INFO] [stdout] 155 | if is_vec_string(type_path) { [INFO] [stdout] 156 | return Ok(()); [INFO] [stdout] 157 | } [INFO] [stdout] 158 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/tusk.rs:154:13 [INFO] [stdout] | [INFO] [stdout] 154 | / if let syn::Type::Path(type_path) = &*pat_type.ty { [INFO] [stdout] 155 | | if is_vec_string(type_path) { [INFO] [stdout] 156 | | return Ok(()); [INFO] [stdout] 157 | | } [INFO] [stdout] 158 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 154 ~ if let syn::Type::Path(type_path) = &*pat_type.ty [INFO] [stdout] 155 ~ && is_vec_string(type_path) { [INFO] [stdout] 156 | return Ok(()); [INFO] [stdout] 157 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/parsing/attribute/models.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | / impl Default for TusksAttr { [INFO] [stdout] 27 | | fn default() -> Self { [INFO] [stdout] 28 | | Self { [INFO] [stdout] 29 | | debug: false, [INFO] [stdout] ... | [INFO] [stdout] 35 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 1 + #[derive(Default)] [INFO] [stdout] 2 | pub struct TusksAttr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parsing/module.rs:65:16 [INFO] [stdout] | [INFO] [stdout] 65 | if !self.external_parent.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.external_parent.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: unneeded `return` statement [INFO] [stdout] --> src/parsing/module.rs:84:9 [INFO] [stdout] | [INFO] [stdout] 84 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 84 - return Ok(()); [INFO] [stdout] 84 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/cli/module.rs:303:9 [INFO] [stdout] | [INFO] [stdout] 303 | / if let syn::Type::Reference(type_ref) = ty { [INFO] [stdout] 304 | | if let syn::Type::Path(type_path) = &*type_ref.elem { [INFO] [stdout] 305 | | if let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | | return segment.ident == *params_ident; [INFO] [stdout] ... | [INFO] [stdout] 309 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 303 ~ if let syn::Type::Reference(type_ref) = ty [INFO] [stdout] 304 ~ && let syn::Type::Path(type_path) = &*type_ref.elem { [INFO] [stdout] 305 | if let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | return segment.ident == *params_ident; [INFO] [stdout] 307 | } [INFO] [stdout] 308 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/cli/module.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | / if let syn::Type::Path(type_path) = &*type_ref.elem { [INFO] [stdout] 305 | | if let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | | return segment.ident == *params_ident; [INFO] [stdout] 307 | | } [INFO] [stdout] 308 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 304 ~ if let syn::Type::Path(type_path) = &*type_ref.elem [INFO] [stdout] 305 ~ && let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | return segment.ident == *params_ident; [INFO] [stdout] 307 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/parameters.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | / if let Some(field_name) = &field.ident { [INFO] [stdout] 29 | | if field_name == "super_" { [INFO] [stdout] 30 | | return Err(syn::Error::new_spanned( [INFO] [stdout] 31 | | field_name, [INFO] [stdout] ... | [INFO] [stdout] 36 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 28 ~ if let Some(field_name) = &field.ident [INFO] [stdout] 29 ~ && field_name == "super_" { [INFO] [stdout] 30 | return Err(syn::Error::new_spanned( [INFO] [stdout] ... [INFO] [stdout] 34 | )); [INFO] [stdout] 35 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/codegen/parameters/module.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | &mut parameters_struct, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `parameters_struct` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/codegen/parameters/module.rs:32:43 [INFO] [stdout] | [INFO] [stdout] 32 | Self::add_phantom_field_to_struct(&mut parameters_struct, &lifetime)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `parameters_struct` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/parameters/module.rs:44:21 [INFO] [stdout] | [INFO] [stdout] 44 | / if let syn::Item::Mod(m) = item { [INFO] [stdout] 45 | | if m.ident == submodule_data.name { [INFO] [stdout] 46 | | return Some(m); [INFO] [stdout] 47 | | } [INFO] [stdout] 48 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 44 ~ if let syn::Item::Mod(m) = item [INFO] [stdout] 45 ~ && m.ident == submodule_data.name { [INFO] [stdout] 46 | return Some(m); [INFO] [stdout] 47 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/tusk.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | / if default_exists { [INFO] [stdout] 110 | | if let Some(attr) = item_fn.attrs.iter().find(|a| a.path().is_ident("default")) { [INFO] [stdout] 111 | | return Err(syn::Error::new_spanned( [INFO] [stdout] 112 | | attr, [INFO] [stdout] ... | [INFO] [stdout] 116 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 109 ~ if default_exists [INFO] [stdout] 110 ~ && let Some(attr) = item_fn.attrs.iter().find(|a| a.path().is_ident("default")) { [INFO] [stdout] 111 | return Err(syn::Error::new_spanned( [INFO] [stdout] ... [INFO] [stdout] 114 | )); [INFO] [stdout] 115 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/tusk.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | / if allow_external_subcommands { [INFO] [stdout] 154 | | if let syn::Type::Path(type_path) = &*pat_type.ty { [INFO] [stdout] 155 | | if is_vec_string(type_path) { [INFO] [stdout] 156 | | return Ok(()); [INFO] [stdout] ... | [INFO] [stdout] 159 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 153 ~ if allow_external_subcommands [INFO] [stdout] 154 ~ && let syn::Type::Path(type_path) = &*pat_type.ty { [INFO] [stdout] 155 | if is_vec_string(type_path) { [INFO] [stdout] 156 | return Ok(()); [INFO] [stdout] 157 | } [INFO] [stdout] 158 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parsing/tusk.rs:154:13 [INFO] [stdout] | [INFO] [stdout] 154 | / if let syn::Type::Path(type_path) = &*pat_type.ty { [INFO] [stdout] 155 | | if is_vec_string(type_path) { [INFO] [stdout] 156 | | return Ok(()); [INFO] [stdout] 157 | | } [INFO] [stdout] 158 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 154 ~ if let syn::Type::Path(type_path) = &*pat_type.ty [INFO] [stdout] 155 ~ && is_vec_string(type_path) { [INFO] [stdout] 156 | return Ok(()); [INFO] [stdout] 157 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/parameters/module.rs:126:17 [INFO] [stdout] | [INFO] [stdout] 126 | / if let syn::Item::Struct(s) = item { [INFO] [stdout] 127 | | if s.ident == "Parameters" { [INFO] [stdout] 128 | | return Ok(s); [INFO] [stdout] 129 | | } [INFO] [stdout] 130 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 126 ~ if let syn::Item::Struct(s) = item [INFO] [stdout] 127 ~ && s.ident == "Parameters" { [INFO] [stdout] 128 | return Ok(s); [INFO] [stdout] 129 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/parsing/attribute/models.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | / impl Default for TusksAttr { [INFO] [stdout] 27 | | fn default() -> Self { [INFO] [stdout] 28 | | Self { [INFO] [stdout] 29 | | debug: false, [INFO] [stdout] ... | [INFO] [stdout] 35 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 1 + #[derive(Default)] [INFO] [stdout] 2 | pub struct TusksAttr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/handle_matches/module.rs:176:9 [INFO] [stdout] | [INFO] [stdout] 176 | / if let Some(syn::FnArg::Typed(first_param)) = tusk.func.sig.inputs.first() { [INFO] [stdout] 177 | | if let Some(ref params) = self.parameters { [INFO] [stdout] 178 | | return Self::is_parameters_type(&first_param.ty, ¶ms.pstruct.ident); [INFO] [stdout] 179 | | } [INFO] [stdout] 180 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 176 ~ if let Some(syn::FnArg::Typed(first_param)) = tusk.func.sig.inputs.first() [INFO] [stdout] 177 ~ && let Some(ref params) = self.parameters { [INFO] [stdout] 178 | return Self::is_parameters_type(&first_param.ty, ¶ms.pstruct.ident); [INFO] [stdout] 179 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/handle_matches/arms/function.rs:151:13 [INFO] [stdout] | [INFO] [stdout] 151 | / if let syn::FnArg::Typed(pat_type) = param { [INFO] [stdout] 152 | | if let syn::Pat::Ident(pat_ident) = &*pat_type.pat { [INFO] [stdout] 153 | | let field_name = &pat_ident.ident; [INFO] [stdout] 154 | | let binding_name = syn::Ident::new( [INFO] [stdout] ... | [INFO] [stdout] 161 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 151 ~ if let syn::FnArg::Typed(pat_type) = param [INFO] [stdout] 152 ~ && let syn::Pat::Ident(pat_ident) = &*pat_type.pat { [INFO] [stdout] 153 | let field_name = &pat_ident.ident; [INFO] [stdout] ... [INFO] [stdout] 159 | param_counter += 1; [INFO] [stdout] 160 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/handle_matches/arms/submodule.rs:69:17 [INFO] [stdout] | [INFO] [stdout] 69 | / if let Some(field_name) = &field.ident { [INFO] [stdout] 70 | | if field_name != "super_" { [INFO] [stdout] 71 | | let binding_name = syn::Ident::new(&format!("p{}", param_counter), Span::call_site()); [INFO] [stdout] 72 | | bindings.push((field_name.clone(), binding_name.clone())); [INFO] [stdout] ... | [INFO] [stdout] 75 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 69 ~ if let Some(field_name) = &field.ident [INFO] [stdout] 70 ~ && field_name != "super_" { [INFO] [stdout] 71 | let binding_name = syn::Ident::new(&format!("p{}", param_counter), Span::call_site()); [INFO] [stdout] 72 | bindings.push((field_name.clone(), binding_name.clone())); [INFO] [stdout] 73 | param_counter += 1; [INFO] [stdout] 74 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/cli/module.rs:303:9 [INFO] [stdout] | [INFO] [stdout] 303 | / if let syn::Type::Reference(type_ref) = ty { [INFO] [stdout] 304 | | if let syn::Type::Path(type_path) = &*type_ref.elem { [INFO] [stdout] 305 | | if let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | | return segment.ident == *params_ident; [INFO] [stdout] ... | [INFO] [stdout] 309 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 303 ~ if let syn::Type::Reference(type_ref) = ty [INFO] [stdout] 304 ~ && let syn::Type::Path(type_path) = &*type_ref.elem { [INFO] [stdout] 305 | if let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | return segment.ident == *params_ident; [INFO] [stdout] 307 | } [INFO] [stdout] 308 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/cli/module.rs:304:13 [INFO] [stdout] | [INFO] [stdout] 304 | / if let syn::Type::Path(type_path) = &*type_ref.elem { [INFO] [stdout] 305 | | if let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | | return segment.ident == *params_ident; [INFO] [stdout] 307 | | } [INFO] [stdout] 308 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 304 ~ if let syn::Type::Path(type_path) = &*type_ref.elem [INFO] [stdout] 305 ~ && let Some(segment) = type_path.path.segments.last() { [INFO] [stdout] 306 | return segment.ident == *params_ident; [INFO] [stdout] 307 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/codegen/parameters/module.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | &mut parameters_struct, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `parameters_struct` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/codegen/parameters/module.rs:32:43 [INFO] [stdout] | [INFO] [stdout] 32 | Self::add_phantom_field_to_struct(&mut parameters_struct, &lifetime)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `parameters_struct` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/parameters/module.rs:44:21 [INFO] [stdout] | [INFO] [stdout] 44 | / if let syn::Item::Mod(m) = item { [INFO] [stdout] 45 | | if m.ident == submodule_data.name { [INFO] [stdout] 46 | | return Some(m); [INFO] [stdout] 47 | | } [INFO] [stdout] 48 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 44 ~ if let syn::Item::Mod(m) = item [INFO] [stdout] 45 ~ && m.ident == submodule_data.name { [INFO] [stdout] 46 | return Some(m); [INFO] [stdout] 47 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/parameters/module.rs:126:17 [INFO] [stdout] | [INFO] [stdout] 126 | / if let syn::Item::Struct(s) = item { [INFO] [stdout] 127 | | if s.ident == "Parameters" { [INFO] [stdout] 128 | | return Ok(s); [INFO] [stdout] 129 | | } [INFO] [stdout] 130 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 126 ~ if let syn::Item::Struct(s) = item [INFO] [stdout] 127 ~ && s.ident == "Parameters" { [INFO] [stdout] 128 | return Ok(s); [INFO] [stdout] 129 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/handle_matches/module.rs:176:9 [INFO] [stdout] | [INFO] [stdout] 176 | / if let Some(syn::FnArg::Typed(first_param)) = tusk.func.sig.inputs.first() { [INFO] [stdout] 177 | | if let Some(ref params) = self.parameters { [INFO] [stdout] 178 | | return Self::is_parameters_type(&first_param.ty, ¶ms.pstruct.ident); [INFO] [stdout] 179 | | } [INFO] [stdout] 180 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 176 ~ if let Some(syn::FnArg::Typed(first_param)) = tusk.func.sig.inputs.first() [INFO] [stdout] 177 ~ && let Some(ref params) = self.parameters { [INFO] [stdout] 178 | return Self::is_parameters_type(&first_param.ty, ¶ms.pstruct.ident); [INFO] [stdout] 179 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/handle_matches/arms/function.rs:151:13 [INFO] [stdout] | [INFO] [stdout] 151 | / if let syn::FnArg::Typed(pat_type) = param { [INFO] [stdout] 152 | | if let syn::Pat::Ident(pat_ident) = &*pat_type.pat { [INFO] [stdout] 153 | | let field_name = &pat_ident.ident; [INFO] [stdout] 154 | | let binding_name = syn::Ident::new( [INFO] [stdout] ... | [INFO] [stdout] 161 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 151 ~ if let syn::FnArg::Typed(pat_type) = param [INFO] [stdout] 152 ~ && let syn::Pat::Ident(pat_ident) = &*pat_type.pat { [INFO] [stdout] 153 | let field_name = &pat_ident.ident; [INFO] [stdout] ... [INFO] [stdout] 159 | param_counter += 1; [INFO] [stdout] 160 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/codegen/handle_matches/arms/submodule.rs:69:17 [INFO] [stdout] | [INFO] [stdout] 69 | / if let Some(field_name) = &field.ident { [INFO] [stdout] 70 | | if field_name != "super_" { [INFO] [stdout] 71 | | let binding_name = syn::Ident::new(&format!("p{}", param_counter), Span::call_site()); [INFO] [stdout] 72 | | bindings.push((field_name.clone(), binding_name.clone())); [INFO] [stdout] ... | [INFO] [stdout] 75 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 69 ~ if let Some(field_name) = &field.ident [INFO] [stdout] 70 ~ && field_name != "super_" { [INFO] [stdout] 71 | let binding_name = syn::Ident::new(&format!("p{}", param_counter), Span::call_site()); [INFO] [stdout] 72 | bindings.push((field_name.clone(), binding_name.clone())); [INFO] [stdout] 73 | param_counter += 1; [INFO] [stdout] 74 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.48s [INFO] running `Command { std: "docker" "inspect" "9e4c7336382ec411b8d86ede06d8560d1f882dd6549c4a54d8ea1ccace926b49", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9e4c7336382ec411b8d86ede06d8560d1f882dd6549c4a54d8ea1ccace926b49", kill_on_drop: false }` [INFO] [stdout] 9e4c7336382ec411b8d86ede06d8560d1f882dd6549c4a54d8ea1ccace926b49