[INFO] cloning repository https://github.com/FloatingComet62/comrade [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/FloatingComet62/comrade" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFloatingComet62%2Fcomrade", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFloatingComet62%2Fcomrade'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 622ea7f4016938c1c459bcb9b2cf373fa31852ed [INFO] linting FloatingComet62/comrade against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FFloatingComet62%2Fcomrade" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/FloatingComet62/comrade [INFO] finished tweaking git repo https://github.com/FloatingComet62/comrade [INFO] tweaked toml for git repo https://github.com/FloatingComet62/comrade written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/FloatingComet62/comrade 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/FloatingComet62/comrade 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] Downloading crates ... [INFO] [stderr] Downloaded open v4.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] a27455b9c34ca90a16c6be54a47440e3103d52f0932132351a828897b6f49684 [INFO] running `Command { std: "docker" "start" "-a" "a27455b9c34ca90a16c6be54a47440e3103d52f0932132351a828897b6f49684", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a27455b9c34ca90a16c6be54a47440e3103d52f0932132351a828897b6f49684", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a27455b9c34ca90a16c6be54a47440e3103d52f0932132351a828897b6f49684", kill_on_drop: false }` [INFO] [stdout] a27455b9c34ca90a16c6be54a47440e3103d52f0932132351a828897b6f49684 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 5c3c15e8f269d3cc585620d2a047f03dfab018eab1c3c2b383473e6da122d01a [INFO] running `Command { std: "docker" "start" "-a" "5c3c15e8f269d3cc585620d2a047f03dfab018eab1c3c2b383473e6da122d01a", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.142 [INFO] [stderr] Checking pathdiff v0.2.1 [INFO] [stderr] Checking open v4.0.1 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking colored v2.0.0 [INFO] [stderr] Checking comrade v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/compiler.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | program: &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] 6 ~ program: &[Node], [INFO] [stdout] 7 | init_code: String, [INFO] [stdout] ... [INFO] [stdout] 27 | for i in 0..program.len() { [INFO] [stdout] 28 ~ let item = &mut program.to_owned()[i]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lexer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | /// `fun main(args1 -> type1)`
[INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 9 | /// `fun main(args1 -> type1)`
[INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lexer.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | /// `"fun" "main" "(" "arg1" "->" "type1" ")"`
[INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 10 | /// `"fun" "main" "(" "arg1" "->" "type1" ")"`
[INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lexer.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | ///

[INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 11 | ///

[INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BooleanManager` [INFO] [stdout] --> src/nodes/booleans.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for BooleanManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `EnumManager` [INFO] [stdout] --> src/nodes/enum_expr.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for EnumManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `ExternCManager` [INFO] [stdout] --> src/nodes/extern_c.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for ExternCManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `FunctionManager` [INFO] [stdout] --> src/nodes/function.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | / pub fn new() -> Self { [INFO] [stdout] 42 | | Self {} [INFO] [stdout] 43 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 40 + impl Default for FunctionManager { [INFO] [stdout] 41 + fn default() -> Self { [INFO] [stdout] 42 + Self::new() [INFO] [stdout] 43 + } [INFO] [stdout] 44 + } [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/nodes/if_expr.rs:15:27 [INFO] [stdout] | [INFO] [stdout] 15 | fn is_last_an_if(program: &Vec) -> u8 { [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] 15 - fn is_last_an_if(program: &Vec) -> u8 { [INFO] [stdout] 15 + fn is_last_an_if(program: &[Node]) -> u8 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `IfElseManager` [INFO] [stdout] --> src/nodes/if_expr.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn new() -> Self { [INFO] [stdout] 39 | | Self {} [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 37 + impl Default for IfElseManager { [INFO] [stdout] 38 + fn default() -> Self { [INFO] [stdout] 39 + Self::new() [INFO] [stdout] 40 + } [INFO] [stdout] 41 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/nodes/if_expr.rs:104:40 [INFO] [stdout] | [INFO] [stdout] 104 | let next_token = input.get(i.clone() + 1).unwrap_or(&blank); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*i` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/compiler.rs:6:14 [INFO] [stdout] | [INFO] [stdout] 6 | program: &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] 6 ~ program: &[Node], [INFO] [stdout] 7 | init_code: String, [INFO] [stdout] ... [INFO] [stdout] 27 | for i in 0..program.len() { [INFO] [stdout] 28 ~ let item = &mut program.to_owned()[i]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nodes/literal.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | return Some(enum_vals[1].to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - return Some(enum_vals[1].to_string()); [INFO] [stdout] 48 + Some(enum_vals[1].to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nodes/literal.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | return Some(data.literal); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 50 - return Some(data.literal); [INFO] [stdout] 50 + Some(data.literal) [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/nodes/match_expr.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | input: &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] 10 ~ input: &[String], [INFO] [stdout] 11 | parser_data: ParserData, [INFO] [stdout] 12 | i: usize, [INFO] [stdout] 13 | ) -> (usize, Option) { [INFO] [stdout] 14 ~ let parser = Parser::new(input.to_owned(), parser_data); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `MatchManager` [INFO] [stdout] --> src/nodes/match_expr.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | / pub fn new() -> Self { [INFO] [stdout] 59 | | Self {} [INFO] [stdout] 60 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 57 + impl Default for MatchManager { [INFO] [stdout] 58 + fn default() -> Self { [INFO] [stdout] 59 + Self::new() [INFO] [stdout] 60 + } [INFO] [stdout] 61 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lexer.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | /// `fun main(args1 -> type1)`
[INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 9 | /// `fun main(args1 -> type1)`
[INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lexer.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | /// `"fun" "main" "(" "arg1" "->" "type1" ")"`
[INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 10 | /// `"fun" "main" "(" "arg1" "->" "type1" ")"`
[INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lexer.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | ///

[INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 11 | ///

[INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `StatementManager` [INFO] [stdout] --> src/nodes/statement.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | / pub fn new() -> Self { [INFO] [stdout] 44 | | Self {} [INFO] [stdout] 45 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 42 + impl Default for StatementManager { [INFO] [stdout] 43 + fn default() -> Self { [INFO] [stdout] 44 + Self::new() [INFO] [stdout] 45 + } [INFO] [stdout] 46 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BooleanManager` [INFO] [stdout] --> src/nodes/booleans.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for BooleanManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `EnumManager` [INFO] [stdout] --> src/nodes/enum_expr.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for EnumManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `ExternCManager` [INFO] [stdout] --> src/nodes/extern_c.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for ExternCManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [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/nodes/struct_expr.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | input: &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] 11 ~ input: &[String], [INFO] [stdout] 12 | parser_data: ParserData, [INFO] [stdout] 13 | i: usize, [INFO] [stdout] 14 | ) -> (usize, Option) { [INFO] [stdout] 15 ~ let parser = Parser::new(input.to_owned(), parser_data); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `StructManager` [INFO] [stdout] --> src/nodes/struct_expr.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | / pub fn new() -> Self { [INFO] [stdout] 54 | | Self {} [INFO] [stdout] 55 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 52 + impl Default for StructManager { [INFO] [stdout] 53 + fn default() -> Self { [INFO] [stdout] 54 + Self::new() [INFO] [stdout] 55 + } [INFO] [stdout] 56 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `FunctionManager` [INFO] [stdout] --> src/nodes/function.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | / pub fn new() -> Self { [INFO] [stdout] 42 | | Self {} [INFO] [stdout] 43 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 40 + impl Default for FunctionManager { [INFO] [stdout] 41 + fn default() -> Self { [INFO] [stdout] 42 + Self::new() [INFO] [stdout] 43 + } [INFO] [stdout] 44 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nodes/variable_assignment.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | return parser.program; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 51 - return parser.program; [INFO] [stdout] 51 + parser.program [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/nodes/variable_assignment.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | iden: &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] 14 ~ iden: &[String], [INFO] [stdout] 15 | ) -> Vec { [INFO] [stdout] ... [INFO] [stdout] 34 | NodeData::Literal(_) => { [INFO] [stdout] 35 ~ let mut item_iden = iden.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/nodes/variable_assignment.rs:16:37 [INFO] [stdout] | [INFO] [stdout] 16 | let i_type_type = type_from_str(&i_type); [INFO] [stdout] | ^^^^^^^ help: change this to: `i_type` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/nodes/variable_assignment.rs:31:34 [INFO] [stdout] | [INFO] [stdout] 31 | self_data.retain(|x| x[0] == i_type.to_string()); // only 1 answer [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*i_type` [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: unneeded `return` statement [INFO] [stdout] --> src/nodes/variable_assignment.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | return text == "let" || text == "const"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 101 - return text == "let" || text == "const"; [INFO] [stdout] 101 + text == "let" || text == "const" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/nodes/variable_assignment.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | let val = val_getter(&i_type, raw_val, &mut parser_data, &iden.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `parser_data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/if_expr.rs:15:27 [INFO] [stdout] | [INFO] [stdout] 15 | fn is_last_an_if(program: &Vec) -> u8 { [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] 15 - fn is_last_an_if(program: &Vec) -> u8 { [INFO] [stdout] 15 + fn is_last_an_if(program: &[Node]) -> u8 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `IfElseManager` [INFO] [stdout] --> src/nodes/if_expr.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn new() -> Self { [INFO] [stdout] 39 | | Self {} [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 37 + impl Default for IfElseManager { [INFO] [stdout] 38 + fn default() -> Self { [INFO] [stdout] 39 + Self::new() [INFO] [stdout] 40 + } [INFO] [stdout] 41 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `WhileManager` [INFO] [stdout] --> src/nodes/while_expr.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for WhileManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/mod.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | text: &String, [INFO] [stdout] | ^^^^^^^ help: change this to: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/mod.rs:28:24 [INFO] [stdout] | [INFO] [stdout] 28 | previous_text: &String, [INFO] [stdout] | ^^^^^^^ help: change this to: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/mod.rs:29:16 [INFO] [stdout] | [INFO] [stdout] 29 | input: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/nodes/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | / fn parser( [INFO] [stdout] 23 | | &self, [INFO] [stdout] 24 | | parser: Parser, [INFO] [stdout] 25 | | program: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 31 | | parser_data: &mut ParserData, [INFO] [stdout] 32 | | ); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/nodes/if_expr.rs:104:40 [INFO] [stdout] | [INFO] [stdout] 104 | let next_token = input.get(i.clone() + 1).unwrap_or(&blank); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*i` [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: unneeded `return` statement [INFO] [stdout] --> src/nodes/literal.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | return Some(enum_vals[1].to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - return Some(enum_vals[1].to_string()); [INFO] [stdout] 48 + Some(enum_vals[1].to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nodes/literal.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | return Some(data.literal); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 50 - return Some(data.literal); [INFO] [stdout] 50 + Some(data.literal) [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/nodes/match_expr.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | input: &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] 10 ~ input: &[String], [INFO] [stdout] 11 | parser_data: ParserData, [INFO] [stdout] 12 | i: usize, [INFO] [stdout] 13 | ) -> (usize, Option) { [INFO] [stdout] 14 ~ let parser = Parser::new(input.to_owned(), parser_data); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `MatchManager` [INFO] [stdout] --> src/nodes/match_expr.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | / pub fn new() -> Self { [INFO] [stdout] 59 | | Self {} [INFO] [stdout] 60 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 57 + impl Default for MatchManager { [INFO] [stdout] 58 + fn default() -> Self { [INFO] [stdout] 59 + Self::new() [INFO] [stdout] 60 + } [INFO] [stdout] 61 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:189:16 [INFO] [stdout] | [INFO] [stdout] 189 | if !(first == "[") { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `(first != "[")` [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/parser.rs:194:16 [INFO] [stdout] | [INFO] [stdout] 194 | if !(second == "]") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `(second != "]")` [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: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 207 - return None; [INFO] [stdout] 207 + None [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/parser.rs:187:58 [INFO] [stdout] | [INFO] [stdout] 187 | fn list_check(&self, idenf: &mut Vec, input: &Vec, i: usize) -> Option<()> { [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] 187 - fn list_check(&self, idenf: &mut Vec, input: &Vec, i: usize) -> Option<()> { [INFO] [stdout] 187 + fn list_check(&self, idenf: &mut Vec, input: &[String], i: usize) -> Option<()> { [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/parser.rs:214:15 [INFO] [stdout] | [INFO] [stdout] 214 | iden: &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] 214 ~ iden: &[String], [INFO] [stdout] 215 | ) -> Option { [INFO] [stdout] ... [INFO] [stdout] 230 | } [INFO] [stdout] 231 ~ let mut idenf = iden.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:245:12 [INFO] [stdout] | [INFO] [stdout] 245 | if !(text == enum_val[0]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `(text != enum_val[0])` [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: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:249:16 [INFO] [stdout] | [INFO] [stdout] 249 | if !(&self.input[i + j] == val) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(&self.input[i + j] != val)` [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 `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/parser.rs:244:75 [INFO] [stdout] | [INFO] [stdout] 244 | fn enum_check(&self, program: &mut Vec, text: String, enum_val: &Vec, i: usize) { [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] 244 - fn enum_check(&self, program: &mut Vec, text: String, enum_val: &Vec, i: usize) { [INFO] [stdout] 244 + fn enum_check(&self, program: &mut Vec, text: String, enum_val: &[String], i: usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:295:24 [INFO] [stdout] | [INFO] [stdout] 295 | if !(text == &iden[0]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `(text != &iden[0])` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:298:66 [INFO] [stdout] | [INFO] [stdout] 298 | match self.identifier_check(&mut program, i, &iden) { [INFO] [stdout] | ^^^^^ help: change this to: `iden` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/parser.rs:322:24 [INFO] [stdout] | [INFO] [stdout] 322 | } else if { [INFO] [stdout] | ________________________^ [INFO] [stdout] 323 | | let mut output = false; [INFO] [stdout] 324 | | if text.len() >= 2 [INFO] [stdout] 325 | | && text.chars().next().expect("impossible") == '-' [INFO] [stdout] ... | [INFO] [stdout] 335 | | output [INFO] [stdout] 336 | | } { [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] = note: `#[warn(clippy::blocks_in_conditions)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 322 ~ } else let res = { [INFO] [stdout] 323 + let mut output = false; [INFO] [stdout] 324 + if text.len() >= 2 [INFO] [stdout] 325 + && text.chars().next().expect("impossible") == '-' [INFO] [stdout] 326 + && text.chars().nth(1).expect("impossible").is_numeric() [INFO] [stdout] 327 + { [INFO] [stdout] 328 + output = true; [INFO] [stdout] 329 + } [INFO] [stdout] 330 + if !output { [INFO] [stdout] 331 + // there is only 1 previous true assignment for output, so if output is true, then that means it is -ve [INFO] [stdout] 332 + output = text.chars().next().unwrap_or('\0').is_numeric(); [INFO] [stdout] 333 + } [INFO] [stdout] 334 + [INFO] [stdout] 335 + output [INFO] [stdout] 336 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `StatementManager` [INFO] [stdout] --> src/nodes/statement.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | / pub fn new() -> Self { [INFO] [stdout] 44 | | Self {} [INFO] [stdout] 45 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 42 + impl Default for StatementManager { [INFO] [stdout] 43 + fn default() -> Self { [INFO] [stdout] 44 + Self::new() [INFO] [stdout] 45 + } [INFO] [stdout] 46 + } [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/nodes/struct_expr.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | input: &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] 11 ~ input: &[String], [INFO] [stdout] 12 | parser_data: ParserData, [INFO] [stdout] 13 | i: usize, [INFO] [stdout] 14 | ) -> (usize, Option) { [INFO] [stdout] 15 ~ let parser = Parser::new(input.to_owned(), parser_data); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/type_checker/mod.rs:41:16 [INFO] [stdout] | [INFO] [stdout] 41 | if !(name == &fun.name) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `(name != &fun.name)` [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: this boolean expression can be simplified [INFO] [stdout] --> src/type_checker/mod.rs:47:16 [INFO] [stdout] | [INFO] [stdout] 47 | if !(name == &var.name) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `(name != &var.name)` [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: you should consider adding a `Default` implementation for `StructManager` [INFO] [stdout] --> src/nodes/struct_expr.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | / pub fn new() -> Self { [INFO] [stdout] 54 | | Self {} [INFO] [stdout] 55 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 52 + impl Default for StructManager { [INFO] [stdout] 53 + fn default() -> Self { [INFO] [stdout] 54 + Self::new() [INFO] [stdout] 55 + } [INFO] [stdout] 56 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/nodes/variable_assignment.rs:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | return parser.program; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 51 - return parser.program; [INFO] [stdout] 51 + parser.program [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/nodes/variable_assignment.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | iden: &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] 14 ~ iden: &[String], [INFO] [stdout] 15 | ) -> Vec { [INFO] [stdout] ... [INFO] [stdout] 34 | NodeData::Literal(_) => { [INFO] [stdout] 35 ~ let mut item_iden = iden.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/nodes/variable_assignment.rs:16:37 [INFO] [stdout] | [INFO] [stdout] 16 | let i_type_type = type_from_str(&i_type); [INFO] [stdout] | ^^^^^^^ help: change this to: `i_type` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/nodes/variable_assignment.rs:31:34 [INFO] [stdout] | [INFO] [stdout] 31 | self_data.retain(|x| x[0] == i_type.to_string()); // only 1 answer [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*i_type` [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: unneeded `return` statement [INFO] [stdout] --> src/nodes/variable_assignment.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | return text == "let" || text == "const"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 101 - return text == "let" || text == "const"; [INFO] [stdout] 101 + text == "let" || text == "const" [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/nodes/variable_assignment.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | let val = val_getter(&i_type, raw_val, &mut parser_data, &iden.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `parser_data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `WhileManager` [INFO] [stdout] --> src/nodes/while_expr.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | / pub fn new() -> Self { [INFO] [stdout] 11 | | Self {} [INFO] [stdout] 12 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 9 + impl Default for WhileManager { [INFO] [stdout] 10 + fn default() -> Self { [INFO] [stdout] 11 + Self::new() [INFO] [stdout] 12 + } [INFO] [stdout] 13 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/mod.rs:27:15 [INFO] [stdout] | [INFO] [stdout] 27 | text: &String, [INFO] [stdout] | ^^^^^^^ help: change this to: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/mod.rs:28:24 [INFO] [stdout] | [INFO] [stdout] 28 | previous_text: &String, [INFO] [stdout] | ^^^^^^^ help: change this to: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/nodes/mod.rs:29:16 [INFO] [stdout] | [INFO] [stdout] 29 | input: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `&[String]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/nodes/mod.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | / fn parser( [INFO] [stdout] 23 | | &self, [INFO] [stdout] 24 | | parser: Parser, [INFO] [stdout] 25 | | program: &mut Vec, [INFO] [stdout] ... | [INFO] [stdout] 31 | | parser_data: &mut ParserData, [INFO] [stdout] 32 | | ); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:189:16 [INFO] [stdout] | [INFO] [stdout] 189 | if !(first == "[") { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `(first != "[")` [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/parser.rs:194:16 [INFO] [stdout] | [INFO] [stdout] 194 | if !(second == "]") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `(second != "]")` [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: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 207 - return None; [INFO] [stdout] 207 + None [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/parser.rs:187:58 [INFO] [stdout] | [INFO] [stdout] 187 | fn list_check(&self, idenf: &mut Vec, input: &Vec, i: usize) -> Option<()> { [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] 187 - fn list_check(&self, idenf: &mut Vec, input: &Vec, i: usize) -> Option<()> { [INFO] [stdout] 187 + fn list_check(&self, idenf: &mut Vec, input: &[String], i: usize) -> Option<()> { [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/parser.rs:214:15 [INFO] [stdout] | [INFO] [stdout] 214 | iden: &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] 214 ~ iden: &[String], [INFO] [stdout] 215 | ) -> Option { [INFO] [stdout] ... [INFO] [stdout] 230 | } [INFO] [stdout] 231 ~ let mut idenf = iden.to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:245:12 [INFO] [stdout] | [INFO] [stdout] 245 | if !(text == enum_val[0]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `(text != enum_val[0])` [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: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:249:16 [INFO] [stdout] | [INFO] [stdout] 249 | if !(&self.input[i + j] == val) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(&self.input[i + j] != val)` [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 `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/parser.rs:244:75 [INFO] [stdout] | [INFO] [stdout] 244 | fn enum_check(&self, program: &mut Vec, text: String, enum_val: &Vec, i: usize) { [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] 244 - fn enum_check(&self, program: &mut Vec, text: String, enum_val: &Vec, i: usize) { [INFO] [stdout] 244 + fn enum_check(&self, program: &mut Vec, text: String, enum_val: &[String], i: usize) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:295:24 [INFO] [stdout] | [INFO] [stdout] 295 | if !(text == &iden[0]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `(text != &iden[0])` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:298:66 [INFO] [stdout] | [INFO] [stdout] 298 | match self.identifier_check(&mut program, i, &iden) { [INFO] [stdout] | ^^^^^ help: change this to: `iden` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: in an `if` condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a `let` [INFO] [stdout] --> src/parser.rs:322:24 [INFO] [stdout] | [INFO] [stdout] 322 | } else if { [INFO] [stdout] | ________________________^ [INFO] [stdout] 323 | | let mut output = false; [INFO] [stdout] 324 | | if text.len() >= 2 [INFO] [stdout] 325 | | && text.chars().next().expect("impossible") == '-' [INFO] [stdout] ... | [INFO] [stdout] 335 | | output [INFO] [stdout] 336 | | } { [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blocks_in_conditions [INFO] [stdout] = note: `#[warn(clippy::blocks_in_conditions)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 322 ~ } else let res = { [INFO] [stdout] 323 + let mut output = false; [INFO] [stdout] 324 + if text.len() >= 2 [INFO] [stdout] 325 + && text.chars().next().expect("impossible") == '-' [INFO] [stdout] 326 + && text.chars().nth(1).expect("impossible").is_numeric() [INFO] [stdout] 327 + { [INFO] [stdout] 328 + output = true; [INFO] [stdout] 329 + } [INFO] [stdout] 330 + if !output { [INFO] [stdout] 331 + // there is only 1 previous true assignment for output, so if output is true, then that means it is -ve [INFO] [stdout] 332 + output = text.chars().next().unwrap_or('\0').is_numeric(); [INFO] [stdout] 333 + } [INFO] [stdout] 334 + [INFO] [stdout] 335 + output [INFO] [stdout] 336 ~ }; if res { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/lib.rs:313:35 [INFO] [stdout] | [INFO] [stdout] 313 | NodeData::None => format!(""), [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/nodes/enum_expr.rs:30:29 [INFO] [stdout] | [INFO] [stdout] 30 | members.retain(|x| !vec!["EOL", ",", "{", "}"].contains(&x.as_str())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `["EOL", ",", "{", "}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/type_checker/mod.rs:41:16 [INFO] [stdout] | [INFO] [stdout] 41 | if !(name == &fun.name) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `(name != &fun.name)` [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: this boolean expression can be simplified [INFO] [stdout] --> src/type_checker/mod.rs:47:16 [INFO] [stdout] | [INFO] [stdout] 47 | if !(name == &var.name) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `(name != &var.name)` [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: useless use of `format!` [INFO] [stdout] --> src/lib.rs:313:35 [INFO] [stdout] | [INFO] [stdout] 313 | NodeData::None => format!(""), [INFO] [stdout] | ^^^^^^^^^^^ help: consider using `String::new()`: `String::new()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/nodes/enum_expr.rs:30:29 [INFO] [stdout] | [INFO] [stdout] 30 | members.retain(|x| !vec!["EOL", ",", "{", "}"].contains(&x.as_str())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `["EOL", ",", "{", "}"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: spawned process is never `wait()`ed on [INFO] [stdout] --> src/main.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | / Command::new(compiler) [INFO] [stdout] 110 | | .arg(out_path) [INFO] [stdout] 111 | | .arg("-omain.exe") // for some reason, using "-o main.exe" creates a file " main.exe" [INFO] [stdout] 112 | | .spawn() [INFO] [stdout] 113 | | .expect("Failed to compile C code"); [INFO] [stdout] | | ^- help: try: `.wait()` [INFO] [stdout] | |___________________________________________________| [INFO] [stdout] | [INFO] [stdout] | [INFO] [stdout] = note: not doing so might leave behind zombie processes [INFO] [stdout] = note: see https://doc.rust-lang.org/stable/std/process/struct.Child.html#warning [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zombie_processes [INFO] [stdout] = note: `#[warn(clippy::zombie_processes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: spawned process is never `wait()`ed on [INFO] [stdout] --> src/main.rs:109:13 [INFO] [stdout] | [INFO] [stdout] 109 | / Command::new(compiler) [INFO] [stdout] 110 | | .arg(out_path) [INFO] [stdout] 111 | | .arg("-omain.exe") // for some reason, using "-o main.exe" creates a file " main.exe" [INFO] [stdout] 112 | | .spawn() [INFO] [stdout] 113 | | .expect("Failed to compile C code"); [INFO] [stdout] | | ^- help: try: `.wait()` [INFO] [stdout] | |___________________________________________________| [INFO] [stdout] | [INFO] [stdout] | [INFO] [stdout] = note: not doing so might leave behind zombie processes [INFO] [stdout] = note: see https://doc.rust-lang.org/stable/std/process/struct.Child.html#warning [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zombie_processes [INFO] [stdout] = note: `#[warn(clippy::zombie_processes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.37s [INFO] running `Command { std: "docker" "inspect" "5c3c15e8f269d3cc585620d2a047f03dfab018eab1c3c2b383473e6da122d01a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5c3c15e8f269d3cc585620d2a047f03dfab018eab1c3c2b383473e6da122d01a", kill_on_drop: false }` [INFO] [stdout] 5c3c15e8f269d3cc585620d2a047f03dfab018eab1c3c2b383473e6da122d01a