[INFO] fetching crate larpa-derive 0.1.1... [INFO] linting larpa-derive-0.1.1 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate larpa-derive 0.1.1 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate larpa-derive 0.1.1 [INFO] finished tweaking crates.io crate larpa-derive 0.1.1 [INFO] tweaked toml for crates.io crate larpa-derive 0.1.1 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate larpa-derive 0.1.1 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 larpa-derive 0.1.1 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] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded expect-test v1.5.1 [INFO] [stderr] Downloaded dissimilar v1.0.10 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 07e9a3817c0130d8a8610d198d28cdcf58968ef9f7426a9b8aea1a46b9c9a00d [INFO] running `Command { std: "docker" "start" "-a" "07e9a3817c0130d8a8610d198d28cdcf58968ef9f7426a9b8aea1a46b9c9a00d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "07e9a3817c0130d8a8610d198d28cdcf58968ef9f7426a9b8aea1a46b9c9a00d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "07e9a3817c0130d8a8610d198d28cdcf58968ef9f7426a9b8aea1a46b9c9a00d", kill_on_drop: false }` [INFO] [stdout] 07e9a3817c0130d8a8610d198d28cdcf58968ef9f7426a9b8aea1a46b9c9a00d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 7a54fec2cf2bd6241edf4df7ac3159ddf7c47f5fb059cb2266be0a9ec2a3eff4 [INFO] running `Command { std: "docker" "start" "-a" "7a54fec2cf2bd6241edf4df7ac3159ddf7c47f5fb059cb2266be0a9ec2a3eff4", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Compiling quote v1.0.41 [INFO] [stderr] Checking unicode-ident v1.0.19 [INFO] [stderr] Checking dissimilar v1.0.10 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Checking expect-test v1.5.1 [INFO] [stderr] Checking syn v2.0.106 [INFO] [stderr] Checking larpa-derive v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/attr.rs:295:20 [INFO] [stdout] | [INFO] [stdout] 295 | if attr.name.to_string() == attr2.name.to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `attr.name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/attr.rs:295:45 [INFO] [stdout] | [INFO] [stdout] 295 | if attr.name.to_string() == attr2.name.to_string() { [INFO] [stdout] | -------------------------^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: try: `attr2.name == attr.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/attr.rs:327:16 [INFO] [stdout] | [INFO] [stdout] 327 | if name.to_string() == "crate" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/attr.rs:348:13 [INFO] [stdout] | [INFO] [stdout] 348 | / match &nv.value { [INFO] [stdout] 349 | | syn::Expr::Lit(lit) => { [INFO] [stdout] 350 | | if let syn::Lit::Str(s) = &lit.lit { [INFO] [stdout] 351 | | lines.push(s.value()); [INFO] [stdout] ... | [INFO] [stdout] 355 | | _ => {} [INFO] [stdout] 356 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 348 ~ if let syn::Expr::Lit(lit) = &nv.value { [INFO] [stdout] 349 + if let syn::Lit::Str(s) = &lit.lit { [INFO] [stdout] 350 + lines.push(s.value()); [INFO] [stdout] 351 + continue; [INFO] [stdout] 352 + } [INFO] [stdout] 353 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/attr.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | / match next { [INFO] [stdout] 393 | | Some(next) => match next.chars().next() { [INFO] [stdout] 394 | | Some(start) => { [INFO] [stdout] 395 | | if start.is_alphabetic() { [INFO] [stdout] ... | [INFO] [stdout] 408 | | None => {} [INFO] [stdout] 409 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 392 ~ if let Some(next) = next { match next.chars().next() { [INFO] [stdout] 393 + Some(start) => { [INFO] [stdout] 394 + if start.is_alphabetic() { [INFO] [stdout] 395 + if !doc.ends_with('\n') { [INFO] [stdout] 396 + doc.push(' '); [INFO] [stdout] 397 + } [INFO] [stdout] 398 + } else { [INFO] [stdout] 399 + doc.push('\n'); [INFO] [stdout] 400 + } [INFO] [stdout] 401 + } [INFO] [stdout] 402 + None => { [INFO] [stdout] 403 + // Next line is empty. [INFO] [stdout] 404 + doc.push_str("\n\n"); [INFO] [stdout] 405 + } [INFO] [stdout] 406 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/codegen.rs:380:33 [INFO] [stdout] | [INFO] [stdout] 380 | let description = match self [INFO] [stdout] | _________________________________^ [INFO] [stdout] 381 | | .input [INFO] [stdout] 382 | | .description [INFO] [stdout] 383 | | .as_deref() [INFO] [stdout] 384 | | .or_else(|| self.meta.pkg_description.as_deref()) [INFO] [stdout] | |_____________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `or` instead [INFO] [stdout] | [INFO] [stdout] 384 - .or_else(|| self.meta.pkg_description.as_deref()) [INFO] [stdout] 384 + .or(self.meta.pkg_description.as_deref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/input.rs:551:21 [INFO] [stdout] | [INFO] [stdout] 551 | / if let Some(short) = *short { [INFO] [stdout] 552 | | if let Some(prev) = short_args.insert(short, arg.clone()) { [INFO] [stdout] 553 | | let mut error = syn::Error::new( [INFO] [stdout] 554 | | arg.field_name.span(), [INFO] [stdout] ... | [INFO] [stdout] 566 | | } [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] 551 ~ if let Some(short) = *short [INFO] [stdout] 552 ~ && let Some(prev) = short_args.insert(short, arg.clone()) { [INFO] [stdout] 553 | let mut error = syn::Error::new( [INFO] [stdout] ... [INFO] [stdout] 564 | return Err(error); [INFO] [stdout] 565 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/input.rs:590:9 [INFO] [stdout] | [INFO] [stdout] 590 | / if let Some(subcmd) = &subcommand { [INFO] [stdout] 591 | | if let Some(arg) = last_positional [INFO] [stdout] 592 | | && (arg.repeating || arg.is_optional()) [INFO] [stdout] ... | [INFO] [stdout] 604 | | } [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] 590 ~ if let Some(subcmd) = &subcommand [INFO] [stdout] 591 ~ && let Some(arg) = last_positional [INFO] [stdout] 592 | && (arg.repeating || arg.is_optional()) [INFO] [stdout] ... [INFO] [stdout] 602 | return Err(error); [INFO] [stdout] 603 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/input.rs:817:21 [INFO] [stdout] | [INFO] [stdout] 817 | || (!flag.is_some() && default.is_none() && wrapper.is_none()), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `flag.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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:719:9 [INFO] [stdout] | [INFO] [stdout] 719 | / match (flag, &default) { [INFO] [stdout] 720 | | (Some(flag_span), Some(_)) => { [INFO] [stdout] 721 | | return Err(syn::Error::new( [INFO] [stdout] 722 | | flag_span, [INFO] [stdout] ... | [INFO] [stdout] 726 | | _ => {} [INFO] [stdout] 727 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 719 ~ if let (Some(flag_span), Some(_)) = (flag, &default) { [INFO] [stdout] 720 + return Err(syn::Error::new( [INFO] [stdout] 721 + flag_span, [INFO] [stdout] 722 + "`flag` and `default` cannot be used together", [INFO] [stdout] 723 + )); [INFO] [stdout] 724 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:729:9 [INFO] [stdout] | [INFO] [stdout] 729 | / match (flag, &names) { [INFO] [stdout] 730 | | (Some(flag_span), None) => { [INFO] [stdout] 731 | | return Err(syn::Error::new( [INFO] [stdout] 732 | | flag_span, [INFO] [stdout] ... | [INFO] [stdout] 736 | | _ => {} [INFO] [stdout] 737 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 729 ~ if let (Some(flag_span), None) = (flag, &names) { [INFO] [stdout] 730 + return Err(syn::Error::new( [INFO] [stdout] 731 + flag_span, [INFO] [stdout] 732 + "`flag` is not allowed on positional arguments; use `name` to make it a named flag", [INFO] [stdout] 733 + )); [INFO] [stdout] 734 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:739:9 [INFO] [stdout] | [INFO] [stdout] 739 | / match (&default, &required) { [INFO] [stdout] 740 | | (Some(_), Some(req)) => { [INFO] [stdout] 741 | | return Err(syn::Error::new( [INFO] [stdout] 742 | | req.span(), [INFO] [stdout] ... | [INFO] [stdout] 746 | | _ => {} [INFO] [stdout] 747 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 739 ~ if let (Some(_), Some(req)) = (&default, &required) { [INFO] [stdout] 740 + return Err(syn::Error::new( [INFO] [stdout] 741 + req.span(), [INFO] [stdout] 742 + "`required` and `default` cannot be used together", [INFO] [stdout] 743 + )); [INFO] [stdout] 744 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:749:9 [INFO] [stdout] | [INFO] [stdout] 749 | / match (flag, &inverse_of) { [INFO] [stdout] 750 | | (None, Some(ident)) => { [INFO] [stdout] 751 | | return Err(syn::Error::new( [INFO] [stdout] 752 | | ident.span(), [INFO] [stdout] ... | [INFO] [stdout] 756 | | _ => {} [INFO] [stdout] 757 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 749 ~ if let (None, Some(ident)) = (flag, &inverse_of) { [INFO] [stdout] 750 + return Err(syn::Error::new( [INFO] [stdout] 751 + ident.span(), [INFO] [stdout] 752 + "`inverse_of` must be used with `flag`", [INFO] [stdout] 753 + )); [INFO] [stdout] 754 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/meta.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | / self.bin_name [INFO] [stdout] 40 | | .as_deref() [INFO] [stdout] 41 | | .or_else(|| self.pkg_name.as_deref()) [INFO] [stdout] | |_________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `or` instead [INFO] [stdout] | [INFO] [stdout] 41 - .or_else(|| self.pkg_name.as_deref()) [INFO] [stdout] 41 + .or(self.pkg_name.as_deref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/attr.rs:295:20 [INFO] [stdout] | [INFO] [stdout] 295 | if attr.name.to_string() == attr2.name.to_string() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `attr.name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/attr.rs:295:45 [INFO] [stdout] | [INFO] [stdout] 295 | if attr.name.to_string() == attr2.name.to_string() { [INFO] [stdout] | -------------------------^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: try: `attr2.name == attr.name.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/attr.rs:327:16 [INFO] [stdout] | [INFO] [stdout] 327 | if name.to_string() == "crate" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/attr.rs:348:13 [INFO] [stdout] | [INFO] [stdout] 348 | / match &nv.value { [INFO] [stdout] 349 | | syn::Expr::Lit(lit) => { [INFO] [stdout] 350 | | if let syn::Lit::Str(s) = &lit.lit { [INFO] [stdout] 351 | | lines.push(s.value()); [INFO] [stdout] ... | [INFO] [stdout] 355 | | _ => {} [INFO] [stdout] 356 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 348 ~ if let syn::Expr::Lit(lit) = &nv.value { [INFO] [stdout] 349 + if let syn::Lit::Str(s) = &lit.lit { [INFO] [stdout] 350 + lines.push(s.value()); [INFO] [stdout] 351 + continue; [INFO] [stdout] 352 + } [INFO] [stdout] 353 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/attr.rs:392:9 [INFO] [stdout] | [INFO] [stdout] 392 | / match next { [INFO] [stdout] 393 | | Some(next) => match next.chars().next() { [INFO] [stdout] 394 | | Some(start) => { [INFO] [stdout] 395 | | if start.is_alphabetic() { [INFO] [stdout] ... | [INFO] [stdout] 408 | | None => {} [INFO] [stdout] 409 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 392 ~ if let Some(next) = next { match next.chars().next() { [INFO] [stdout] 393 + Some(start) => { [INFO] [stdout] 394 + if start.is_alphabetic() { [INFO] [stdout] 395 + if !doc.ends_with('\n') { [INFO] [stdout] 396 + doc.push(' '); [INFO] [stdout] 397 + } [INFO] [stdout] 398 + } else { [INFO] [stdout] 399 + doc.push('\n'); [INFO] [stdout] 400 + } [INFO] [stdout] 401 + } [INFO] [stdout] 402 + None => { [INFO] [stdout] 403 + // Next line is empty. [INFO] [stdout] 404 + doc.push_str("\n\n"); [INFO] [stdout] 405 + } [INFO] [stdout] 406 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/codegen.rs:380:33 [INFO] [stdout] | [INFO] [stdout] 380 | let description = match self [INFO] [stdout] | _________________________________^ [INFO] [stdout] 381 | | .input [INFO] [stdout] 382 | | .description [INFO] [stdout] 383 | | .as_deref() [INFO] [stdout] 384 | | .or_else(|| self.meta.pkg_description.as_deref()) [INFO] [stdout] | |_____________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `or` instead [INFO] [stdout] | [INFO] [stdout] 384 - .or_else(|| self.meta.pkg_description.as_deref()) [INFO] [stdout] 384 + .or(self.meta.pkg_description.as_deref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/input.rs:551:21 [INFO] [stdout] | [INFO] [stdout] 551 | / if let Some(short) = *short { [INFO] [stdout] 552 | | if let Some(prev) = short_args.insert(short, arg.clone()) { [INFO] [stdout] 553 | | let mut error = syn::Error::new( [INFO] [stdout] 554 | | arg.field_name.span(), [INFO] [stdout] ... | [INFO] [stdout] 566 | | } [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] 551 ~ if let Some(short) = *short [INFO] [stdout] 552 ~ && let Some(prev) = short_args.insert(short, arg.clone()) { [INFO] [stdout] 553 | let mut error = syn::Error::new( [INFO] [stdout] ... [INFO] [stdout] 564 | return Err(error); [INFO] [stdout] 565 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/input.rs:590:9 [INFO] [stdout] | [INFO] [stdout] 590 | / if let Some(subcmd) = &subcommand { [INFO] [stdout] 591 | | if let Some(arg) = last_positional [INFO] [stdout] 592 | | && (arg.repeating || arg.is_optional()) [INFO] [stdout] ... | [INFO] [stdout] 604 | | } [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] 590 ~ if let Some(subcmd) = &subcommand [INFO] [stdout] 591 ~ && let Some(arg) = last_positional [INFO] [stdout] 592 | && (arg.repeating || arg.is_optional()) [INFO] [stdout] ... [INFO] [stdout] 602 | return Err(error); [INFO] [stdout] 603 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/input.rs:817:21 [INFO] [stdout] | [INFO] [stdout] 817 | || (!flag.is_some() && default.is_none() && wrapper.is_none()), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `flag.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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:719:9 [INFO] [stdout] | [INFO] [stdout] 719 | / match (flag, &default) { [INFO] [stdout] 720 | | (Some(flag_span), Some(_)) => { [INFO] [stdout] 721 | | return Err(syn::Error::new( [INFO] [stdout] 722 | | flag_span, [INFO] [stdout] ... | [INFO] [stdout] 726 | | _ => {} [INFO] [stdout] 727 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 719 ~ if let (Some(flag_span), Some(_)) = (flag, &default) { [INFO] [stdout] 720 + return Err(syn::Error::new( [INFO] [stdout] 721 + flag_span, [INFO] [stdout] 722 + "`flag` and `default` cannot be used together", [INFO] [stdout] 723 + )); [INFO] [stdout] 724 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:729:9 [INFO] [stdout] | [INFO] [stdout] 729 | / match (flag, &names) { [INFO] [stdout] 730 | | (Some(flag_span), None) => { [INFO] [stdout] 731 | | return Err(syn::Error::new( [INFO] [stdout] 732 | | flag_span, [INFO] [stdout] ... | [INFO] [stdout] 736 | | _ => {} [INFO] [stdout] 737 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 729 ~ if let (Some(flag_span), None) = (flag, &names) { [INFO] [stdout] 730 + return Err(syn::Error::new( [INFO] [stdout] 731 + flag_span, [INFO] [stdout] 732 + "`flag` is not allowed on positional arguments; use `name` to make it a named flag", [INFO] [stdout] 733 + )); [INFO] [stdout] 734 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:739:9 [INFO] [stdout] | [INFO] [stdout] 739 | / match (&default, &required) { [INFO] [stdout] 740 | | (Some(_), Some(req)) => { [INFO] [stdout] 741 | | return Err(syn::Error::new( [INFO] [stdout] 742 | | req.span(), [INFO] [stdout] ... | [INFO] [stdout] 746 | | _ => {} [INFO] [stdout] 747 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 739 ~ if let (Some(_), Some(req)) = (&default, &required) { [INFO] [stdout] 740 + return Err(syn::Error::new( [INFO] [stdout] 741 + req.span(), [INFO] [stdout] 742 + "`required` and `default` cannot be used together", [INFO] [stdout] 743 + )); [INFO] [stdout] 744 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/input.rs:749:9 [INFO] [stdout] | [INFO] [stdout] 749 | / match (flag, &inverse_of) { [INFO] [stdout] 750 | | (None, Some(ident)) => { [INFO] [stdout] 751 | | return Err(syn::Error::new( [INFO] [stdout] 752 | | ident.span(), [INFO] [stdout] ... | [INFO] [stdout] 756 | | _ => {} [INFO] [stdout] 757 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 749 ~ if let (None, Some(ident)) = (flag, &inverse_of) { [INFO] [stdout] 750 + return Err(syn::Error::new( [INFO] [stdout] 751 + ident.span(), [INFO] [stdout] 752 + "`inverse_of` must be used with `flag`", [INFO] [stdout] 753 + )); [INFO] [stdout] 754 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/meta.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | / self.bin_name [INFO] [stdout] 40 | | .as_deref() [INFO] [stdout] 41 | | .or_else(|| self.pkg_name.as_deref()) [INFO] [stdout] | |_________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `or` instead [INFO] [stdout] | [INFO] [stdout] 41 - .or_else(|| self.pkg_name.as_deref()) [INFO] [stdout] 41 + .or(self.pkg_name.as_deref()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.45s [INFO] running `Command { std: "docker" "inspect" "7a54fec2cf2bd6241edf4df7ac3159ddf7c47f5fb059cb2266be0a9ec2a3eff4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7a54fec2cf2bd6241edf4df7ac3159ddf7c47f5fb059cb2266be0a9ec2a3eff4", kill_on_drop: false }` [INFO] [stdout] 7a54fec2cf2bd6241edf4df7ac3159ddf7c47f5fb059cb2266be0a9ec2a3eff4