[INFO] updating cached repository eraserhd/parinfer-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/eraserhd/parinfer-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/eraserhd/parinfer-rust" "work/ex/clippy-test-run/sources/stable/gh/eraserhd/parinfer-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/eraserhd/parinfer-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/eraserhd/parinfer-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/eraserhd/parinfer-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/eraserhd/parinfer-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 1d254e32f220b48753d8fd773ab41292fc6335b7 [INFO] sha for GitHub repo eraserhd/parinfer-rust: 1d254e32f220b48753d8fd773ab41292fc6335b7 [INFO] validating manifest of eraserhd/parinfer-rust 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 eraserhd/parinfer-rust 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 eraserhd/parinfer-rust [INFO] finished frobbing eraserhd/parinfer-rust [INFO] frobbed toml for eraserhd/parinfer-rust written to work/ex/clippy-test-run/sources/stable/gh/eraserhd/parinfer-rust/Cargo.toml [INFO] started frobbing eraserhd/parinfer-rust [INFO] finished frobbing eraserhd/parinfer-rust [INFO] frobbed toml for eraserhd/parinfer-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/eraserhd/parinfer-rust/Cargo.toml [INFO] crate eraserhd/parinfer-rust has a lockfile. skipping [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 eraserhd/parinfer-rust against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/eraserhd/parinfer-rust:/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] a44b979003862811d322a3817ceaecbdaeb7fd087b1dfd445d37966dff096670 [INFO] running `"docker" "start" "-a" "a44b979003862811d322a3817ceaecbdaeb7fd087b1dfd445d37966dff096670"` [INFO] [stderr] Checking parinfer_rust v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parinfer.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parinfer.rs:222:9 [INFO] [stderr] | [INFO] [stderr] 222 | smart: smart, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `smart` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parinfer.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parinfer.rs:222:9 [INFO] [stderr] | [INFO] [stderr] 222 | smart: smart, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `smart` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:11:19 [INFO] [stderr] | [INFO] [stderr] 11 | const BACKSLASH: &'static str = "\\"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:12:21 [INFO] [stderr] | [INFO] [stderr] 12 | const BLANK_SPACE: &'static str = " "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:13:22 [INFO] [stderr] | [INFO] [stderr] 13 | const DOUBLE_SPACE: &'static str = " "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | const DOUBLE_QUOTE: &'static str = "\""; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | const NEWLINE: &'static str = "\n"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:16:19 [INFO] [stderr] | [INFO] [stderr] 16 | const SEMICOLON: &'static str = ";"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | const TAB: &'static str = "\t"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parinfer.rs:612:5 [INFO] [stderr] | [INFO] [stderr] 612 | return result.is_in_code && !is_whitespace(result) && ch != "" && !closer; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `result.is_in_code && !is_whitespace(result) && ch != "" && !closer` [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: this if statement can be collapsed [INFO] [stderr] --> src/parinfer.rs:657:12 [INFO] [stderr] | [INFO] [stderr] 657 | } else if state == TrackingArgTabStop::Arg { [INFO] [stderr] | ____________^ [INFO] [stderr] 658 | | if !is_whitespace(result) { [INFO] [stderr] 659 | | let opener = result.paren_stack.last_mut().unwrap(); [INFO] [stderr] 660 | | opener.arg_x = Some(result.x); [INFO] [stderr] 661 | | result.tracking_arg_tab_stop = TrackingArgTabStop::NotSearching; [INFO] [stderr] 662 | | } [INFO] [stderr] 663 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 657 | } else if state == TrackingArgTabStop::Arg && !is_whitespace(result) { [INFO] [stderr] 658 | let opener = result.paren_stack.last_mut().unwrap(); [INFO] [stderr] 659 | opener.arg_x = Some(result.x); [INFO] [stderr] 660 | result.tracking_arg_tab_stop = TrackingArgTabStop::NotSearching; [INFO] [stderr] 661 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/parinfer.rs:815:5 [INFO] [stderr] | [INFO] [stderr] 815 | / if result.ch == NEWLINE { [INFO] [stderr] 816 | | if result.is_in_code { [INFO] [stderr] 817 | | return error(result, ErrorName::EolBackslash); [INFO] [stderr] 818 | | } [INFO] [stderr] 819 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 815 | if result.ch == NEWLINE && result.is_in_code { [INFO] [stderr] 816 | return error(result, ErrorName::EolBackslash); [INFO] [stderr] 817 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/parinfer.rs:1637:5 [INFO] [stderr] | [INFO] [stderr] 1637 | / if result.paren_stack.len() != 0 { [INFO] [stderr] 1638 | | if result.mode == Mode::Paren { [INFO] [stderr] 1639 | | error(result, ErrorName::UnclosedParen)?; [INFO] [stderr] 1640 | | } [INFO] [stderr] 1641 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1637 | if result.paren_stack.len() != 0 && result.mode == Mode::Paren { [INFO] [stderr] 1638 | error(result, ErrorName::UnclosedParen)?; [INFO] [stderr] 1639 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:11:19 [INFO] [stderr] | [INFO] [stderr] 11 | const BACKSLASH: &'static str = "\\"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:12:21 [INFO] [stderr] | [INFO] [stderr] 12 | const BLANK_SPACE: &'static str = " "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:13:22 [INFO] [stderr] | [INFO] [stderr] 13 | const DOUBLE_SPACE: &'static str = " "; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:14:22 [INFO] [stderr] | [INFO] [stderr] 14 | const DOUBLE_QUOTE: &'static str = "\""; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | const NEWLINE: &'static str = "\n"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:16:19 [INFO] [stderr] | [INFO] [stderr] 16 | const SEMICOLON: &'static str = ";"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/parinfer.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | const TAB: &'static str = "\t"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parinfer.rs:612:5 [INFO] [stderr] | [INFO] [stderr] 612 | return result.is_in_code && !is_whitespace(result) && ch != "" && !closer; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `result.is_in_code && !is_whitespace(result) && ch != "" && !closer` [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: this if statement can be collapsed [INFO] [stderr] --> src/parinfer.rs:657:12 [INFO] [stderr] | [INFO] [stderr] 657 | } else if state == TrackingArgTabStop::Arg { [INFO] [stderr] | ____________^ [INFO] [stderr] 658 | | if !is_whitespace(result) { [INFO] [stderr] 659 | | let opener = result.paren_stack.last_mut().unwrap(); [INFO] [stderr] 660 | | opener.arg_x = Some(result.x); [INFO] [stderr] 661 | | result.tracking_arg_tab_stop = TrackingArgTabStop::NotSearching; [INFO] [stderr] 662 | | } [INFO] [stderr] 663 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 657 | } else if state == TrackingArgTabStop::Arg && !is_whitespace(result) { [INFO] [stderr] 658 | let opener = result.paren_stack.last_mut().unwrap(); [INFO] [stderr] 659 | opener.arg_x = Some(result.x); [INFO] [stderr] 660 | result.tracking_arg_tab_stop = TrackingArgTabStop::NotSearching; [INFO] [stderr] 661 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/parinfer.rs:815:5 [INFO] [stderr] | [INFO] [stderr] 815 | / if result.ch == NEWLINE { [INFO] [stderr] 816 | | if result.is_in_code { [INFO] [stderr] 817 | | return error(result, ErrorName::EolBackslash); [INFO] [stderr] 818 | | } [INFO] [stderr] 819 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 815 | if result.ch == NEWLINE && result.is_in_code { [INFO] [stderr] 816 | return error(result, ErrorName::EolBackslash); [INFO] [stderr] 817 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/parinfer.rs:1637:5 [INFO] [stderr] | [INFO] [stderr] 1637 | / if result.paren_stack.len() != 0 { [INFO] [stderr] 1638 | | if result.mode == Mode::Paren { [INFO] [stderr] 1639 | | error(result, ErrorName::UnclosedParen)?; [INFO] [stderr] 1640 | | } [INFO] [stderr] 1641 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1637 | if result.paren_stack.len() != 0 && result.mode == Mode::Paren { [INFO] [stderr] 1638 | error(result, ErrorName::UnclosedParen)?; [INFO] [stderr] 1639 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parinfer.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn chomp_cr<'a>(text: &'a str) -> &'a str { [INFO] [stderr] 48 | | if text.chars().last() == Some('\r') { [INFO] [stderr] 49 | | &text[0..text.len() - 1] [INFO] [stderr] 50 | | } else { [INFO] [stderr] 51 | | text [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should use the `ends_with` method [INFO] [stderr] --> src/parinfer.rs:48:8 [INFO] [stderr] | [INFO] [stderr] 48 | if text.chars().last() == Some('\r') { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `text.ends_with('\r')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::chars_last_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_last_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parinfer.rs:93:14 [INFO] [stderr] | [INFO] [stderr] 93 | changes: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Change]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/parinfer.rs:92:22 [INFO] [stderr] | [INFO] [stderr] 92 | fn transform_changes<'a>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:371:13 [INFO] [stderr] | [INFO] [stderr] 371 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parinfer.rs:547:19 [INFO] [stderr] | [INFO] [stderr] 547 | fn peek(array: &Vec, i: usize) -> Option<&T> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parinfer.rs:591:42 [INFO] [stderr] | [INFO] [stderr] 591 | fn is_valid_close_paren<'a>(paren_stack: &Vec>, ch: &'a str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Paren<'a>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parinfer.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn chomp_cr<'a>(text: &'a str) -> &'a str { [INFO] [stderr] 48 | | if text.chars().last() == Some('\r') { [INFO] [stderr] 49 | | &text[0..text.len() - 1] [INFO] [stderr] 50 | | } else { [INFO] [stderr] 51 | | text [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should use the `ends_with` method [INFO] [stderr] --> src/parinfer.rs:48:8 [INFO] [stderr] | [INFO] [stderr] 48 | if text.chars().last() == Some('\r') { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: like this: `text.ends_with('\r')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::chars_last_cmp)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#chars_last_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parinfer.rs:93:14 [INFO] [stderr] | [INFO] [stderr] 93 | changes: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[Change]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/parinfer.rs:92:22 [INFO] [stderr] | [INFO] [stderr] 92 | fn transform_changes<'a>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/parinfer.rs:868:22 [INFO] [stderr] | [INFO] [stderr] 868 | fn is_cursor_left_of<'a>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/parinfer.rs:881:23 [INFO] [stderr] | [INFO] [stderr] 881 | fn is_cursor_right_of<'a>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:951:17 [INFO] [stderr] | [INFO] [stderr] 951 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/parinfer.rs:1035:20 [INFO] [stderr] | [INFO] [stderr] 1035 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 1036 | | // TODO: identify legitimate cases where both are nonzero [INFO] [stderr] 1037 | | [INFO] [stderr] 1038 | | // allow the fragmentation by default [INFO] [stderr] ... | [INFO] [stderr] 1043 | | // 2. fallback to paren mode to preserve structure [INFO] [stderr] 1044 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/parinfer.rs:1033:46 [INFO] [stderr] | [INFO] [stderr] 1033 | else if opener.indent_delta == 0 { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 1034 | | is_parent = false; [INFO] [stderr] 1035 | | } else { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/parinfer.rs:1154:67 [INFO] [stderr] | [INFO] [stderr] 1154 | else if result.indent_delta > opener.indent_delta { [INFO] [stderr] | ___________________________________________________________________^ [INFO] [stderr] 1155 | | is_parent = true; [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/parinfer.rs:1120:17 [INFO] [stderr] | [INFO] [stderr] 1120 | / { [INFO] [stderr] 1121 | | is_parent = true; [INFO] [stderr] 1122 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:1221:25 [INFO] [stderr] | [INFO] [stderr] 1221 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:371:13 [INFO] [stderr] | [INFO] [stderr] 371 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parinfer.rs:1297:8 [INFO] [stderr] | [INFO] [stderr] 1297 | if result.paren_trail.clamped.openers.len() > 0 || result.paren_trail.openers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.paren_trail.clamped.openers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parinfer.rs:1297:56 [INFO] [stderr] | [INFO] [stderr] 1297 | if result.paren_trail.clamped.openers.len() > 0 || result.paren_trail.openers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.paren_trail.openers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parinfer.rs:547:19 [INFO] [stderr] | [INFO] [stderr] 547 | fn peek(array: &Vec, i: usize) -> Option<&T> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parinfer.rs:1331:21 [INFO] [stderr] | [INFO] [stderr] 1331 | let trail = result.paren_trails.get_mut(n).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `result.paren_trails[n]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:1608:13 [INFO] [stderr] | [INFO] [stderr] 1608 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parinfer.rs:591:42 [INFO] [stderr] | [INFO] [stderr] 591 | fn is_valid_close_paren<'a>(paren_stack: &Vec>, ch: &'a str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Paren<'a>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parinfer.rs:1637:8 [INFO] [stderr] | [INFO] [stderr] 1637 | if result.paren_stack.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.paren_stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/parinfer.rs:1663:16 [INFO] [stderr] | [INFO] [stderr] 1663 | if let Err(_) = process_result { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 1664 | | break; [INFO] [stderr] 1665 | | } [INFO] [stderr] | |_________- help: try this: `if process_result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/parinfer.rs:1668:12 [INFO] [stderr] | [INFO] [stderr] 1668 | if let Ok(_) = process_result { [INFO] [stderr] | _____- ^^^^^ [INFO] [stderr] 1669 | | process_result = finalize_result(&mut result); [INFO] [stderr] 1670 | | } [INFO] [stderr] | |_____- help: try this: `if process_result.is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parinfer.rs:1687:1 [INFO] [stderr] | [INFO] [stderr] 1687 | / fn public_result<'a>(result: State<'a>) -> Answer<'a> { [INFO] [stderr] 1688 | | let line_ending = get_line_ending(result.orig_text); [INFO] [stderr] 1689 | | if result.success { [INFO] [stderr] 1690 | | Answer { [INFO] [stderr] ... | [INFO] [stderr] 1723 | | } [INFO] [stderr] 1724 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parinfer.rs:1747:9 [INFO] [stderr] | [INFO] [stderr] 1747 | Answer::from(paren_mode(&request.text, &options)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `paren_mode(&request.text, &options)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parinfer.rs:1749:9 [INFO] [stderr] | [INFO] [stderr] 1749 | Answer::from(indent_mode(&request.text, &options)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `indent_mode(&request.text, &options)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parinfer.rs:1751:9 [INFO] [stderr] | [INFO] [stderr] 1751 | Answer::from(smart_mode(&request.text, &options)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `smart_mode(&request.text, &options)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/parinfer.rs:868:22 [INFO] [stderr] | [INFO] [stderr] 868 | fn is_cursor_left_of<'a>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/parinfer.rs:881:23 [INFO] [stderr] | [INFO] [stderr] 881 | fn is_cursor_right_of<'a>( [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:951:17 [INFO] [stderr] | [INFO] [stderr] 951 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/parinfer.rs:1035:20 [INFO] [stderr] | [INFO] [stderr] 1035 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 1036 | | // TODO: identify legitimate cases where both are nonzero [INFO] [stderr] 1037 | | [INFO] [stderr] 1038 | | // allow the fragmentation by default [INFO] [stderr] ... | [INFO] [stderr] 1043 | | // 2. fallback to paren mode to preserve structure [INFO] [stderr] 1044 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/parinfer.rs:1033:46 [INFO] [stderr] | [INFO] [stderr] 1033 | else if opener.indent_delta == 0 { [INFO] [stderr] | ______________________________________________^ [INFO] [stderr] 1034 | | is_parent = false; [INFO] [stderr] 1035 | | } else { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/parinfer.rs:1154:67 [INFO] [stderr] | [INFO] [stderr] 1154 | else if result.indent_delta > opener.indent_delta { [INFO] [stderr] | ___________________________________________________________________^ [INFO] [stderr] 1155 | | is_parent = true; [INFO] [stderr] 1156 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/parinfer.rs:1120:17 [INFO] [stderr] | [INFO] [stderr] 1120 | / { [INFO] [stderr] 1121 | | is_parent = true; [INFO] [stderr] 1122 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:1221:25 [INFO] [stderr] | [INFO] [stderr] 1221 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parinfer.rs:1297:8 [INFO] [stderr] | [INFO] [stderr] 1297 | if result.paren_trail.clamped.openers.len() > 0 || result.paren_trail.openers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.paren_trail.clamped.openers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parinfer.rs:1297:56 [INFO] [stderr] | [INFO] [stderr] 1297 | if result.paren_trail.clamped.openers.len() > 0 || result.paren_trail.openers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.paren_trail.openers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parinfer.rs:1331:21 [INFO] [stderr] | [INFO] [stderr] 1331 | let trail = result.paren_trails.get_mut(n).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `result.paren_trails[n]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parinfer.rs:1608:13 [INFO] [stderr] | [INFO] [stderr] 1608 | *column = *column + UnicodeWidthStr::width(ch); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*column += UnicodeWidthStr::width(ch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parinfer.rs:1637:8 [INFO] [stderr] | [INFO] [stderr] 1637 | if result.paren_stack.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.paren_stack.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/parinfer.rs:1663:16 [INFO] [stderr] | [INFO] [stderr] 1663 | if let Err(_) = process_result { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 1664 | | break; [INFO] [stderr] 1665 | | } [INFO] [stderr] | |_________- help: try this: `if process_result.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/parinfer.rs:1668:12 [INFO] [stderr] | [INFO] [stderr] 1668 | if let Ok(_) = process_result { [INFO] [stderr] | _____- ^^^^^ [INFO] [stderr] 1669 | | process_result = finalize_result(&mut result); [INFO] [stderr] 1670 | | } [INFO] [stderr] | |_____- help: try this: `if process_result.is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parinfer.rs:1687:1 [INFO] [stderr] | [INFO] [stderr] 1687 | / fn public_result<'a>(result: State<'a>) -> Answer<'a> { [INFO] [stderr] 1688 | | let line_ending = get_line_ending(result.orig_text); [INFO] [stderr] 1689 | | if result.success { [INFO] [stderr] 1690 | | Answer { [INFO] [stderr] ... | [INFO] [stderr] 1723 | | } [INFO] [stderr] 1724 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | String::from(match self { [INFO] [stderr] | ______________________^ [INFO] [stderr] 153 | | &ErrorName::QuoteDanger => "quote-danger", [INFO] [stderr] 154 | | &ErrorName::EolBackslash => "eol-backslash", [INFO] [stderr] 155 | | &ErrorName::UnclosedQuote => "unclosed-quote", [INFO] [stderr] ... | [INFO] [stderr] 163 | | _ => "??", [INFO] [stderr] 164 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 152 | String::from(match *self { [INFO] [stderr] 153 | ErrorName::QuoteDanger => "quote-danger", [INFO] [stderr] 154 | ErrorName::EolBackslash => "eol-backslash", [INFO] [stderr] 155 | ErrorName::UnclosedQuote => "unclosed-quote", [INFO] [stderr] 156 | ErrorName::UnclosedParen => "unclosed-paren", [INFO] [stderr] 157 | ErrorName::UnmatchedCloseParen => "unmatched-close-paren", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parinfer.rs:1747:9 [INFO] [stderr] | [INFO] [stderr] 1747 | Answer::from(paren_mode(&request.text, &options)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `paren_mode(&request.text, &options)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parinfer.rs:1749:9 [INFO] [stderr] | [INFO] [stderr] 1749 | Answer::from(indent_mode(&request.text, &options)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `indent_mode(&request.text, &options)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parinfer.rs:1751:9 [INFO] [stderr] | [INFO] [stderr] 1751 | Answer::from(smart_mode(&request.text, &options)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `smart_mode(&request.text, &options)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/c_wrapper.rs:68:12 [INFO] [stderr] | [INFO] [stderr] 68 | if handle == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/c_wrapper.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | if handle == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/c_wrapper.rs:71:20 [INFO] [stderr] | [INFO] [stderr] 71 | if dlerror() == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/common_wrapper.rs:8:31 [INFO] [stderr] | [INFO] [stderr] 8 | Ok(serde_json::to_string(&Answer::from(answer))?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `answer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `parinfer_rust`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/types.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | String::from(match self { [INFO] [stderr] | ______________________^ [INFO] [stderr] 153 | | &ErrorName::QuoteDanger => "quote-danger", [INFO] [stderr] 154 | | &ErrorName::EolBackslash => "eol-backslash", [INFO] [stderr] 155 | | &ErrorName::UnclosedQuote => "unclosed-quote", [INFO] [stderr] ... | [INFO] [stderr] 163 | | _ => "??", [INFO] [stderr] 164 | | }) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 152 | String::from(match *self { [INFO] [stderr] 153 | ErrorName::QuoteDanger => "quote-danger", [INFO] [stderr] 154 | ErrorName::EolBackslash => "eol-backslash", [INFO] [stderr] 155 | ErrorName::UnclosedQuote => "unclosed-quote", [INFO] [stderr] 156 | ErrorName::UnclosedParen => "unclosed-paren", [INFO] [stderr] 157 | ErrorName::UnmatchedCloseParen => "unmatched-close-paren", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/c_wrapper.rs:68:12 [INFO] [stderr] | [INFO] [stderr] 68 | if handle == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/c_wrapper.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | if handle == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/c_wrapper.rs:71:20 [INFO] [stderr] | [INFO] [stderr] 71 | if dlerror() == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/common_wrapper.rs:8:31 [INFO] [stderr] | [INFO] [stderr] 8 | Ok(serde_json::to_string(&Answer::from(answer))?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider removing `Answer::from()`: `answer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `parinfer_rust`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a44b979003862811d322a3817ceaecbdaeb7fd087b1dfd445d37966dff096670"` [INFO] running `"docker" "rm" "-f" "a44b979003862811d322a3817ceaecbdaeb7fd087b1dfd445d37966dff096670"` [INFO] [stdout] a44b979003862811d322a3817ceaecbdaeb7fd087b1dfd445d37966dff096670