[INFO] cloning repository https://github.com/jumang4423/nylang [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jumang4423/nylang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjumang4423%2Fnylang", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjumang4423%2Fnylang'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d884b22420bfdeaab117e8dde2b42906c627eefa [INFO] linting jumang4423/nylang against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjumang4423%2Fnylang" "/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/jumang4423/nylang [INFO] finished tweaking git repo https://github.com/jumang4423/nylang [INFO] tweaked toml for git repo https://github.com/jumang4423/nylang written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jumang4423/nylang 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/jumang4423/nylang already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded proc-macro2 v1.0.32 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.78 [INFO] [stderr] Downloaded redox_users v0.4.0 [INFO] [stderr] Downloaded dirs-sys v0.3.6 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.78 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.78 [INFO] [stderr] Downloaded openssl-probe v0.1.4 [INFO] [stderr] Downloaded redox_syscall v0.2.10 [INFO] [stderr] Downloaded colored v2.0.0 [INFO] [stderr] Downloaded unicode-bidi v0.3.7 [INFO] [stderr] Downloaded cc v1.0.72 [INFO] [stderr] Downloaded js-sys v0.3.55 [INFO] [stderr] Downloaded openssl-sys v0.9.72 [INFO] [stderr] Downloaded tinyvec v1.5.1 [INFO] [stderr] Downloaded getrandom v0.2.3 [INFO] [stderr] Downloaded jobserver v0.1.24 [INFO] [stderr] Downloaded wasm-bindgen v0.2.78 [INFO] [stderr] Downloaded ppv-lite86 v0.2.15 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.78 [INFO] [stderr] Downloaded git2 v0.13.25 [INFO] [stderr] Downloaded syn v1.0.81 [INFO] [stderr] Downloaded pkg-config v0.3.24 [INFO] [stderr] Downloaded bumpalo v3.8.0 [INFO] [stderr] Downloaded quote v1.0.10 [INFO] [stderr] Downloaded libssh2-sys v0.2.23 [INFO] [stderr] Downloaded libc v0.2.104 [INFO] [stderr] Downloaded libz-sys v1.1.3 [INFO] [stderr] Downloaded libgit2-sys v0.12.26+1.3.0 [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] c3b15d3ef1c3b5a42b13648a02eca03ee7f7fb06f0730873ed6370c939af63de [INFO] running `Command { std: "docker" "start" "-a" "c3b15d3ef1c3b5a42b13648a02eca03ee7f7fb06f0730873ed6370c939af63de", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c3b15d3ef1c3b5a42b13648a02eca03ee7f7fb06f0730873ed6370c939af63de", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c3b15d3ef1c3b5a42b13648a02eca03ee7f7fb06f0730873ed6370c939af63de", kill_on_drop: false }` [INFO] [stdout] c3b15d3ef1c3b5a42b13648a02eca03ee7f7fb06f0730873ed6370c939af63de [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] fb368fef66aa6351a712810737d7c788e866b14ff57ec2332ac1601e73edc4cd [INFO] running `Command { std: "docker" "start" "-a" "fb368fef66aa6351a712810737d7c788e866b14ff57ec2332ac1601e73edc4cd", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.104 [INFO] [stderr] Compiling pkg-config v0.3.24 [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Checking matches v0.1.9 [INFO] [stderr] Checking unicode-bidi v0.3.7 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Checking percent-encoding v2.1.0 [INFO] [stderr] Checking ppv-lite86 v0.2.15 [INFO] [stderr] Checking openssl-probe v0.1.4 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking tinyvec v1.5.1 [INFO] [stderr] Checking form_urlencoded v1.0.1 [INFO] [stderr] Compiling jobserver v0.1.24 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking dirs-sys v0.3.6 [INFO] [stderr] Compiling cc v1.0.72 [INFO] [stderr] Checking colored v2.0.0 [INFO] [stderr] Checking dirs v4.0.0 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking unicode-normalization v0.1.19 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Compiling openssl-sys v0.9.72 [INFO] [stderr] Compiling libz-sys v1.1.3 [INFO] [stderr] Compiling libssh2-sys v0.2.23 [INFO] [stderr] Compiling libgit2-sys v0.12.26+1.3.0 [INFO] [stderr] Checking url v2.2.2 [INFO] [stderr] Checking git2 v0.13.25 [INFO] [stderr] Checking nylang v0.1.1 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/builtin/errors.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | / /// [INFO] [stdout] 5 | | //////////////////////////////////////////////////////////////////////////////// [INFO] [stdout] 6 | | [INFO] [stdout] | |_^ [INFO] [stdout] 7 | use super::super::object; [INFO] [stdout] | - the comment documents this `use` import [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 doc comment should not document the following item then comment it out [INFO] [stdout] | [INFO] [stdout] 2 ~ // /// [INFO] [stdout] 3 ~ // /// // error handling [INFO] [stdout] 4 ~ // /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lexer/lexer.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | / /// [INFO] [stdout] 124 | | //////////////////////////////////////////////////////////////////////////////// [INFO] [stdout] 125 | | [INFO] [stdout] | |_^ [INFO] [stdout] 126 | fn skip_whitespace(&mut self) { [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] help: if the doc comment should not document function `skip_whitespace` then comment it out [INFO] [stdout] | [INFO] [stdout] 121 ~ // /// [INFO] [stdout] 122 ~ // /// // Methods [INFO] [stdout] 123 ~ // /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/parser/parser.rs:38:3 [INFO] [stdout] | [INFO] [stdout] 38 | / /// [INFO] [stdout] 39 | | //////////////////////////////////////////////////////////////////////////////// [INFO] [stdout] 40 | | [INFO] [stdout] | |_^ [INFO] [stdout] 41 | pub fn program_parser(&mut self) -> ast::ast::Program { [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] help: if the doc comment should not document function `program_parser` then comment it out [INFO] [stdout] | [INFO] [stdout] 36 ~ // /// [INFO] [stdout] 37 ~ // /// // actual parser [INFO] [stdout] 38 ~ // /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lint `mutable_borrow_reservation_conflict` has been removed: now allowed, see issue #59159 for more information [INFO] [stdout] --> src/parser/parser.rs:132:11 [INFO] [stdout] | [INFO] [stdout] 132 | #[allow(mutable_borrow_reservation_conflict)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(renamed_and_removed_lints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/builtin/errors.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | / /// [INFO] [stdout] 5 | | //////////////////////////////////////////////////////////////////////////////// [INFO] [stdout] 6 | | [INFO] [stdout] | |_^ [INFO] [stdout] 7 | use super::super::object; [INFO] [stdout] | - the comment documents this `use` import [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 doc comment should not document the following item then comment it out [INFO] [stdout] | [INFO] [stdout] 2 ~ // /// [INFO] [stdout] 3 ~ // /// // error handling [INFO] [stdout] 4 ~ // /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lexer/lexer.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | / /// [INFO] [stdout] 124 | | //////////////////////////////////////////////////////////////////////////////// [INFO] [stdout] 125 | | [INFO] [stdout] | |_^ [INFO] [stdout] 126 | fn skip_whitespace(&mut self) { [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] help: if the doc comment should not document function `skip_whitespace` then comment it out [INFO] [stdout] | [INFO] [stdout] 121 ~ // /// [INFO] [stdout] 122 ~ // /// // Methods [INFO] [stdout] 123 ~ // /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/parser/parser.rs:38:3 [INFO] [stdout] | [INFO] [stdout] 38 | / /// [INFO] [stdout] 39 | | //////////////////////////////////////////////////////////////////////////////// [INFO] [stdout] 40 | | [INFO] [stdout] | |_^ [INFO] [stdout] 41 | pub fn program_parser(&mut self) -> ast::ast::Program { [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] help: if the doc comment should not document function `program_parser` then comment it out [INFO] [stdout] | [INFO] [stdout] 36 ~ // /// [INFO] [stdout] 37 ~ // /// // actual parser [INFO] [stdout] 38 ~ // /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lint `mutable_borrow_reservation_conflict` has been removed: now allowed, see issue #59159 for more information [INFO] [stdout] --> src/parser/parser.rs:132:11 [INFO] [stdout] | [INFO] [stdout] 132 | #[allow(mutable_borrow_reservation_conflict)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(renamed_and_removed_lints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/builtin/builtin.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut is_found = false; [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: value assigned to `borrowed` is never read [INFO] [stdout] --> src/builtin/builtin.rs:74:11 [INFO] [stdout] | [INFO] [stdout] 74 | borrowed = RefMut::map(borrowed, |s| { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `borrowed_is_found` is never read [INFO] [stdout] --> src/builtin/builtin.rs:78:11 [INFO] [stdout] | [INFO] [stdout] 78 | borrowed_is_found = RefMut::map(borrowed_is_found, |s| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/builtin/builtin.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 66 | let mut is_found = false; [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: value assigned to `borrowed` is never read [INFO] [stdout] --> src/builtin/builtin.rs:74:11 [INFO] [stdout] | [INFO] [stdout] 74 | borrowed = RefMut::map(borrowed, |s| { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `borrowed_is_found` is never read [INFO] [stdout] --> src/builtin/builtin.rs:78:11 [INFO] [stdout] | [INFO] [stdout] 78 | borrowed_is_found = RefMut::map(borrowed_is_found, |s| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/ast/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod ast; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/builtin/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod builtin; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/builtin/builtin.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | / if path.is_file() { [INFO] [stdout] 71 | | if path.to_str().unwrap().contains(&file_name.clone()) { [INFO] [stdout] 72 | | let mut borrowed = seen_cell.borrow_mut(); [INFO] [stdout] 73 | | let mut borrowed_is_found = is_found_cell.borrow_mut(); [INFO] [stdout] ... | [INFO] [stdout] 83 | | } [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] 70 ~ if path.is_file() [INFO] [stdout] 71 ~ && path.to_str().unwrap().contains(&file_name.clone()) { [INFO] [stdout] 72 | let mut borrowed = seen_cell.borrow_mut(); [INFO] [stdout] ... [INFO] [stdout] 81 | }); [INFO] [stdout] 82 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/builtin/builtin.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | if !is_found_cell.borrow().clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*is_found_cell.borrow()` [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 boolean expression can be simplified [INFO] [stdout] --> src/builtin/io.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | assert!(!(args.len() != 1), "get_input: wrong number of arguments"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `(args.len() == 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/builtin/io.rs:31:3 [INFO] [stdout] | [INFO] [stdout] 31 | / return match _type { [INFO] [stdout] 32 | | "number" => object::object::Object::Integer(input.trim().parse::().unwrap()), [INFO] [stdout] 33 | | "boolean" | "bool" => { [INFO] [stdout] 34 | | object::object::Object::Boolean(tools::tools::str_to_bool(input.trim().to_string())) [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | _ => object::object::Object::String(input.trim().to_string()), [INFO] [stdout] 37 | | }; [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] 31 ~ match _type { [INFO] [stdout] 32 + "number" => object::object::Object::Integer(input.trim().parse::().unwrap()), [INFO] [stdout] 33 + "boolean" | "bool" => { [INFO] [stdout] 34 + object::object::Object::Boolean(tools::tools::str_to_bool(input.trim().to_string())) [INFO] [stdout] 35 + } [INFO] [stdout] 36 + _ => object::object::Object::String(input.trim().to_string()), [INFO] [stdout] 37 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/enve/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod enve; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/eval/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod eval; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/ast/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod ast; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/eval/eval.rs:283:9 [INFO] [stdout] | [INFO] [stdout] 283 | let obj_array: Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 284 | / obj_array = elements [INFO] [stdout] 285 | | .iter() [INFO] [stdout] 286 | | .map(|element| self.expression_evaluator(element.clone())) [INFO] [stdout] 287 | | .collect(); [INFO] [stdout] | |______________________^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `obj_array` here [INFO] [stdout] | [INFO] [stdout] 283 ~ [INFO] [stdout] 284 ~ let obj_array: Vec = elements [INFO] [stdout] 285 + .iter() [INFO] [stdout] 286 + .map(|element| self.expression_evaluator(element.clone())) [INFO] [stdout] 287 ~ .collect(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/eval/eval.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | / return match expression { [INFO] [stdout] 339 | | ast::ast::Expression::Ident(identifier) => match self.get_env(identifier.as_str()) { [INFO] [stdout] 340 | | Some(value) => value, [INFO] [stdout] 341 | | None => { [INFO] [stdout] ... | [INFO] [stdout] 461 | | }; [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] 338 ~ match expression { [INFO] [stdout] 339 + ast::ast::Expression::Ident(identifier) => match self.get_env(identifier.as_str()) { [INFO] [stdout] 340 + Some(value) => value, [INFO] [stdout] 341 + None => { [INFO] [stdout] 342 + panic!("identifier not found: {}", identifier) [INFO] [stdout] 343 + } [INFO] [stdout] 344 + }, [INFO] [stdout] 345 + ast::ast::Expression::Integer(integer) => object::object::Object::Integer(integer), [INFO] [stdout] 346 + ast::ast::Expression::Double(double) => object::object::Object::Double(double), [INFO] [stdout] 347 + ast::ast::Expression::Bool(boolean) => object::object::Object::Boolean(boolean), [INFO] [stdout] 348 + ast::ast::Expression::String(string) => object::object::Object::String(string), [INFO] [stdout] 349 + ast::ast::Expression::Array { elements } => self.array_evaluator(elements), [INFO] [stdout] 350 + ast::ast::Expression::ArrayIndex { left_ident, index } => { [INFO] [stdout] 351 + let array_obj: object::object::Object; [INFO] [stdout] 352 + let evaled_index: object::object::Object = self.expression_evaluator(*index); [INFO] [stdout] 353 + let wrapped_num: i32; [INFO] [stdout] 354 + [INFO] [stdout] 355 + // wrapping the index [INFO] [stdout] 356 + if let object::object::Object::Integer(w_index) = evaled_index { [INFO] [stdout] 357 + wrapped_num = w_index; [INFO] [stdout] 358 + } else { [INFO] [stdout] 359 + panic!("ArrayIndex: index should be integer"); [INFO] [stdout] 360 + } [INFO] [stdout] 361 + [INFO] [stdout] 362 + // wrapping the array [INFO] [stdout] 363 + if let ast::ast::Expression::Ident(ident) = *left_ident { [INFO] [stdout] 364 + match self.get_env(ident.as_str()) { [INFO] [stdout] 365 + Some(obj) => array_obj = obj, [INFO] [stdout] 366 + None => { [INFO] [stdout] 367 + panic!("no ident") [INFO] [stdout] 368 + } [INFO] [stdout] 369 + } [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + panic!("ArrayIndex: given ident dead, be sure you initialized correctly"); [INFO] [stdout] 372 + } [INFO] [stdout] 373 + [INFO] [stdout] 374 + // accecing the array [INFO] [stdout] 375 + if let object::object::Object::Array(vec_array) = array_obj { [INFO] [stdout] 376 + return vec_array[wrapped_num as usize].clone(); [INFO] [stdout] 377 + } else { [INFO] [stdout] 378 + panic!("ArrayIndex: given ident is not array type, maybe"); [INFO] [stdout] 379 + } [INFO] [stdout] 380 + } [INFO] [stdout] 381 + ast::ast::Expression::Prefix { op, right } => { [INFO] [stdout] 382 + let right = self.expression_evaluator(*right); [INFO] [stdout] 383 + self.prefix_evaluator(op, right) [INFO] [stdout] 384 + } [INFO] [stdout] 385 + ast::ast::Expression::Infix { op, left, right } => { [INFO] [stdout] 386 + let left = self.expression_evaluator(*left); [INFO] [stdout] 387 + let right = self.expression_evaluator(*right); [INFO] [stdout] 388 + [INFO] [stdout] 389 + return self.infix_evaluator(op, left, right); [INFO] [stdout] 390 + } [INFO] [stdout] 391 + ast::ast::Expression::If { [INFO] [stdout] 392 + condition, [INFO] [stdout] 393 + consequence, [INFO] [stdout] 394 + alternative, [INFO] [stdout] 395 + .. [INFO] [stdout] 396 + } => { [INFO] [stdout] 397 + if self.expression_evaluator(*condition).bool_check() { [INFO] [stdout] 398 + self.statement_evaluator(*consequence) [INFO] [stdout] 399 + } else { [INFO] [stdout] 400 + match alternative { [INFO] [stdout] 401 + Some(alt) => self.statement_evaluator(*alt), [INFO] [stdout] 402 + None => object::object::Object::Null, [INFO] [stdout] 403 + } [INFO] [stdout] 404 + } [INFO] [stdout] 405 + } [INFO] [stdout] 406 + ast::ast::Expression::Closure { parameters, body } => object::object::Object::Closure { [INFO] [stdout] 407 + parameters, [INFO] [stdout] 408 + body: *body, [INFO] [stdout] 409 + env: enve::enve::Environment::ve(*self.env.clone().into_inner()), [INFO] [stdout] 410 + }, [INFO] [stdout] 411 + ast::ast::Expression::Call { closure, arguments } => { [INFO] [stdout] 412 + let mut args = Vec::new(); [INFO] [stdout] 413 + for expr in arguments.iter() { [INFO] [stdout] 414 + args.push(self.expression_evaluator(expr.clone())); [INFO] [stdout] 415 + } [INFO] [stdout] 416 + [INFO] [stdout] 417 + // non reserved by parser [INFO] [stdout] 418 + if let ast::ast::Expression::Ident(func) = *closure.clone() { [INFO] [stdout] 419 + match func.as_str() { [INFO] [stdout] 420 ~ "🎤" => return builtin::io::bark(args, false), [INFO] [stdout] 421 ~ "🎤🎶" => return builtin::io::bark(args, true), [INFO] [stdout] 422 ~ "😪" => return builtin::builtin::sleep(args), [INFO] [stdout] 423 ~ "🌸" => return builtin::builtin::looper(args, self), [INFO] [stdout] 424 ~ "🌹" => return builtin::io::random_emojis(args), [INFO] [stdout] 425 ~ "👀" => return builtin::io::scanf(args), [INFO] [stdout] 426 ~ "🐽🐽🐽" => return builtin::builtin::import(args, self), [INFO] [stdout] 427 ~ "🐽" => return builtin::builtin::quick_import(args, self), [INFO] [stdout] 428 ~ "📏" => return builtin::array::len(args), [INFO] [stdout] 429 ~ "🥌" => return builtin::array::push(args), [INFO] [stdout] 430 ~ "🌛" => return builtin::array::rest(args), [INFO] [stdout] 431 ~ "❌" => return builtin::errors::panipani(args), [INFO] [stdout] 432 ~ "🥚" => return builtin::builtin::clear(), [INFO] [stdout] 433 ~ "🗿" => return builtin::array::assign(args), [INFO] [stdout] 434 ~ "🍄🍄" => return object::object::Object::Null, [INFO] [stdout] 435 + _ => {} [INFO] [stdout] 436 + } [INFO] [stdout] 437 + } [INFO] [stdout] 438 + [INFO] [stdout] 439 + let closure = self.expression_evaluator(*closure); [INFO] [stdout] 440 + [INFO] [stdout] 441 + if let object::object::Object::Closure { [INFO] [stdout] 442 + parameters, [INFO] [stdout] 443 + body, [INFO] [stdout] 444 + env, [INFO] [stdout] 445 + } = closure [INFO] [stdout] 446 + { [INFO] [stdout] 447 + let mut env = Evaluator::from(env); [INFO] [stdout] 448 + for (ident, arg) in parameters.iter().zip(args.iter()) { [INFO] [stdout] 449 + if let ast::ast::Expression::Ident(ident) = ident { [INFO] [stdout] 450 + env.set_env(ident.to_owned(), arg.clone()); [INFO] [stdout] 451 + } [INFO] [stdout] 452 + } [INFO] [stdout] 453 + match env.statement_evaluator(body) { [INFO] [stdout] 454 + object::object::Object::ReturnValue(obj) => *obj, [INFO] [stdout] 455 + obj => obj, [INFO] [stdout] 456 + } [INFO] [stdout] 457 + } else { [INFO] [stdout] 458 + panic!("not implemented"); [INFO] [stdout] 459 + } [INFO] [stdout] 460 + } [INFO] [stdout] 461 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/builtin/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod builtin; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/help/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod help; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/lexer/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod lexer; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/builtin/builtin.rs:70:7 [INFO] [stdout] | [INFO] [stdout] 70 | / if path.is_file() { [INFO] [stdout] 71 | | if path.to_str().unwrap().contains(&file_name.clone()) { [INFO] [stdout] 72 | | let mut borrowed = seen_cell.borrow_mut(); [INFO] [stdout] 73 | | let mut borrowed_is_found = is_found_cell.borrow_mut(); [INFO] [stdout] ... | [INFO] [stdout] 83 | | } [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] 70 ~ if path.is_file() [INFO] [stdout] 71 ~ && path.to_str().unwrap().contains(&file_name.clone()) { [INFO] [stdout] 72 | let mut borrowed = seen_cell.borrow_mut(); [INFO] [stdout] ... [INFO] [stdout] 81 | }); [INFO] [stdout] 82 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/builtin/builtin.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | if !is_found_cell.borrow().clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*is_found_cell.borrow()` [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 boolean expression can be simplified [INFO] [stdout] --> src/builtin/io.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | assert!(!(args.len() != 1), "get_input: wrong number of arguments"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `(args.len() == 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/builtin/io.rs:31:3 [INFO] [stdout] | [INFO] [stdout] 31 | / return match _type { [INFO] [stdout] 32 | | "number" => object::object::Object::Integer(input.trim().parse::().unwrap()), [INFO] [stdout] 33 | | "boolean" | "bool" => { [INFO] [stdout] 34 | | object::object::Object::Boolean(tools::tools::str_to_bool(input.trim().to_string())) [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | _ => object::object::Object::String(input.trim().to_string()), [INFO] [stdout] 37 | | }; [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] 31 ~ match _type { [INFO] [stdout] 32 + "number" => object::object::Object::Integer(input.trim().parse::().unwrap()), [INFO] [stdout] 33 + "boolean" | "bool" => { [INFO] [stdout] 34 + object::object::Object::Boolean(tools::tools::str_to_bool(input.trim().to_string())) [INFO] [stdout] 35 + } [INFO] [stdout] 36 + _ => object::object::Object::String(input.trim().to_string()), [INFO] [stdout] 37 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/lexer/lexer.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ('a'..='z').contains(&c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - ('a'..='z').contains(&c) [INFO] [stdout] 13 + c.is_ascii_lowercase() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/lexer/lexer.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | || ('A'..='Z').contains(&c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 14 - || ('A'..='Z').contains(&c) [INFO] [stdout] 14 + || c.is_ascii_uppercase() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/enve/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod enve; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/eval/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod eval; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/object/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod object; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/eval/eval.rs:283:9 [INFO] [stdout] | [INFO] [stdout] 283 | let obj_array: Vec; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 284 | / obj_array = elements [INFO] [stdout] 285 | | .iter() [INFO] [stdout] 286 | | .map(|element| self.expression_evaluator(element.clone())) [INFO] [stdout] 287 | | .collect(); [INFO] [stdout] | |______________________^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `obj_array` here [INFO] [stdout] | [INFO] [stdout] 283 ~ [INFO] [stdout] 284 ~ let obj_array: Vec = elements [INFO] [stdout] 285 + .iter() [INFO] [stdout] 286 + .map(|element| self.expression_evaluator(element.clone())) [INFO] [stdout] 287 ~ .collect(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/parser/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod parser; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/eval/eval.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | / return match expression { [INFO] [stdout] 339 | | ast::ast::Expression::Ident(identifier) => match self.get_env(identifier.as_str()) { [INFO] [stdout] 340 | | Some(value) => value, [INFO] [stdout] 341 | | None => { [INFO] [stdout] ... | [INFO] [stdout] 461 | | }; [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] 338 ~ match expression { [INFO] [stdout] 339 + ast::ast::Expression::Ident(identifier) => match self.get_env(identifier.as_str()) { [INFO] [stdout] 340 + Some(value) => value, [INFO] [stdout] 341 + None => { [INFO] [stdout] 342 + panic!("identifier not found: {}", identifier) [INFO] [stdout] 343 + } [INFO] [stdout] 344 + }, [INFO] [stdout] 345 + ast::ast::Expression::Integer(integer) => object::object::Object::Integer(integer), [INFO] [stdout] 346 + ast::ast::Expression::Double(double) => object::object::Object::Double(double), [INFO] [stdout] 347 + ast::ast::Expression::Bool(boolean) => object::object::Object::Boolean(boolean), [INFO] [stdout] 348 + ast::ast::Expression::String(string) => object::object::Object::String(string), [INFO] [stdout] 349 + ast::ast::Expression::Array { elements } => self.array_evaluator(elements), [INFO] [stdout] 350 + ast::ast::Expression::ArrayIndex { left_ident, index } => { [INFO] [stdout] 351 + let array_obj: object::object::Object; [INFO] [stdout] 352 + let evaled_index: object::object::Object = self.expression_evaluator(*index); [INFO] [stdout] 353 + let wrapped_num: i32; [INFO] [stdout] 354 + [INFO] [stdout] 355 + // wrapping the index [INFO] [stdout] 356 + if let object::object::Object::Integer(w_index) = evaled_index { [INFO] [stdout] 357 + wrapped_num = w_index; [INFO] [stdout] 358 + } else { [INFO] [stdout] 359 + panic!("ArrayIndex: index should be integer"); [INFO] [stdout] 360 + } [INFO] [stdout] 361 + [INFO] [stdout] 362 + // wrapping the array [INFO] [stdout] 363 + if let ast::ast::Expression::Ident(ident) = *left_ident { [INFO] [stdout] 364 + match self.get_env(ident.as_str()) { [INFO] [stdout] 365 + Some(obj) => array_obj = obj, [INFO] [stdout] 366 + None => { [INFO] [stdout] 367 + panic!("no ident") [INFO] [stdout] 368 + } [INFO] [stdout] 369 + } [INFO] [stdout] 370 + } else { [INFO] [stdout] 371 + panic!("ArrayIndex: given ident dead, be sure you initialized correctly"); [INFO] [stdout] 372 + } [INFO] [stdout] 373 + [INFO] [stdout] 374 + // accecing the array [INFO] [stdout] 375 + if let object::object::Object::Array(vec_array) = array_obj { [INFO] [stdout] 376 + return vec_array[wrapped_num as usize].clone(); [INFO] [stdout] 377 + } else { [INFO] [stdout] 378 + panic!("ArrayIndex: given ident is not array type, maybe"); [INFO] [stdout] 379 + } [INFO] [stdout] 380 + } [INFO] [stdout] 381 + ast::ast::Expression::Prefix { op, right } => { [INFO] [stdout] 382 + let right = self.expression_evaluator(*right); [INFO] [stdout] 383 + self.prefix_evaluator(op, right) [INFO] [stdout] 384 + } [INFO] [stdout] 385 + ast::ast::Expression::Infix { op, left, right } => { [INFO] [stdout] 386 + let left = self.expression_evaluator(*left); [INFO] [stdout] 387 + let right = self.expression_evaluator(*right); [INFO] [stdout] 388 + [INFO] [stdout] 389 + return self.infix_evaluator(op, left, right); [INFO] [stdout] 390 + } [INFO] [stdout] 391 + ast::ast::Expression::If { [INFO] [stdout] 392 + condition, [INFO] [stdout] 393 + consequence, [INFO] [stdout] 394 + alternative, [INFO] [stdout] 395 + .. [INFO] [stdout] 396 + } => { [INFO] [stdout] 397 + if self.expression_evaluator(*condition).bool_check() { [INFO] [stdout] 398 + self.statement_evaluator(*consequence) [INFO] [stdout] 399 + } else { [INFO] [stdout] 400 + match alternative { [INFO] [stdout] 401 + Some(alt) => self.statement_evaluator(*alt), [INFO] [stdout] 402 + None => object::object::Object::Null, [INFO] [stdout] 403 + } [INFO] [stdout] 404 + } [INFO] [stdout] 405 + } [INFO] [stdout] 406 + ast::ast::Expression::Closure { parameters, body } => object::object::Object::Closure { [INFO] [stdout] 407 + parameters, [INFO] [stdout] 408 + body: *body, [INFO] [stdout] 409 + env: enve::enve::Environment::ve(*self.env.clone().into_inner()), [INFO] [stdout] 410 + }, [INFO] [stdout] 411 + ast::ast::Expression::Call { closure, arguments } => { [INFO] [stdout] 412 + let mut args = Vec::new(); [INFO] [stdout] 413 + for expr in arguments.iter() { [INFO] [stdout] 414 + args.push(self.expression_evaluator(expr.clone())); [INFO] [stdout] 415 + } [INFO] [stdout] 416 + [INFO] [stdout] 417 + // non reserved by parser [INFO] [stdout] 418 + if let ast::ast::Expression::Ident(func) = *closure.clone() { [INFO] [stdout] 419 + match func.as_str() { [INFO] [stdout] 420 ~ "🎤" => return builtin::io::bark(args, false), [INFO] [stdout] 421 ~ "🎤🎶" => return builtin::io::bark(args, true), [INFO] [stdout] 422 ~ "😪" => return builtin::builtin::sleep(args), [INFO] [stdout] 423 ~ "🌸" => return builtin::builtin::looper(args, self), [INFO] [stdout] 424 ~ "🌹" => return builtin::io::random_emojis(args), [INFO] [stdout] 425 ~ "👀" => return builtin::io::scanf(args), [INFO] [stdout] 426 ~ "🐽🐽🐽" => return builtin::builtin::import(args, self), [INFO] [stdout] 427 ~ "🐽" => return builtin::builtin::quick_import(args, self), [INFO] [stdout] 428 ~ "📏" => return builtin::array::len(args), [INFO] [stdout] 429 ~ "🥌" => return builtin::array::push(args), [INFO] [stdout] 430 ~ "🌛" => return builtin::array::rest(args), [INFO] [stdout] 431 ~ "❌" => return builtin::errors::panipani(args), [INFO] [stdout] 432 ~ "🥚" => return builtin::builtin::clear(), [INFO] [stdout] 433 ~ "🗿" => return builtin::array::assign(args), [INFO] [stdout] 434 ~ "🍄🍄" => return object::object::Object::Null, [INFO] [stdout] 435 + _ => {} [INFO] [stdout] 436 + } [INFO] [stdout] 437 + } [INFO] [stdout] 438 + [INFO] [stdout] 439 + let closure = self.expression_evaluator(*closure); [INFO] [stdout] 440 + [INFO] [stdout] 441 + if let object::object::Object::Closure { [INFO] [stdout] 442 + parameters, [INFO] [stdout] 443 + body, [INFO] [stdout] 444 + env, [INFO] [stdout] 445 + } = closure [INFO] [stdout] 446 + { [INFO] [stdout] 447 + let mut env = Evaluator::from(env); [INFO] [stdout] 448 + for (ident, arg) in parameters.iter().zip(args.iter()) { [INFO] [stdout] 449 + if let ast::ast::Expression::Ident(ident) = ident { [INFO] [stdout] 450 + env.set_env(ident.to_owned(), arg.clone()); [INFO] [stdout] 451 + } [INFO] [stdout] 452 + } [INFO] [stdout] 453 + match env.statement_evaluator(body) { [INFO] [stdout] 454 + object::object::Object::ReturnValue(obj) => *obj, [INFO] [stdout] 455 + obj => obj, [INFO] [stdout] 456 + } [INFO] [stdout] 457 + } else { [INFO] [stdout] 458 + panic!("not implemented"); [INFO] [stdout] 459 + } [INFO] [stdout] 460 + } [INFO] [stdout] 461 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/help/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod help; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/lexer/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod lexer; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/run_program/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod run_program; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/run_program/run_program.rs:11:3 [INFO] [stdout] | [INFO] [stdout] 11 | _lines = _lines + "main() ;"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `_lines += "main() ;"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/run_program/run_program.rs:22:3 [INFO] [stdout] | [INFO] [stdout] 22 | _lines = _lines + "main() ;"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `_lines += "main() ;"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/run_program/run_program.rs:49:3 [INFO] [stdout] | [INFO] [stdout] 49 | _lines = _lines + "main() ;"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `_lines += "main() ;"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/token/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod token; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/tools/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod tools; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/tools/tools.rs:22:29 [INFO] [stdout] | [INFO] [stdout] 22 | Err(_e) => return Err(io::Error::new(io::ErrorKind::Other, "Could not read file")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 22 - Err(_e) => return Err(io::Error::new(io::ErrorKind::Other, "Could not read file")), [INFO] [stdout] 22 + Err(_e) => return Err(io::Error::other("Could not read file")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tools/tools.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return Some(_nylang_path); [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] 37 - return Some(_nylang_path); [INFO] [stdout] 37 + Some(_nylang_path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tools/tools.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | 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] 39 - return None; [INFO] [stdout] 39 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | println!("{}", "-> started auto install!"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 45 - println!("{}", "-> started auto install!"); [INFO] [stdout] 45 + println!("-> started auto install!"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | println!("{}", "-> fetching nylang lib into ~/.nylang"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 46 - println!("{}", "-> fetching nylang lib into ~/.nylang"); [INFO] [stdout] 46 + println!("-> fetching nylang lib into ~/.nylang"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:52:3 [INFO] [stdout] | [INFO] [stdout] 52 | / match Repository::clone(url, _cache_path) { [INFO] [stdout] 53 | | Err(e) => return Err(format!("failed to fetch lib: {:?}", e).to_string()), [INFO] [stdout] 54 | | _ => (), [INFO] [stdout] 55 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(e) = Repository::clone(url, _cache_path) { return Err(format!("failed to fetch lib: {:?}", e).to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 56 | println!("{}", "-> removing unnecessary files"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 - println!("{}", "-> removing unnecessary files"); [INFO] [stdout] 56 + println!("-> removing unnecessary files"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | / match std::fs::remove_file(_nylang_path.join("README.md")) { [INFO] [stdout] 64 | | Err(_e) => return Err("Could not remove README.md".to_string()), [INFO] [stdout] 65 | | _ => (), [INFO] [stdout] 66 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("README.md")) { return Err("Could not remove README.md".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | println!("{}", "-> removed README.md"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 67 - println!("{}", "-> removed README.md"); [INFO] [stdout] 67 + println!("-> removed README.md"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:69:3 [INFO] [stdout] | [INFO] [stdout] 69 | / match std::fs::remove_file(_nylang_path.join("Dockerfile")) { [INFO] [stdout] 70 | | Err(_e) => return Err("Could not remove Dockerfile".to_string()), [INFO] [stdout] 71 | | _ => (), [INFO] [stdout] 72 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("Dockerfile")) { return Err("Could not remove Dockerfile".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:73:18 [INFO] [stdout] | [INFO] [stdout] 73 | println!("{}", "-> removed Dockerfile"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - println!("{}", "-> removed Dockerfile"); [INFO] [stdout] 73 + println!("-> removed Dockerfile"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:75:3 [INFO] [stdout] | [INFO] [stdout] 75 | / match std::fs::remove_file(_nylang_path.join("Cargo.toml")) { [INFO] [stdout] 76 | | Err(_e) => return Err("Could not remove Cargo.toml".to_string()), [INFO] [stdout] 77 | | _ => (), [INFO] [stdout] 78 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("Cargo.toml")) { return Err("Could not remove Cargo.toml".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:79:18 [INFO] [stdout] | [INFO] [stdout] 79 | println!("{}", "-> removed Cargo.toml"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 79 - println!("{}", "-> removed Cargo.toml"); [INFO] [stdout] 79 + println!("-> removed Cargo.toml"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:81:3 [INFO] [stdout] | [INFO] [stdout] 81 | / match std::fs::remove_file(_nylang_path.join("Cargo.lock")) { [INFO] [stdout] 82 | | Err(_e) => return Err("Could not remove Cargo.lock".to_string()), [INFO] [stdout] 83 | | _ => (), [INFO] [stdout] 84 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("Cargo.lock")) { return Err("Could not remove Cargo.lock".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:85:18 [INFO] [stdout] | [INFO] [stdout] 85 | println!("{}", "-> removed Cargo.lock"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 85 - println!("{}", "-> removed Cargo.lock"); [INFO] [stdout] 85 + println!("-> removed Cargo.lock"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:87:3 [INFO] [stdout] | [INFO] [stdout] 87 | / match std::fs::remove_file(_nylang_path.join("docker-compose.yml")) { [INFO] [stdout] 88 | | Err(_e) => return Err("Could not remove docker-compose.yml".to_string()), [INFO] [stdout] 89 | | _ => (), [INFO] [stdout] 90 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("docker-compose.yml")) { return Err("Could not remove docker-compose.yml".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:91:18 [INFO] [stdout] | [INFO] [stdout] 91 | println!("{}", "-> removed docker-compose.yml"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 91 - println!("{}", "-> removed docker-compose.yml"); [INFO] [stdout] 91 + println!("-> removed docker-compose.yml"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:93:3 [INFO] [stdout] | [INFO] [stdout] 93 | / match std::fs::remove_dir_all(_nylang_path.join("_img")) { [INFO] [stdout] 94 | | Err(_e) => return Err("Could not remove _img dir".to_string()), [INFO] [stdout] 95 | | _ => (), [INFO] [stdout] 96 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_dir_all(_nylang_path.join("_img")) { return Err("Could not remove _img dir".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/lexer/lexer.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ('a'..='z').contains(&c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] = note: `#[warn(clippy::manual_is_ascii_check)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 13 - ('a'..='z').contains(&c) [INFO] [stdout] 13 + c.is_ascii_lowercase() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 97 | println!("{}", "-> removed _img dir"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 97 - println!("{}", "-> removed _img dir"); [INFO] [stdout] 97 + println!("-> removed _img dir"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual check for common ascii range [INFO] [stdout] --> src/lexer/lexer.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | || ('A'..='Z').contains(&c) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_ascii_check [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 14 - || ('A'..='Z').contains(&c) [INFO] [stdout] 14 + || c.is_ascii_uppercase() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:99:3 [INFO] [stdout] | [INFO] [stdout] 99 | / match std::fs::remove_dir_all(_nylang_path.join("src")) { [INFO] [stdout] 100 | | Err(_e) => return Err("Could not remove src dir".to_string()), [INFO] [stdout] 101 | | _ => (), [INFO] [stdout] 102 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_dir_all(_nylang_path.join("src")) { return Err("Could not remove src dir".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 103 | println!("{}", "-> removed src dir"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 103 - println!("{}", "-> removed src dir"); [INFO] [stdout] 103 + println!("-> removed src dir"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/object/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod object; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/builtin/builtin.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 68 | / visit_dirs(Path::new(&cur_dir), &|entry| { [INFO] [stdout] 69 | | let path = entry.path(); [INFO] [stdout] 70 | | if path.is_file() { [INFO] [stdout] 71 | | if path.to_str().unwrap().contains(&file_name.clone()) { [INFO] [stdout] ... | [INFO] [stdout] 84 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 68 | let _ = visit_dirs(Path::new(&cur_dir), &|entry| { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/parser/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod parser; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/run_program/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod run_program; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/run_program/run_program.rs:11:3 [INFO] [stdout] | [INFO] [stdout] 11 | _lines = _lines + "main() ;"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `_lines += "main() ;"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/run_program/run_program.rs:22:3 [INFO] [stdout] | [INFO] [stdout] 22 | _lines = _lines + "main() ;"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `_lines += "main() ;"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/run_program/run_program.rs:49:3 [INFO] [stdout] | [INFO] [stdout] 49 | _lines = _lines + "main() ;"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `_lines += "main() ;"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/token/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod token; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/tools/mod.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | pub mod tools; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/tools/tools.rs:22:29 [INFO] [stdout] | [INFO] [stdout] 22 | Err(_e) => return Err(io::Error::new(io::ErrorKind::Other, "Could not read file")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 22 - Err(_e) => return Err(io::Error::new(io::ErrorKind::Other, "Could not read file")), [INFO] [stdout] 22 + Err(_e) => return Err(io::Error::other("Could not read file")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tools/tools.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return Some(_nylang_path); [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] 37 - return Some(_nylang_path); [INFO] [stdout] 37 + Some(_nylang_path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tools/tools.rs:39:5 [INFO] [stdout] | [INFO] [stdout] 39 | 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] 39 - return None; [INFO] [stdout] 39 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | println!("{}", "-> started auto install!"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 45 - println!("{}", "-> started auto install!"); [INFO] [stdout] 45 + println!("-> started auto install!"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | println!("{}", "-> fetching nylang lib into ~/.nylang"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 46 - println!("{}", "-> fetching nylang lib into ~/.nylang"); [INFO] [stdout] 46 + println!("-> fetching nylang lib into ~/.nylang"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:52:3 [INFO] [stdout] | [INFO] [stdout] 52 | / match Repository::clone(url, _cache_path) { [INFO] [stdout] 53 | | Err(e) => return Err(format!("failed to fetch lib: {:?}", e).to_string()), [INFO] [stdout] 54 | | _ => (), [INFO] [stdout] 55 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(e) = Repository::clone(url, _cache_path) { return Err(format!("failed to fetch lib: {:?}", e).to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:56:18 [INFO] [stdout] | [INFO] [stdout] 56 | println!("{}", "-> removing unnecessary files"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 56 - println!("{}", "-> removing unnecessary files"); [INFO] [stdout] 56 + println!("-> removing unnecessary files"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:63:3 [INFO] [stdout] | [INFO] [stdout] 63 | / match std::fs::remove_file(_nylang_path.join("README.md")) { [INFO] [stdout] 64 | | Err(_e) => return Err("Could not remove README.md".to_string()), [INFO] [stdout] 65 | | _ => (), [INFO] [stdout] 66 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("README.md")) { return Err("Could not remove README.md".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:67:18 [INFO] [stdout] | [INFO] [stdout] 67 | println!("{}", "-> removed README.md"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 67 - println!("{}", "-> removed README.md"); [INFO] [stdout] 67 + println!("-> removed README.md"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:69:3 [INFO] [stdout] | [INFO] [stdout] 69 | / match std::fs::remove_file(_nylang_path.join("Dockerfile")) { [INFO] [stdout] 70 | | Err(_e) => return Err("Could not remove Dockerfile".to_string()), [INFO] [stdout] 71 | | _ => (), [INFO] [stdout] 72 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("Dockerfile")) { return Err("Could not remove Dockerfile".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:73:18 [INFO] [stdout] | [INFO] [stdout] 73 | println!("{}", "-> removed Dockerfile"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 73 - println!("{}", "-> removed Dockerfile"); [INFO] [stdout] 73 + println!("-> removed Dockerfile"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:75:3 [INFO] [stdout] | [INFO] [stdout] 75 | / match std::fs::remove_file(_nylang_path.join("Cargo.toml")) { [INFO] [stdout] 76 | | Err(_e) => return Err("Could not remove Cargo.toml".to_string()), [INFO] [stdout] 77 | | _ => (), [INFO] [stdout] 78 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("Cargo.toml")) { return Err("Could not remove Cargo.toml".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:79:18 [INFO] [stdout] | [INFO] [stdout] 79 | println!("{}", "-> removed Cargo.toml"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 79 - println!("{}", "-> removed Cargo.toml"); [INFO] [stdout] 79 + println!("-> removed Cargo.toml"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:81:3 [INFO] [stdout] | [INFO] [stdout] 81 | / match std::fs::remove_file(_nylang_path.join("Cargo.lock")) { [INFO] [stdout] 82 | | Err(_e) => return Err("Could not remove Cargo.lock".to_string()), [INFO] [stdout] 83 | | _ => (), [INFO] [stdout] 84 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("Cargo.lock")) { return Err("Could not remove Cargo.lock".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:85:18 [INFO] [stdout] | [INFO] [stdout] 85 | println!("{}", "-> removed Cargo.lock"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 85 - println!("{}", "-> removed Cargo.lock"); [INFO] [stdout] 85 + println!("-> removed Cargo.lock"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:87:3 [INFO] [stdout] | [INFO] [stdout] 87 | / match std::fs::remove_file(_nylang_path.join("docker-compose.yml")) { [INFO] [stdout] 88 | | Err(_e) => return Err("Could not remove docker-compose.yml".to_string()), [INFO] [stdout] 89 | | _ => (), [INFO] [stdout] 90 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_file(_nylang_path.join("docker-compose.yml")) { return Err("Could not remove docker-compose.yml".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:91:18 [INFO] [stdout] | [INFO] [stdout] 91 | println!("{}", "-> removed docker-compose.yml"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 91 - println!("{}", "-> removed docker-compose.yml"); [INFO] [stdout] 91 + println!("-> removed docker-compose.yml"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:93:3 [INFO] [stdout] | [INFO] [stdout] 93 | / match std::fs::remove_dir_all(_nylang_path.join("_img")) { [INFO] [stdout] 94 | | Err(_e) => return Err("Could not remove _img dir".to_string()), [INFO] [stdout] 95 | | _ => (), [INFO] [stdout] 96 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_dir_all(_nylang_path.join("_img")) { return Err("Could not remove _img dir".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 97 | println!("{}", "-> removed _img dir"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 97 - println!("{}", "-> removed _img dir"); [INFO] [stdout] 97 + println!("-> removed _img dir"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tools/tools.rs:99:3 [INFO] [stdout] | [INFO] [stdout] 99 | / match std::fs::remove_dir_all(_nylang_path.join("src")) { [INFO] [stdout] 100 | | Err(_e) => return Err("Could not remove src dir".to_string()), [INFO] [stdout] 101 | | _ => (), [INFO] [stdout] 102 | | }; [INFO] [stdout] | |___^ help: try: `if let Err(_e) = std::fs::remove_dir_all(_nylang_path.join("src")) { return Err("Could not remove src dir".to_string()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/tools/tools.rs:103:18 [INFO] [stdout] | [INFO] [stdout] 103 | println!("{}", "-> removed src dir"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 103 - println!("{}", "-> removed src dir"); [INFO] [stdout] 103 + println!("-> removed src dir"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/builtin/builtin.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 68 | / visit_dirs(Path::new(&cur_dir), &|entry| { [INFO] [stdout] 69 | | let path = entry.path(); [INFO] [stdout] 70 | | if path.is_file() { [INFO] [stdout] 71 | | if path.to_str().unwrap().contains(&file_name.clone()) { [INFO] [stdout] ... | [INFO] [stdout] 84 | | }); [INFO] [stdout] | |______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 68 | let _ = visit_dirs(Path::new(&cur_dir), &|entry| { [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.95s [INFO] running `Command { std: "docker" "inspect" "fb368fef66aa6351a712810737d7c788e866b14ff57ec2332ac1601e73edc4cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fb368fef66aa6351a712810737d7c788e866b14ff57ec2332ac1601e73edc4cd", kill_on_drop: false }` [INFO] [stdout] fb368fef66aa6351a712810737d7c788e866b14ff57ec2332ac1601e73edc4cd