[INFO] cloning repository https://github.com/jjm1017/bob [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jjm1017/bob" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjjm1017%2Fbob", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjjm1017%2Fbob'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7bb4f20939d3fdbf3464894d0d7fe09ee45eab18 [INFO] linting jjm1017/bob against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjjm1017%2Fbob" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jjm1017/bob [INFO] finished tweaking git repo https://github.com/jjm1017/bob [INFO] tweaked toml for git repo https://github.com/jjm1017/bob written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jjm1017/bob 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 git repo https://github.com/jjm1017/bob 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-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 165ec5837a05b598f00263e889a89a1d6ca193646475b95d7b7656fbf8e0be34 [INFO] running `Command { std: "docker" "start" "-a" "165ec5837a05b598f00263e889a89a1d6ca193646475b95d7b7656fbf8e0be34", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "165ec5837a05b598f00263e889a89a1d6ca193646475b95d7b7656fbf8e0be34", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "165ec5837a05b598f00263e889a89a1d6ca193646475b95d7b7656fbf8e0be34", kill_on_drop: false }` [INFO] [stdout] 165ec5837a05b598f00263e889a89a1d6ca193646475b95d7b7656fbf8e0be34 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] baf23dd2b7f9dc614f32b7096b61a87e3838eda3a66dcc5c03fad7d3baba80f2 [INFO] running `Command { std: "docker" "start" "-a" "baf23dd2b7f9dc614f32b7096b61a87e3838eda3a66dcc5c03fad7d3baba80f2", kill_on_drop: false }` [INFO] [stderr] Checking bob v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lexical_analysis.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / ///-----------------Everything that has to do with verifying and pre-processing syntax goes here----- [INFO] [stdout] 2 | | [INFO] [stdout] | |_^ [INFO] [stdout] 3 | pub fn string_space_remover_and_bracket_replacer(query: String) -> String { [INFO] [stdout] | ------------------------------------------------ the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - ///-----------------Everything that has to do with verifying and pre-processing syntax goes here----- [INFO] [stdout] 1 + //!-----------------Everything that has to do with verifying and pre-processing syntax goes here----- [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item has both inner and outer attributes [INFO] [stdout] --> src/standard_function_declarations.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | / ///-----------------HOW TO CREATE A NEW FUNCTION------------- [INFO] [stdout] 5 | | /// 1. Take possession of the keyword you want to use by adding to the match expression under [INFO] [stdout] 6 | | /// the iterator function in lib.rs. [INFO] [stdout] 7 | | /// [INFO] [stdout] ... | [INFO] [stdout] 30 | | //! Accepts a string or expression that is evaluated and written to stdout. Defines both the [INFO] [stdout] 31 | | //! write and write_line Bob functions. [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mixed_attributes_style [INFO] [stdout] = note: `#[warn(clippy::mixed_attributes_style)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/standard_function_declarations.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | / ///--------------------------------------------------------- [INFO] [stdout] 22 | | [INFO] [stdout] | |_^ [INFO] [stdout] 23 | pub fn write_to_stdout( [INFO] [stdout] | ---------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/standard_function_declarations.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | variable_type: variable_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `variable_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lexical_analysis.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / ///-----------------Everything that has to do with verifying and pre-processing syntax goes here----- [INFO] [stdout] 2 | | [INFO] [stdout] | |_^ [INFO] [stdout] 3 | pub fn string_space_remover_and_bracket_replacer(query: String) -> String { [INFO] [stdout] | ------------------------------------------------ the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - ///-----------------Everything that has to do with verifying and pre-processing syntax goes here----- [INFO] [stdout] 1 + //!-----------------Everything that has to do with verifying and pre-processing syntax goes here----- [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: item has both inner and outer attributes [INFO] [stdout] --> src/standard_function_declarations.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | / ///-----------------HOW TO CREATE A NEW FUNCTION------------- [INFO] [stdout] 5 | | /// 1. Take possession of the keyword you want to use by adding to the match expression under [INFO] [stdout] 6 | | /// the iterator function in lib.rs. [INFO] [stdout] 7 | | /// [INFO] [stdout] ... | [INFO] [stdout] 30 | | //! Accepts a string or expression that is evaluated and written to stdout. Defines both the [INFO] [stdout] 31 | | //! write and write_line Bob functions. [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mixed_attributes_style [INFO] [stdout] = note: `#[warn(clippy::mixed_attributes_style)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/standard_function_declarations.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | / ///--------------------------------------------------------- [INFO] [stdout] 22 | | [INFO] [stdout] | |_^ [INFO] [stdout] 23 | pub fn write_to_stdout( [INFO] [stdout] | ---------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/standard_function_declarations.rs:139:17 [INFO] [stdout] | [INFO] [stdout] 139 | variable_type: variable_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `variable_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lib.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | let mut query_vector: Vec = query [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lib.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | let mut query_vector: Vec = query [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/lexical_analysis.rs:64:19 [INFO] [stdout] | [INFO] [stdout] 64 | query_vector: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 64 - query_vector: &mut Vec, [INFO] [stdout] 64 + query_vector: &mut [String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lexical_analysis.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | if expression.len() == 0 {continue;} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `expression.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` 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/lexical_analysis.rs:77:40 [INFO] [stdout] | [INFO] [stdout] 77 | &mut crate::token_assigner(&mut expression, variable_stack); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `expression` [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 if-then-else expression returns a bool literal [INFO] [stdout] --> src/lexical_analysis.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | / if x.0 == "(" || x.0 == ")" { [INFO] [stdout] 80 | | false [INFO] [stdout] 81 | | } else { [INFO] [stdout] 82 | | true [INFO] [stdout] 83 | | } [INFO] [stdout] | |_____________^ help: you can reduce it to: `!(x.0 == "(" || x.0 == ")")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexical_analysis.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | / if temp_expression.len() == 3 { [INFO] [stdout] 89 | | if temp_expression[1].1 == crate::Token_type::OPERATOR_ASSIGNMENT { [INFO] [stdout] 90 | | if temp_expression[2].1 == crate::Token_type::TYPE_STRING { [INFO] [stdout] 91 | | expression_type = crate::Expression_type::DECLARER_STRING; [INFO] [stdout] ... | [INFO] [stdout] 106 | | false [INFO] [stdout] 107 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 87 ~ crate::Token_type::TO_BE_IDENTITY [INFO] [stdout] 88 ~ if temp_expression.len() == 3 => { [INFO] [stdout] 89 | if temp_expression[1].1 == crate::Token_type::OPERATOR_ASSIGNMENT { [INFO] [stdout] ... [INFO] [stdout] 104 | } [INFO] [stdout] 105 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/standard_function_declarations.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | variable_stack: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 58 - variable_stack: &Vec, [INFO] [stdout] 58 + variable_stack: &[crate::Variable], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/lexical_analysis.rs:64:19 [INFO] [stdout] | [INFO] [stdout] 64 | query_vector: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 64 - query_vector: &mut Vec, [INFO] [stdout] 64 + query_vector: &mut [String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lexical_analysis.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | if expression.len() == 0 {continue;} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `expression.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` 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/lexical_analysis.rs:77:40 [INFO] [stdout] | [INFO] [stdout] 77 | &mut crate::token_assigner(&mut expression, variable_stack); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: change this to: `expression` [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: using `clone` on type `Variable_type` which implements the `Copy` trait [INFO] [stdout] --> src/standard_function_declarations.rs:67:29 [INFO] [stdout] | [INFO] [stdout] 67 | variable_type = i.variable_type.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `i.variable_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/lexical_analysis.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | / if x.0 == "(" || x.0 == ")" { [INFO] [stdout] 80 | | false [INFO] [stdout] 81 | | } else { [INFO] [stdout] 82 | | true [INFO] [stdout] 83 | | } [INFO] [stdout] | |_____________^ help: you can reduce it to: `!(x.0 == "(" || x.0 == ")")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexical_analysis.rs:88:17 [INFO] [stdout] | [INFO] [stdout] 88 | / if temp_expression.len() == 3 { [INFO] [stdout] 89 | | if temp_expression[1].1 == crate::Token_type::OPERATOR_ASSIGNMENT { [INFO] [stdout] 90 | | if temp_expression[2].1 == crate::Token_type::TYPE_STRING { [INFO] [stdout] 91 | | expression_type = crate::Expression_type::DECLARER_STRING; [INFO] [stdout] ... | [INFO] [stdout] 106 | | false [INFO] [stdout] 107 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 87 ~ crate::Token_type::TO_BE_IDENTITY [INFO] [stdout] 88 ~ if temp_expression.len() == 3 => { [INFO] [stdout] 89 | if temp_expression[1].1 == crate::Token_type::OPERATOR_ASSIGNMENT { [INFO] [stdout] ... [INFO] [stdout] 104 | } [INFO] [stdout] 105 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:147:19 [INFO] [stdout] | [INFO] [stdout] 147 | } else if !query.parse::().is_err() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `query.parse::().is_ok()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:148:16 [INFO] [stdout] | [INFO] [stdout] 148 | if !query.parse::().is_err() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `query.parse::().is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/lib.rs:102:21 [INFO] [stdout] | [INFO] [stdout] 102 | variable_stack: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 102 - variable_stack: &mut Vec, [INFO] [stdout] 102 + variable_stack: &mut [Variable], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/standard_function_declarations.rs:58:21 [INFO] [stdout] | [INFO] [stdout] 58 | variable_stack: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 58 - variable_stack: &Vec, [INFO] [stdout] 58 + variable_stack: &[crate::Variable], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:123:19 [INFO] [stdout] | [INFO] [stdout] 123 | } else if match query.as_str() { [INFO] [stdout] | ___________________^ [INFO] [stdout] 124 | | "-" => true, [INFO] [stdout] 125 | | "*" => true, [INFO] [stdout] 126 | | "/" => true, [INFO] [stdout] ... | [INFO] [stdout] 130 | | _ => false, [INFO] [stdout] 131 | | } { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 123 - } else if match query.as_str() { [INFO] [stdout] 124 - "-" => true, [INFO] [stdout] 125 - "*" => true, [INFO] [stdout] 126 - "/" => true, [INFO] [stdout] 127 - ")" => true, [INFO] [stdout] 128 - "(" => true, [INFO] [stdout] 129 - "%" => true, [INFO] [stdout] 130 - _ => false, [INFO] [stdout] 131 - } { [INFO] [stdout] 123 + } else if matches!(query.as_str(), "-" | "*" | "/" | ")" | "(" | "%") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/lib.rs:241:10 [INFO] [stdout] | [INFO] [stdout] 241 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Variable_type` which implements the `Copy` trait [INFO] [stdout] --> src/standard_function_declarations.rs:67:29 [INFO] [stdout] | [INFO] [stdout] 67 | variable_type = i.variable_type.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `i.variable_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 275 | if headers.iostream == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `headers.iostream` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:278:8 [INFO] [stdout] | [INFO] [stdout] 278 | if headers.limits == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `headers.limits` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:281:8 [INFO] [stdout] | [INFO] [stdout] 281 | if headers.string == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `headers.string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:147:19 [INFO] [stdout] | [INFO] [stdout] 147 | } else if !query.parse::().is_err() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `query.parse::().is_ok()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:148:16 [INFO] [stdout] | [INFO] [stdout] 148 | if !query.parse::().is_err() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `query.parse::().is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/lib.rs:102:21 [INFO] [stdout] | [INFO] [stdout] 102 | variable_stack: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 102 - variable_stack: &mut Vec, [INFO] [stdout] 102 + variable_stack: &mut [Variable], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:123:19 [INFO] [stdout] | [INFO] [stdout] 123 | } else if match query.as_str() { [INFO] [stdout] | ___________________^ [INFO] [stdout] 124 | | "-" => true, [INFO] [stdout] 125 | | "*" => true, [INFO] [stdout] 126 | | "/" => true, [INFO] [stdout] ... | [INFO] [stdout] 130 | | _ => false, [INFO] [stdout] 131 | | } { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 123 - } else if match query.as_str() { [INFO] [stdout] 124 - "-" => true, [INFO] [stdout] 125 - "*" => true, [INFO] [stdout] 126 - "/" => true, [INFO] [stdout] 127 - ")" => true, [INFO] [stdout] 128 - "(" => true, [INFO] [stdout] 129 - "%" => true, [INFO] [stdout] 130 - _ => false, [INFO] [stdout] 131 - } { [INFO] [stdout] 123 + } else if matches!(query.as_str(), "-" | "*" | "/" | ")" | "(" | "%") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/lib.rs:241:10 [INFO] [stdout] | [INFO] [stdout] 241 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 275 | if headers.iostream == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `headers.iostream` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:278:8 [INFO] [stdout] | [INFO] [stdout] 278 | if headers.limits == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `headers.limits` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:281:8 [INFO] [stdout] | [INFO] [stdout] 281 | if headers.string == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `headers.string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/main.rs:13:1 [INFO] [stdout] | [INFO] [stdout] 13 | / ///-------------------------------------------------------------------- [INFO] [stdout] 14 | | [INFO] [stdout] | |_^ [INFO] [stdout] 15 | fn main() { [INFO] [stdout] | ------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/main.rs:13:1 [INFO] [stdout] | [INFO] [stdout] 13 | / ///-------------------------------------------------------------------- [INFO] [stdout] 14 | | [INFO] [stdout] | |_^ [INFO] [stdout] 15 | fn main() { [INFO] [stdout] | ------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | / if arg.len() == 3 { [INFO] [stdout] 28 | | if arg[2] == "--output-source" { [INFO] [stdout] 29 | | if fs::metadata("output.cpp").is_ok() { [INFO] [stdout] 30 | | fs::remove_file("output.cpp").expect("Couldn't remove file output.cpp!"); [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#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 27 ~ if arg.len() == 3 [INFO] [stdout] 28 ~ && arg[2] == "--output-source" { [INFO] [stdout] 29 | if fs::metadata("output.cpp").is_ok() { [INFO] [stdout] ... [INFO] [stdout] 33 | enable_source = true; [INFO] [stdout] 34 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/main.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:62:20 [INFO] [stdout] | [INFO] [stdout] 62 | if query.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `query.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | / if arg.len() == 3 { [INFO] [stdout] 28 | | if arg[2] == "--output-source" { [INFO] [stdout] 29 | | if fs::metadata("output.cpp").is_ok() { [INFO] [stdout] 30 | | fs::remove_file("output.cpp").expect("Couldn't remove file output.cpp!"); [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#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 27 ~ if arg.len() == 3 [INFO] [stdout] 28 ~ && arg[2] == "--output-source" { [INFO] [stdout] 29 | if fs::metadata("output.cpp").is_ok() { [INFO] [stdout] ... [INFO] [stdout] 33 | enable_source = true; [INFO] [stdout] 34 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/main.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:62:20 [INFO] [stdout] | [INFO] [stdout] 62 | if query.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `query.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.60s [INFO] running `Command { std: "docker" "inspect" "baf23dd2b7f9dc614f32b7096b61a87e3838eda3a66dcc5c03fad7d3baba80f2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "baf23dd2b7f9dc614f32b7096b61a87e3838eda3a66dcc5c03fad7d3baba80f2", kill_on_drop: false }` [INFO] [stdout] baf23dd2b7f9dc614f32b7096b61a87e3838eda3a66dcc5c03fad7d3baba80f2