[INFO] cloning repository https://github.com/samuwen/v8 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/samuwen/v8" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsamuwen%2Fv8", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsamuwen%2Fv8'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3e5f79e8f455ad571d84f34d055b1abb03590f95 [INFO] linting samuwen/v8 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsamuwen%2Fv8" "/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/samuwen/v8 [INFO] finished tweaking git repo https://github.com/samuwen/v8 [INFO] tweaked toml for git repo https://github.com/samuwen/v8 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/samuwen/v8 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/samuwen/v8 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 fd-lock v4.0.4 [INFO] [stderr] Downloaded rustyline v17.0.2 [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] 52cc57d42af22ef694aa1373b877f31b0c33e4f216c86960f1f5210539ccc413 [INFO] running `Command { std: "docker" "start" "-a" "52cc57d42af22ef694aa1373b877f31b0c33e4f216c86960f1f5210539ccc413", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "52cc57d42af22ef694aa1373b877f31b0c33e4f216c86960f1f5210539ccc413", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "52cc57d42af22ef694aa1373b877f31b0c33e4f216c86960f1f5210539ccc413", kill_on_drop: false }` [INFO] [stdout] 52cc57d42af22ef694aa1373b877f31b0c33e4f216c86960f1f5210539ccc413 [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] 2a30a7536ae87dced5830aaaa2272e1c1c52484b54bbcf632870b0926b18ba20 [INFO] running `Command { std: "docker" "start" "-a" "2a30a7536ae87dced5830aaaa2272e1c1c52484b54bbcf632870b0926b18ba20", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Checking nibble_vec v0.1.0 [INFO] [stderr] Checking endian-type v0.1.2 [INFO] [stderr] Checking hashbrown v0.15.5 [INFO] [stderr] Checking jiff v0.2.18 [INFO] [stderr] Checking unicode-width v0.2.2 [INFO] [stderr] Checking fd-lock v4.0.4 [INFO] [stderr] Checking env_filter v0.1.4 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking radix_trie v0.2.1 [INFO] [stderr] Checking string-interner v0.19.0 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Checking rustyline v17.0.2 [INFO] [stderr] Checking env_logger v0.11.8 [INFO] [stderr] Checking clap v4.5.54 [INFO] [stderr] Checking v8 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:1:30 [INFO] [stdout] | [INFO] [stdout] 1 | pub const GLOBAL_THIS_NAME: &'static str = "globalThis"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:2:28 [INFO] [stdout] | [INFO] [stdout] 2 | pub const IS_FINITE_NAME: &'static str = "isFinite"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:3:27 [INFO] [stdout] | [INFO] [stdout] 3 | pub const INFINITY_NAME: &'static str = "Infinity"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:4:22 [INFO] [stdout] | [INFO] [stdout] 4 | pub const NAN_NAME: &'static str = "NaN"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:5:28 [INFO] [stdout] | [INFO] [stdout] 5 | pub const UNDEFINED_NAME: &'static str = "undefined"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:6:26 [INFO] [stdout] | [INFO] [stdout] 6 | pub const CONSOLE_NAME: &'static str = "console"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:7:22 [INFO] [stdout] | [INFO] [stdout] 7 | pub const LOG_NAME: &'static str = "log"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | pub const ERROR_NAME: &'static str = "error"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: almost complete ascii range [INFO] [stdout] --> src/lexer.rs:61:47 [INFO] [stdout] | [INFO] [stdout] 61 | ... 'a'..='z' | '_' | '0'..'9' => { [INFO] [stdout] | ^^^--^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use an inclusive range: `..=` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#almost_complete_range [INFO] [stdout] = note: `#[warn(clippy::almost_complete_range)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:1:30 [INFO] [stdout] | [INFO] [stdout] 1 | pub const GLOBAL_THIS_NAME: &'static str = "globalThis"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:2:28 [INFO] [stdout] | [INFO] [stdout] 2 | pub const IS_FINITE_NAME: &'static str = "isFinite"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:3:27 [INFO] [stdout] | [INFO] [stdout] 3 | pub const INFINITY_NAME: &'static str = "Infinity"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:4:22 [INFO] [stdout] | [INFO] [stdout] 4 | pub const NAN_NAME: &'static str = "NaN"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:5:28 [INFO] [stdout] | [INFO] [stdout] 5 | pub const UNDEFINED_NAME: &'static str = "undefined"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:6:26 [INFO] [stdout] | [INFO] [stdout] 6 | pub const CONSOLE_NAME: &'static str = "console"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:7:22 [INFO] [stdout] | [INFO] [stdout] 7 | pub const LOG_NAME: &'static str = "log"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/constants.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | pub const ERROR_NAME: &'static str = "error"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: almost complete ascii range [INFO] [stdout] --> src/lexer.rs:61:47 [INFO] [stdout] | [INFO] [stdout] 61 | ... 'a'..='z' | '_' | '0'..'9' => { [INFO] [stdout] | ^^^--^^^ [INFO] [stdout] | | [INFO] [stdout] | help: use an inclusive range: `..=` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#almost_complete_range [INFO] [stdout] = note: `#[warn(clippy::almost_complete_range)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/values/objects/mod.rs:31:30 [INFO] [stdout] | [INFO] [stdout] 31 | pub const TO_PRIMITIVE_SYM: &'static str = "@@toPrimitive"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/values/objects/mod.rs:31:30 [INFO] [stdout] | [INFO] [stdout] 31 | pub const TO_PRIMITIVE_SYM: &'static str = "@@toPrimitive"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/errors.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | / impl Default for ErrorKind { [INFO] [stdout] 12 | | fn default() -> Self { [INFO] [stdout] 13 | | Self::Normal [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Default)] [INFO] [stdout] 5 | pub enum ErrorKind { [INFO] [stdout] 6 ~ #[default] [INFO] [stdout] 7 ~ Normal, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/expr.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | / PrintExpr { [INFO] [stdout] 73 | | kind: LogKind, [INFO] [stdout] 74 | | }, [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/expr.rs:276:29 [INFO] [stdout] | [INFO] [stdout] 276 | ... return Ok(rhs); [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] 276 - return Ok(rhs); [INFO] [stdout] 276 + Ok(rhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/expr.rs:278:29 [INFO] [stdout] | [INFO] [stdout] 278 | / ... return Err(JSError::new( [INFO] [stdout] 279 | | ... "Syntax error: Cannot assign to constant variable", [INFO] [stdout] 280 | | ... )); [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] 278 ~ Err(JSError::new( [INFO] [stdout] 279 + "Syntax error: Cannot assign to constant variable", [INFO] [stdout] 280 ~ )) [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/expr.rs:241:17 [INFO] [stdout] | [INFO] [stdout] 241 | / match &**identifier { [INFO] [stdout] 242 | | Expr::ObjectCall { [INFO] [stdout] 243 | | kind: _, [INFO] [stdout] 244 | | object, [INFO] [stdout] ... | [INFO] [stdout] 264 | | _ => (), [INFO] [stdout] 265 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 241 ~ if let Expr::ObjectCall { [INFO] [stdout] 242 + kind: _, [INFO] [stdout] 243 + object, [INFO] [stdout] 244 + accessor, [INFO] [stdout] 245 + } = &**identifier { [INFO] [stdout] 246 + let object = object.evaluate(interpreter)?; [INFO] [stdout] 247 + let accessor = accessor.evaluate(interpreter)?; [INFO] [stdout] 248 + let key = accessor.to_string(interpreter)?; [INFO] [stdout] 249 + let property_res = get_object_property_mut(interpreter, &object, key); [INFO] [stdout] 250 + match property_res { [INFO] [stdout] 251 + Ok(prop) => { [INFO] [stdout] 252 + prop.set_value(rhs.clone()); [INFO] [stdout] 253 + return Ok(rhs); [INFO] [stdout] 254 + } [INFO] [stdout] 255 + Err(_) => { [INFO] [stdout] 256 + // new property [INFO] [stdout] 257 + let object = object.to_object_mut(interpreter)?; [INFO] [stdout] 258 + object.add_property(key, rhs.clone()); [INFO] [stdout] 259 + return Ok(rhs); [INFO] [stdout] 260 + } [INFO] [stdout] 261 + } [INFO] [stdout] 262 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/expr.rs:371:9 [INFO] [stdout] | [INFO] [stdout] 371 | &message [INFO] [stdout] | ^^^^^^^^ help: change this to: `message` [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 `impl` can be derived [INFO] [stdout] --> src/errors.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | / impl Default for ErrorKind { [INFO] [stdout] 12 | | fn default() -> Self { [INFO] [stdout] 13 | | Self::Normal [INFO] [stdout] 14 | | } [INFO] [stdout] 15 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Default)] [INFO] [stdout] 5 | pub enum ErrorKind { [INFO] [stdout] 6 ~ #[default] [INFO] [stdout] 7 ~ Normal, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:86:25 [INFO] [stdout] | [INFO] [stdout] 86 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 87 | | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] 88 | | _ => Err(JSError::new_not_found("Environment", id)), [INFO] [stdout] 89 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:86:18 [INFO] [stdout] | [INFO] [stdout] 86 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 87 | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 98 | | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] 99 | | _ => Err(JSError::new_not_found("Environment", id)), [INFO] [stdout] 100 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 97 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 98 | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:108:25 [INFO] [stdout] | [INFO] [stdout] 108 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 109 | | HeapValue::Value(val) => Ok(val), [INFO] [stdout] 110 | | _ => Err(JSError::new_not_found("Value", id)), [INFO] [stdout] 111 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:108:18 [INFO] [stdout] | [INFO] [stdout] 108 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 109 | HeapValue::Value(val) => Ok(val), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:119:25 [INFO] [stdout] | [INFO] [stdout] 119 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 120 | | HeapValue::Value(val) => Ok(val), [INFO] [stdout] 121 | | _ => Err(JSError::new_not_found("Value", id)), [INFO] [stdout] 122 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:119:18 [INFO] [stdout] | [INFO] [stdout] 119 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 120 | HeapValue::Value(val) => Ok(val), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:130:25 [INFO] [stdout] | [INFO] [stdout] 130 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 131 | | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] 132 | | _ => Err(JSError::new_not_found("Variable", id)), [INFO] [stdout] 133 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:130:18 [INFO] [stdout] | [INFO] [stdout] 130 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 131 | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:141:25 [INFO] [stdout] | [INFO] [stdout] 141 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 142 | | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] 143 | | _ => Err(JSError::new_not_found("Variable", id)), [INFO] [stdout] 144 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:141:18 [INFO] [stdout] | [INFO] [stdout] 141 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 142 | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:152:25 [INFO] [stdout] | [INFO] [stdout] 152 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 153 | | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] 154 | | _ => Err(JSError::new_not_found("Object", id)), [INFO] [stdout] 155 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:152:18 [INFO] [stdout] | [INFO] [stdout] 152 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 153 | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:163:25 [INFO] [stdout] | [INFO] [stdout] 163 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 164 | | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] 165 | | _ => Err(JSError::new_not_found("Object", id)), [INFO] [stdout] 166 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:163:18 [INFO] [stdout] | [INFO] [stdout] 163 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 164 | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant name ends with the enum's name [INFO] [stdout] --> src/expr.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | / PrintExpr { [INFO] [stdout] 73 | | kind: LogKind, [INFO] [stdout] 74 | | }, [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/lexer.rs:22:27 [INFO] [stdout] | [INFO] [stdout] 22 | current_char: first_char.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `first_char` [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 loop could be written as a `while let` loop [INFO] [stdout] --> src/lexer.rs:59:21 [INFO] [stdout] | [INFO] [stdout] 59 | / loop { [INFO] [stdout] 60 | | match self.current_char.to_ascii_lowercase() { [INFO] [stdout] 61 | | 'a'..='z' | '_' | '0'..'9' => { [INFO] [stdout] 62 | | ident.push(self.current_char); [INFO] [stdout] ... | [INFO] [stdout] 67 | | } [INFO] [stdout] | |_____________________^ help: try: `while let 'a'..='z' | '_' | '0'..'9' = self.current_char.to_ascii_lowercase() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/expr.rs:276:29 [INFO] [stdout] | [INFO] [stdout] 276 | ... return Ok(rhs); [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] 276 - return Ok(rhs); [INFO] [stdout] 276 + Ok(rhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/expr.rs:278:29 [INFO] [stdout] | [INFO] [stdout] 278 | / ... return Err(JSError::new( [INFO] [stdout] 279 | | ... "Syntax error: Cannot assign to constant variable", [INFO] [stdout] 280 | | ... )); [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] 278 ~ Err(JSError::new( [INFO] [stdout] 279 + "Syntax error: Cannot assign to constant variable", [INFO] [stdout] 280 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/lexer.rs:210:34 [INFO] [stdout] | [INFO] [stdout] 210 | let peeked = peeked.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*peeked.unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/lexer.rs:241:34 [INFO] [stdout] | [INFO] [stdout] 241 | let peeked = peeked.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*peeked.unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lexer.rs:306:9 [INFO] [stdout] | [INFO] [stdout] 306 | self.errors.len() > 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.errors.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/expr.rs:241:17 [INFO] [stdout] | [INFO] [stdout] 241 | / match &**identifier { [INFO] [stdout] 242 | | Expr::ObjectCall { [INFO] [stdout] 243 | | kind: _, [INFO] [stdout] 244 | | object, [INFO] [stdout] ... | [INFO] [stdout] 264 | | _ => (), [INFO] [stdout] 265 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 241 ~ if let Expr::ObjectCall { [INFO] [stdout] 242 + kind: _, [INFO] [stdout] 243 + object, [INFO] [stdout] 244 + accessor, [INFO] [stdout] 245 + } = &**identifier { [INFO] [stdout] 246 + let object = object.evaluate(interpreter)?; [INFO] [stdout] 247 + let accessor = accessor.evaluate(interpreter)?; [INFO] [stdout] 248 + let key = accessor.to_string(interpreter)?; [INFO] [stdout] 249 + let property_res = get_object_property_mut(interpreter, &object, key); [INFO] [stdout] 250 + match property_res { [INFO] [stdout] 251 + Ok(prop) => { [INFO] [stdout] 252 + prop.set_value(rhs.clone()); [INFO] [stdout] 253 + return Ok(rhs); [INFO] [stdout] 254 + } [INFO] [stdout] 255 + Err(_) => { [INFO] [stdout] 256 + // new property [INFO] [stdout] 257 + let object = object.to_object_mut(interpreter)?; [INFO] [stdout] 258 + object.add_property(key, rhs.clone()); [INFO] [stdout] 259 + return Ok(rhs); [INFO] [stdout] 260 + } [INFO] [stdout] 261 + } [INFO] [stdout] 262 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/lexer.rs:366:17 [INFO] [stdout] | [INFO] [stdout] 366 | / if let Some(c) = maybe_peek { [INFO] [stdout] 367 | | if *c == '\n' { [INFO] [stdout] 368 | | self.report_error(&error_message); [INFO] [stdout] 369 | | break; [INFO] [stdout] 370 | | } [INFO] [stdout] 371 | | } [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] 366 ~ if let Some(c) = maybe_peek [INFO] [stdout] 367 ~ && *c == '\n' { [INFO] [stdout] 368 | self.report_error(&error_message); [INFO] [stdout] 369 | break; [INFO] [stdout] 370 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:106:17 [INFO] [stdout] | [INFO] [stdout] 106 | return Ok(Stmt::new_block(statements)); [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] 106 - return Ok(Stmt::new_block(statements)); [INFO] [stdout] 106 + Ok(Stmt::new_block(statements)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/expr.rs:371:9 [INFO] [stdout] | [INFO] [stdout] 371 | &message [INFO] [stdout] | ^^^^^^^^ help: change this to: `message` [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 `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:86:25 [INFO] [stdout] | [INFO] [stdout] 86 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 87 | | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] 88 | | _ => Err(JSError::new_not_found("Environment", id)), [INFO] [stdout] 89 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:86:18 [INFO] [stdout] | [INFO] [stdout] 86 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 87 | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/parser.rs:324:9 [INFO] [stdout] | [INFO] [stdout] 324 | Ok(self.handle_postfix()?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 324 - Ok(self.handle_postfix()?) [INFO] [stdout] 324 + self.handle_postfix() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:97:25 [INFO] [stdout] | [INFO] [stdout] 97 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 98 | | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] 99 | | _ => Err(JSError::new_not_found("Environment", id)), [INFO] [stdout] 100 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 97 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 98 | HeapValue::Environment(env) => Ok(env), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:108:25 [INFO] [stdout] | [INFO] [stdout] 108 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 109 | | HeapValue::Value(val) => Ok(val), [INFO] [stdout] 110 | | _ => Err(JSError::new_not_found("Value", id)), [INFO] [stdout] 111 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:108:18 [INFO] [stdout] | [INFO] [stdout] 108 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 109 | HeapValue::Value(val) => Ok(val), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:119:25 [INFO] [stdout] | [INFO] [stdout] 119 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 120 | | HeapValue::Value(val) => Ok(val), [INFO] [stdout] 121 | | _ => Err(JSError::new_not_found("Value", id)), [INFO] [stdout] 122 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:119:18 [INFO] [stdout] | [INFO] [stdout] 119 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 120 | HeapValue::Value(val) => Ok(val), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:130:25 [INFO] [stdout] | [INFO] [stdout] 130 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 131 | | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] 132 | | _ => Err(JSError::new_not_found("Variable", id)), [INFO] [stdout] 133 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:130:18 [INFO] [stdout] | [INFO] [stdout] 130 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 131 | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:141:25 [INFO] [stdout] | [INFO] [stdout] 141 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 142 | | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] 143 | | _ => Err(JSError::new_not_found("Variable", id)), [INFO] [stdout] 144 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:141:18 [INFO] [stdout] | [INFO] [stdout] 141 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 142 | HeapValue::Variable(var) => Ok(var), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:152:25 [INFO] [stdout] | [INFO] [stdout] 152 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 153 | | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] 154 | | _ => Err(JSError::new_not_found("Object", id)), [INFO] [stdout] 155 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:152:18 [INFO] [stdout] | [INFO] [stdout] 152 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 153 | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:392:17 [INFO] [stdout] | [INFO] [stdout] 392 | return Ok(Expr::new_literal(JSValue::new_number(&num))); [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] 392 - return Ok(Expr::new_literal(JSValue::new_number(&num))); [INFO] [stdout] 392 + Ok(Expr::new_literal(JSValue::new_number(&num))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:454:21 [INFO] [stdout] | [INFO] [stdout] 454 | return Ok(Expr::new_function_decl(None, args, body)); [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] 454 - return Ok(Expr::new_function_decl(None, args, body)); [INFO] [stdout] 454 + Ok(Expr::new_function_decl(None, args, body)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` can be collapsed into the outer `match` [INFO] [stdout] --> src/heap.rs:163:25 [INFO] [stdout] | [INFO] [stdout] 163 | Some(hv) => match hv { [INFO] [stdout] | _________________________^ [INFO] [stdout] 164 | | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] 165 | | _ => Err(JSError::new_not_found("Object", id)), [INFO] [stdout] 166 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/heap.rs:163:18 [INFO] [stdout] | [INFO] [stdout] 163 | Some(hv) => match hv { [INFO] [stdout] | ^^ replace this binding [INFO] [stdout] 164 | HeapValue::Object(obj) => Ok(obj), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ with this pattern [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:547:17 [INFO] [stdout] | [INFO] [stdout] 547 | return Ok(Expr::new_literal(object)); [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] 547 - return Ok(Expr::new_literal(object)); [INFO] [stdout] 547 + Ok(Expr::new_literal(object)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/lexer.rs:22:27 [INFO] [stdout] | [INFO] [stdout] 22 | current_char: first_char.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `first_char` [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 loop could be written as a `while let` loop [INFO] [stdout] --> src/lexer.rs:59:21 [INFO] [stdout] | [INFO] [stdout] 59 | / loop { [INFO] [stdout] 60 | | match self.current_char.to_ascii_lowercase() { [INFO] [stdout] 61 | | 'a'..='z' | '_' | '0'..'9' => { [INFO] [stdout] 62 | | ident.push(self.current_char); [INFO] [stdout] ... | [INFO] [stdout] 67 | | } [INFO] [stdout] | |_____________________^ help: try: `while let 'a'..='z' | '_' | '0'..'9' = self.current_char.to_ascii_lowercase() { .. }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stdout] = note: `#[warn(clippy::while_let_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/lexer.rs:210:34 [INFO] [stdout] | [INFO] [stdout] 210 | let peeked = peeked.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*peeked.unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/lexer.rs:241:34 [INFO] [stdout] | [INFO] [stdout] 241 | let peeked = peeked.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*peeked.unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lexer.rs:306:9 [INFO] [stdout] | [INFO] [stdout] 306 | self.errors.len() > 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.errors.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/stmt.rs:65:44 [INFO] [stdout] | [INFO] [stdout] 65 | branch_false: branch_false.map(|b| Box::new(b)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Box::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/lexer.rs:366:17 [INFO] [stdout] | [INFO] [stdout] 366 | / if let Some(c) = maybe_peek { [INFO] [stdout] 367 | | if *c == '\n' { [INFO] [stdout] 368 | | self.report_error(&error_message); [INFO] [stdout] 369 | | break; [INFO] [stdout] 370 | | } [INFO] [stdout] 371 | | } [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] 366 ~ if let Some(c) = maybe_peek [INFO] [stdout] 367 ~ && *c == '\n' { [INFO] [stdout] 368 | self.report_error(&error_message); [INFO] [stdout] 369 | break; [INFO] [stdout] 370 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/stmt.rs:99:35 [INFO] [stdout] | [INFO] [stdout] 99 | initializer: init.map(|o| Box::new(o)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Box::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/stmt.rs:209:17 [INFO] [stdout] | [INFO] [stdout] 209 | return Err(JSError::new_return(id)); [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] 209 - return Err(JSError::new_return(id)); [INFO] [stdout] 209 + Err(JSError::new_return(id)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:106:17 [INFO] [stdout] | [INFO] [stdout] 106 | return Ok(Stmt::new_block(statements)); [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] 106 - return Ok(Stmt::new_block(statements)); [INFO] [stdout] 106 + Ok(Stmt::new_block(statements)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/parser.rs:324:9 [INFO] [stdout] | [INFO] [stdout] 324 | Ok(self.handle_postfix()?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 324 - Ok(self.handle_postfix()?) [INFO] [stdout] 324 + self.handle_postfix() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:392:17 [INFO] [stdout] | [INFO] [stdout] 392 | return Ok(Expr::new_literal(JSValue::new_number(&num))); [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] 392 - return Ok(Expr::new_literal(JSValue::new_number(&num))); [INFO] [stdout] 392 + Ok(Expr::new_literal(JSValue::new_number(&num))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:454:21 [INFO] [stdout] | [INFO] [stdout] 454 | return Ok(Expr::new_function_decl(None, args, body)); [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] 454 - return Ok(Expr::new_function_decl(None, args, body)); [INFO] [stdout] 454 + Ok(Expr::new_function_decl(None, args, body)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parser.rs:547:17 [INFO] [stdout] | [INFO] [stdout] 547 | return Ok(Expr::new_literal(object)); [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] 547 - return Ok(Expr::new_literal(object)); [INFO] [stdout] 547 + Ok(Expr::new_literal(object)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | / match self { [INFO] [stdout] 115 | | Kind::Plus [INFO] [stdout] 116 | | | Kind::Minus [INFO] [stdout] 117 | | | Kind::Slash [INFO] [stdout] ... | [INFO] [stdout] 124 | | _ => false, [INFO] [stdout] 125 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 114 ~ matches!(self, Kind::Plus [INFO] [stdout] 115 + | Kind::Minus [INFO] [stdout] 116 + | Kind::Slash [INFO] [stdout] 117 + | Kind::Star [INFO] [stdout] 118 + | Kind::LessThan [INFO] [stdout] 119 + | Kind::LessThanOrEquals [INFO] [stdout] 120 + | Kind::GreaterThan [INFO] [stdout] 121 + | Kind::GreaterThanOrEquals [INFO] [stdout] 122 + | Kind::Percent) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | / match self { [INFO] [stdout] 130 | | Kind::EqualEqual | Kind::EqualEqualEqual | Kind::NotEqual | Kind::NotEqualEqual => true, [INFO] [stdout] 131 | | _ => false, [INFO] [stdout] 132 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 129 - match self { [INFO] [stdout] 130 - Kind::EqualEqual | Kind::EqualEqualEqual | Kind::NotEqual | Kind::NotEqualEqual => true, [INFO] [stdout] 131 - _ => false, [INFO] [stdout] 132 - } [INFO] [stdout] 129 + matches!(self, Kind::EqualEqual | Kind::EqualEqualEqual | Kind::NotEqual | Kind::NotEqualEqual) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:252:9 [INFO] [stdout] | [INFO] [stdout] 252 | / match self.get_kind() { [INFO] [stdout] 253 | | Kind::Minus [INFO] [stdout] 254 | | | Kind::MinusMinus [INFO] [stdout] 255 | | | Kind::Bang [INFO] [stdout] ... | [INFO] [stdout] 260 | | _ => false, [INFO] [stdout] 261 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 252 ~ matches!(self.get_kind(), Kind::Minus [INFO] [stdout] 253 + | Kind::MinusMinus [INFO] [stdout] 254 + | Kind::Bang [INFO] [stdout] 255 + | Kind::Typeof [INFO] [stdout] 256 + | Kind::Plus [INFO] [stdout] 257 + | Kind::PlusPlus [INFO] [stdout] 258 + | Kind::Void) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | / match self.get_kind() { [INFO] [stdout] 266 | | Kind::PlusPlus | Kind::MinusMinus => true, [INFO] [stdout] 267 | | _ => false, [INFO] [stdout] 268 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 265 - match self.get_kind() { [INFO] [stdout] 266 - Kind::PlusPlus | Kind::MinusMinus => true, [INFO] [stdout] 267 - _ => false, [INFO] [stdout] 268 - } [INFO] [stdout] 265 + matches!(self.get_kind(), Kind::PlusPlus | Kind::MinusMinus) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/token.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | map.get(word).map(|w| w.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `map.get(word).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` 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/utils.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | args: &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] 25 - args: &Vec, [INFO] [stdout] 25 + args: &[Expr], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | return fract == 0.0; [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] 21 - return fract == 0.0; [INFO] [stdout] 21 + fract == 0.0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/stmt.rs:65:44 [INFO] [stdout] | [INFO] [stdout] 65 | branch_false: branch_false.map(|b| Box::new(b)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Box::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/stmt.rs:99:35 [INFO] [stdout] | [INFO] [stdout] 99 | initializer: init.map(|o| Box::new(o)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Box::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/stmt.rs:209:17 [INFO] [stdout] | [INFO] [stdout] 209 | return Err(JSError::new_return(id)); [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] 209 - return Err(JSError::new_return(id)); [INFO] [stdout] 209 + Err(JSError::new_return(id)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 262 | return r; [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] 262 - return r; [INFO] [stdout] 262 + r [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:354:5 [INFO] [stdout] | [INFO] [stdout] 354 | return x < y; [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] 354 - return x < y; [INFO] [stdout] 354 + x < y [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:431:5 [INFO] [stdout] | [INFO] [stdout] 431 | return bitwise_op(BitwiseOp::And, x, y, interpreter); [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] 431 - return bitwise_op(BitwiseOp::And, x, y, interpreter); [INFO] [stdout] 431 + bitwise_op(BitwiseOp::And, x, y, interpreter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:435:5 [INFO] [stdout] | [INFO] [stdout] 435 | return bitwise_op(BitwiseOp::Xor, x, y, interpreter); [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] 435 - return bitwise_op(BitwiseOp::Xor, x, y, interpreter); [INFO] [stdout] 435 + bitwise_op(BitwiseOp::Xor, x, y, interpreter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:439:5 [INFO] [stdout] | [INFO] [stdout] 439 | return bitwise_op(BitwiseOp::Or, x, y, interpreter); [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] 439 - return bitwise_op(BitwiseOp::Or, x, y, interpreter); [INFO] [stdout] 439 + bitwise_op(BitwiseOp::Or, x, y, interpreter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/values/objects/array.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | if self.properties.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.properties.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/objects/array.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | return Err(error); [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] 94 - return Err(error); [INFO] [stdout] 94 + Err(error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/values/objects/function.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | format!("Function! idk whats in it") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Function! idk whats in it".to_string()` [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 `format!` [INFO] [stdout] --> src/values/objects/function.rs:93:54 [INFO] [stdout] | [INFO] [stdout] 93 | let is_finite_arg_id = get_or_intern_string(&format!("is_finite_arg")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"is_finite_arg".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/values/objects/function.rs:140:47 [INFO] [stdout] | [INFO] [stdout] 140 | let string = get_string_from_pool(&key).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `key` [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: unneeded `return` statement [INFO] [stdout] --> src/values/objects/ordinary.rs:77:17 [INFO] [stdout] | [INFO] [stdout] 77 | return Err(error); [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] 77 - return Err(error); [INFO] [stdout] 77 + Err(error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | / match self { [INFO] [stdout] 115 | | Kind::Plus [INFO] [stdout] 116 | | | Kind::Minus [INFO] [stdout] 117 | | | Kind::Slash [INFO] [stdout] ... | [INFO] [stdout] 124 | | _ => false, [INFO] [stdout] 125 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 114 ~ matches!(self, Kind::Plus [INFO] [stdout] 115 + | Kind::Minus [INFO] [stdout] 116 + | Kind::Slash [INFO] [stdout] 117 + | Kind::Star [INFO] [stdout] 118 + | Kind::LessThan [INFO] [stdout] 119 + | Kind::LessThanOrEquals [INFO] [stdout] 120 + | Kind::GreaterThan [INFO] [stdout] 121 + | Kind::GreaterThanOrEquals [INFO] [stdout] 122 + | Kind::Percent) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | / match self { [INFO] [stdout] 130 | | Kind::EqualEqual | Kind::EqualEqualEqual | Kind::NotEqual | Kind::NotEqualEqual => true, [INFO] [stdout] 131 | | _ => false, [INFO] [stdout] 132 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 129 - match self { [INFO] [stdout] 130 - Kind::EqualEqual | Kind::EqualEqualEqual | Kind::NotEqual | Kind::NotEqualEqual => true, [INFO] [stdout] 131 - _ => false, [INFO] [stdout] 132 - } [INFO] [stdout] 129 + matches!(self, Kind::EqualEqual | Kind::EqualEqualEqual | Kind::NotEqual | Kind::NotEqualEqual) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/values/objects/ordinary.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | out.push_str("{"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `out.push('{')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/values/objects/ordinary.rs:150:47 [INFO] [stdout] | [INFO] [stdout] 150 | let string = get_string_from_pool(&string_id).unwrap_or("UNKNOWN".to_string()); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `string_id` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/values/objects/ordinary.rs:166:47 [INFO] [stdout] | [INFO] [stdout] 166 | let string = get_string_from_pool(&key).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `key` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:252:9 [INFO] [stdout] | [INFO] [stdout] 252 | / match self.get_kind() { [INFO] [stdout] 253 | | Kind::Minus [INFO] [stdout] 254 | | | Kind::MinusMinus [INFO] [stdout] 255 | | | Kind::Bang [INFO] [stdout] ... | [INFO] [stdout] 260 | | _ => false, [INFO] [stdout] 261 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 252 ~ matches!(self.get_kind(), Kind::Minus [INFO] [stdout] 253 + | Kind::MinusMinus [INFO] [stdout] 254 + | Kind::Bang [INFO] [stdout] 255 + | Kind::Typeof [INFO] [stdout] 256 + | Kind::Plus [INFO] [stdout] 257 + | Kind::PlusPlus [INFO] [stdout] 258 + | Kind::Void) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | / match self.get_kind() { [INFO] [stdout] 266 | | Kind::PlusPlus | Kind::MinusMinus => true, [INFO] [stdout] 267 | | _ => false, [INFO] [stdout] 268 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 265 - match self.get_kind() { [INFO] [stdout] 266 - Kind::PlusPlus | Kind::MinusMinus => true, [INFO] [stdout] 267 - _ => false, [INFO] [stdout] 268 - } [INFO] [stdout] 265 + matches!(self.get_kind(), Kind::PlusPlus | Kind::MinusMinus) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/token.rs:274:5 [INFO] [stdout] | [INFO] [stdout] 274 | map.get(word).map(|w| w.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `map.get(word).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/values/objects/mod.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | / match self { [INFO] [stdout] 137 | | JSObject::Function(_) => true, [INFO] [stdout] 138 | | _ => false, [INFO] [stdout] 139 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 136 - match self { [INFO] [stdout] 137 - JSObject::Function(_) => true, [INFO] [stdout] 138 - _ => false, [INFO] [stdout] 139 - } [INFO] [stdout] 136 + matches!(self, JSObject::Function(_)) [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/utils.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | args: &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] 25 - args: &Vec, [INFO] [stdout] 25 + args: &[Expr], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | return fract == 0.0; [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] 21 - return fract == 0.0; [INFO] [stdout] 21 + fract == 0.0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/objects/mod.rs:353:18 [INFO] [stdout] | [INFO] [stdout] 353 | } => return Ok(value), [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] 353 - } => return Ok(value), [INFO] [stdout] 353 + } => Ok(value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 262 | return r; [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] 262 - return r; [INFO] [stdout] 262 + r [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/values/string.rs:16:27 [INFO] [stdout] | [INFO] [stdout] 16 | fn _code_point_at(string: &String, position: usize) -> u32 { [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] 16 - fn _code_point_at(string: &String, position: usize) -> u32 { [INFO] [stdout] 16 + fn _code_point_at(string: &str, position: usize) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/values/value.rs:33:17 [INFO] [stdout] | [INFO] [stdout] 33 | let value = counter.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/values/value.rs:75:28 [INFO] [stdout] | [INFO] [stdout] 75 | return !(&string == ""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `(&string != "")` [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: comparison to empty slice [INFO] [stdout] --> src/values/value.rs:75:30 [INFO] [stdout] | [INFO] [stdout] 75 | return !(&string == ""); [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `string.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:354:5 [INFO] [stdout] | [INFO] [stdout] 354 | return x < y; [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] 354 - return x < y; [INFO] [stdout] 354 + x < y [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Result::unwrap_or` [INFO] [stdout] --> src/values/value.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | / match number { [INFO] [stdout] 127 | | Ok(n) => n, [INFO] [stdout] 128 | | Err(_) => f64::NAN, [INFO] [stdout] 129 | | } [INFO] [stdout] | |_________^ help: replace with: `number.unwrap_or(f64::NAN)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:431:5 [INFO] [stdout] | [INFO] [stdout] 431 | return bitwise_op(BitwiseOp::And, x, y, interpreter); [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] 431 - return bitwise_op(BitwiseOp::And, x, y, interpreter); [INFO] [stdout] 431 + bitwise_op(BitwiseOp::And, x, y, interpreter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:435:5 [INFO] [stdout] | [INFO] [stdout] 435 | return bitwise_op(BitwiseOp::Xor, x, y, interpreter); [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] 435 - return bitwise_op(BitwiseOp::Xor, x, y, interpreter); [INFO] [stdout] 435 + bitwise_op(BitwiseOp::Xor, x, y, interpreter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/number.rs:439:5 [INFO] [stdout] | [INFO] [stdout] 439 | return bitwise_op(BitwiseOp::Or, x, y, interpreter); [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] 439 - return bitwise_op(BitwiseOp::Or, x, y, interpreter); [INFO] [stdout] 439 + bitwise_op(BitwiseOp::Or, x, y, interpreter) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/values/objects/array.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 56 | if self.properties.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.properties.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/objects/array.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 94 | return Err(error); [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] 94 - return Err(error); [INFO] [stdout] 94 + Err(error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/values/value.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 248 | if floor % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace with: `floor.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `*_mut`) usually take `self` by mutable reference [INFO] [stdout] --> src/values/value.rs:267:9 [INFO] [stdout] | [INFO] [stdout] 267 | &'a self, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/values/value.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | / match self { [INFO] [stdout] 320 | | Self::String { data: _ } => true, [INFO] [stdout] 321 | | _ => false, [INFO] [stdout] 322 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 319 - match self { [INFO] [stdout] 320 - Self::String { data: _ } => true, [INFO] [stdout] 321 - _ => false, [INFO] [stdout] 322 - } [INFO] [stdout] 319 + matches!(self, Self::String { data: _ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/values/value.rs:326:9 [INFO] [stdout] | [INFO] [stdout] 326 | / match self { [INFO] [stdout] 327 | | Self::Symbol { [INFO] [stdout] 328 | | id: _, [INFO] [stdout] 329 | | description: _, [INFO] [stdout] 330 | | } => true, [INFO] [stdout] 331 | | _ => false, [INFO] [stdout] 332 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 326 ~ matches!(self, Self::Symbol { [INFO] [stdout] 327 + id: _, [INFO] [stdout] 328 + description: _, [INFO] [stdout] 329 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/values/objects/function.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | format!("Function! idk whats in it") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Function! idk whats in it".to_string()` [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 `format!` [INFO] [stdout] --> src/values/objects/function.rs:93:54 [INFO] [stdout] | [INFO] [stdout] 93 | let is_finite_arg_id = get_or_intern_string(&format!("is_finite_arg")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"is_finite_arg".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/values/objects/function.rs:140:47 [INFO] [stdout] | [INFO] [stdout] 140 | let string = get_string_from_pool(&key).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `key` [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: unneeded `return` statement [INFO] [stdout] --> src/values/objects/ordinary.rs:77:17 [INFO] [stdout] | [INFO] [stdout] 77 | return Err(error); [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] 77 - return Err(error); [INFO] [stdout] 77 + Err(error) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/value.rs:528:17 [INFO] [stdout] | [INFO] [stdout] 528 | return Ok(JSValue::new_boolean(!boolean)); [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] 528 - return Ok(JSValue::new_boolean(!boolean)); [INFO] [stdout] 528 + Ok(JSValue::new_boolean(!boolean)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/value.rs:533:17 [INFO] [stdout] | [INFO] [stdout] 533 | return Ok(JSValue::new_boolean(!boolean)); [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] 533 - return Ok(JSValue::new_boolean(!boolean)); [INFO] [stdout] 533 + Ok(JSValue::new_boolean(!boolean)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/values/objects/ordinary.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | out.push_str("{"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `out.push('{')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/values/objects/ordinary.rs:150:47 [INFO] [stdout] | [INFO] [stdout] 150 | let string = get_string_from_pool(&string_id).unwrap_or("UNKNOWN".to_string()); [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `string_id` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/values/objects/ordinary.rs:166:47 [INFO] [stdout] | [INFO] [stdout] 166 | let string = get_string_from_pool(&key).unwrap(); [INFO] [stdout] | ^^^^ help: change this to: `key` [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 `Interpreter` [INFO] [stdout] --> src/lib.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / pub fn new() -> Self { [INFO] [stdout] 45 | | let mut heap = Heap::new(); [INFO] [stdout] 46 | | let object_proto = JSObject::create_object_proto(); // should always be 0. store anyways [INFO] [stdout] 47 | | let proto_id = heap.add_object(object_proto); [INFO] [stdout] ... | [INFO] [stdout] 61 | | } [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] 43 + impl Default for Interpreter { [INFO] [stdout] 44 + fn default() -> Self { [INFO] [stdout] 45 + Self::new() [INFO] [stdout] 46 + } [INFO] [stdout] 47 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/values/objects/mod.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | / match self { [INFO] [stdout] 137 | | JSObject::Function(_) => true, [INFO] [stdout] 138 | | _ => false, [INFO] [stdout] 139 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 136 - match self { [INFO] [stdout] 137 - JSObject::Function(_) => true, [INFO] [stdout] 138 - _ => false, [INFO] [stdout] 139 - } [INFO] [stdout] 136 + matches!(self, JSObject::Function(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/lib.rs:144:34 [INFO] [stdout] | [INFO] [stdout] 144 | let current_env_handle = self.get_current_environment_handle().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.get_current_environment_handle()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self [INFO] [stdout] .environment_stack.get(0)` [INFO] [stdout] --> src/lib.rs:182:37 [INFO] [stdout] | [INFO] [stdout] 182 | let global_environment_id = self [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 183 | | .environment_stack [INFO] [stdout] 184 | | .get(0) [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 182 ~ let global_environment_id = self [INFO] [stdout] 183 + .environment_stack.first() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/objects/mod.rs:353:18 [INFO] [stdout] | [INFO] [stdout] 353 | } => return Ok(value), [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] 353 - } => return Ok(value), [INFO] [stdout] 353 + } => Ok(value), [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/values/string.rs:16:27 [INFO] [stdout] | [INFO] [stdout] 16 | fn _code_point_at(string: &String, position: usize) -> u32 { [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] 16 - fn _code_point_at(string: &String, position: usize) -> u32 { [INFO] [stdout] 16 + fn _code_point_at(string: &str, position: usize) -> u32 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/values/value.rs:33:17 [INFO] [stdout] | [INFO] [stdout] 33 | let value = counter.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*counter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:283:30 [INFO] [stdout] | [INFO] [stdout] 283 | JSValue::Null => match right { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 284 | | JSValue::Null => true, [INFO] [stdout] 285 | | _ => false, [INFO] [stdout] 286 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 283 - JSValue::Null => match right { [INFO] [stdout] 284 - JSValue::Null => true, [INFO] [stdout] 285 - _ => false, [INFO] [stdout] 286 - }, [INFO] [stdout] 283 + JSValue::Null => matches!(right, JSValue::Null), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:287:35 [INFO] [stdout] | [INFO] [stdout] 287 | JSValue::Undefined => match right { [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 288 | | JSValue::Undefined => true, [INFO] [stdout] 289 | | _ => false, [INFO] [stdout] 290 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 287 - JSValue::Undefined => match right { [INFO] [stdout] 288 - JSValue::Undefined => true, [INFO] [stdout] 289 - _ => false, [INFO] [stdout] 290 - }, [INFO] [stdout] 287 + JSValue::Undefined => matches!(right, JSValue::Undefined), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:291:45 [INFO] [stdout] | [INFO] [stdout] 291 | JSValue::Boolean { data: _ } => match right { [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 292 | | JSValue::Boolean { data: _ } => true, [INFO] [stdout] 293 | | _ => false, [INFO] [stdout] 294 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 291 - JSValue::Boolean { data: _ } => match right { [INFO] [stdout] 292 - JSValue::Boolean { data: _ } => true, [INFO] [stdout] 293 - _ => false, [INFO] [stdout] 294 - }, [INFO] [stdout] 291 + JSValue::Boolean { data: _ } => matches!(right, JSValue::Boolean { data: _ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:295:44 [INFO] [stdout] | [INFO] [stdout] 295 | JSValue::String { data: _ } => match right { [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 296 | | JSValue::String { data: _ } => true, [INFO] [stdout] 297 | | _ => false, [INFO] [stdout] 298 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 295 - JSValue::String { data: _ } => match right { [INFO] [stdout] 296 - JSValue::String { data: _ } => true, [INFO] [stdout] 297 - _ => false, [INFO] [stdout] 298 - }, [INFO] [stdout] 295 + JSValue::String { data: _ } => matches!(right, JSValue::String { data: _ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:302:18 [INFO] [stdout] | [INFO] [stdout] 302 | } => match right { [INFO] [stdout] | __________________^ [INFO] [stdout] 303 | | JSValue::Symbol { [INFO] [stdout] 304 | | id: _, [INFO] [stdout] 305 | | description: _, [INFO] [stdout] 306 | | } => true, [INFO] [stdout] 307 | | _ => false, [INFO] [stdout] 308 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 302 ~ } => matches!(right, JSValue::Symbol { [INFO] [stdout] 303 + id: _, [INFO] [stdout] 304 + description: _, [INFO] [stdout] 305 ~ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:309:44 [INFO] [stdout] | [INFO] [stdout] 309 | JSValue::Number { data: _ } => match right { [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 310 | | JSValue::Number { data: _ } => true, [INFO] [stdout] 311 | | _ => false, [INFO] [stdout] 312 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 309 - JSValue::Number { data: _ } => match right { [INFO] [stdout] 310 - JSValue::Number { data: _ } => true, [INFO] [stdout] 311 - _ => false, [INFO] [stdout] 312 - }, [INFO] [stdout] 309 + JSValue::Number { data: _ } => matches!(right, JSValue::Number { data: _ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/values/value.rs:75:28 [INFO] [stdout] | [INFO] [stdout] 75 | return !(&string == ""); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `(&string != "")` [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: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:313:32 [INFO] [stdout] | [INFO] [stdout] 313 | JSValue::BigInt => match right { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 314 | | JSValue::BigInt => true, [INFO] [stdout] 315 | | _ => false, [INFO] [stdout] 316 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 313 - JSValue::BigInt => match right { [INFO] [stdout] 314 - JSValue::BigInt => true, [INFO] [stdout] 315 - _ => false, [INFO] [stdout] 316 - }, [INFO] [stdout] 313 + JSValue::BigInt => matches!(right, JSValue::BigInt), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:320:18 [INFO] [stdout] | [INFO] [stdout] 320 | } => match right { [INFO] [stdout] | __________________^ [INFO] [stdout] 321 | | JSValue::Object { [INFO] [stdout] 322 | | object_id: _, [INFO] [stdout] 323 | | kind: _, [INFO] [stdout] 324 | | } => true, [INFO] [stdout] 325 | | _ => false, [INFO] [stdout] 326 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 320 ~ } => matches!(right, JSValue::Object { [INFO] [stdout] 321 + object_id: _, [INFO] [stdout] 322 + kind: _, [INFO] [stdout] 323 ~ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/values/value.rs:75:30 [INFO] [stdout] | [INFO] [stdout] 75 | return !(&string == ""); [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `string.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:334:17 [INFO] [stdout] | [INFO] [stdout] 334 | return Ok(JSValue::new_boolean(same_value(*l_num, r_num))); [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] 334 - return Ok(JSValue::new_boolean(same_value(*l_num, r_num))); [INFO] [stdout] 334 + Ok(JSValue::new_boolean(same_value(*l_num, r_num))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/lib.rs:346:17 [INFO] [stdout] | [INFO] [stdout] 345 | let result = *data == right; [INFO] [stdout] | ---------------------------- unnecessary `let` binding [INFO] [stdout] 346 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 345 ~ [INFO] [stdout] 346 ~ *data == right [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Result::unwrap_or` [INFO] [stdout] --> src/values/value.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | / match number { [INFO] [stdout] 127 | | Ok(n) => n, [INFO] [stdout] 128 | | Err(_) => f64::NAN, [INFO] [stdout] 129 | | } [INFO] [stdout] | |_________^ help: replace with: `number.unwrap_or(f64::NAN)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:421:9 [INFO] [stdout] | [INFO] [stdout] 421 | return self.same_value_non_number(left, right); [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] 421 - return self.same_value_non_number(left, right); [INFO] [stdout] 421 + self.same_value_non_number(left, right) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/lib.rs:446:5 [INFO] [stdout] | [INFO] [stdout] 426 | / let out = match value { [INFO] [stdout] 427 | | JSValue::Null => "null".to_string(), [INFO] [stdout] 428 | | JSValue::Undefined => "undefined".to_string(), [INFO] [stdout] 429 | | JSValue::Boolean { data } => data.to_string(), [INFO] [stdout] ... | [INFO] [stdout] 444 | | }; [INFO] [stdout] | |______- unnecessary `let` binding [INFO] [stdout] 445 | [INFO] [stdout] 446 | out [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 426 ~ [INFO] [stdout] 427 | [INFO] [stdout] 428 ~ match value { [INFO] [stdout] 429 + JSValue::Null => "null".to_string(), [INFO] [stdout] 430 + JSValue::Undefined => "undefined".to_string(), [INFO] [stdout] 431 + JSValue::Boolean { data } => data.to_string(), [INFO] [stdout] 432 + JSValue::String { data } => { [INFO] [stdout] 433 + let s = get_string_from_pool(data).unwrap_or("UNKNOWN STRING".to_string()); [INFO] [stdout] 434 + format!("'{s}'") [INFO] [stdout] 435 + } [INFO] [stdout] 436 + JSValue::Symbol { [INFO] [stdout] 437 + id: _, [INFO] [stdout] 438 + description: _, [INFO] [stdout] 439 + } => todo!(), [INFO] [stdout] 440 + JSValue::Number { data } => data.to_string(), [INFO] [stdout] 441 + JSValue::BigInt => todo!(), [INFO] [stdout] 442 + JSValue::Object { object_id, kind: _ } => { [INFO] [stdout] 443 + let obj = interpreter.get_object(*object_id).unwrap().clone(); [INFO] [stdout] 444 + obj.debug(interpreter) [INFO] [stdout] 445 + } [INFO] [stdout] 446 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/values/value.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 248 | if floor % 2 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace with: `floor.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `*_mut`) usually take `self` by mutable reference [INFO] [stdout] --> src/values/value.rs:267:9 [INFO] [stdout] | [INFO] [stdout] 267 | &'a self, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/values/value.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | / match self { [INFO] [stdout] 320 | | Self::String { data: _ } => true, [INFO] [stdout] 321 | | _ => false, [INFO] [stdout] 322 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 319 - match self { [INFO] [stdout] 320 - Self::String { data: _ } => true, [INFO] [stdout] 321 - _ => false, [INFO] [stdout] 322 - } [INFO] [stdout] 319 + matches!(self, Self::String { data: _ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/values/value.rs:326:9 [INFO] [stdout] | [INFO] [stdout] 326 | / match self { [INFO] [stdout] 327 | | Self::Symbol { [INFO] [stdout] 328 | | id: _, [INFO] [stdout] 329 | | description: _, [INFO] [stdout] 330 | | } => true, [INFO] [stdout] 331 | | _ => false, [INFO] [stdout] 332 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 326 ~ matches!(self, Self::Symbol { [INFO] [stdout] 327 + id: _, [INFO] [stdout] 328 + description: _, [INFO] [stdout] 329 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/value.rs:528:17 [INFO] [stdout] | [INFO] [stdout] 528 | return Ok(JSValue::new_boolean(!boolean)); [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] 528 - return Ok(JSValue::new_boolean(!boolean)); [INFO] [stdout] 528 + Ok(JSValue::new_boolean(!boolean)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/values/value.rs:533:17 [INFO] [stdout] | [INFO] [stdout] 533 | return Ok(JSValue::new_boolean(!boolean)); [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] 533 - return Ok(JSValue::new_boolean(!boolean)); [INFO] [stdout] 533 + Ok(JSValue::new_boolean(!boolean)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Interpreter` [INFO] [stdout] --> src/lib.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / pub fn new() -> Self { [INFO] [stdout] 45 | | let mut heap = Heap::new(); [INFO] [stdout] 46 | | let object_proto = JSObject::create_object_proto(); // should always be 0. store anyways [INFO] [stdout] 47 | | let proto_id = heap.add_object(object_proto); [INFO] [stdout] ... | [INFO] [stdout] 61 | | } [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] 43 + impl Default for Interpreter { [INFO] [stdout] 44 + fn default() -> Self { [INFO] [stdout] 45 + Self::new() [INFO] [stdout] 46 + } [INFO] [stdout] 47 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/lib.rs:144:34 [INFO] [stdout] | [INFO] [stdout] 144 | let current_env_handle = self.get_current_environment_handle().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.get_current_environment_handle()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self [INFO] [stdout] .environment_stack.get(0)` [INFO] [stdout] --> src/lib.rs:182:37 [INFO] [stdout] | [INFO] [stdout] 182 | let global_environment_id = self [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 183 | | .environment_stack [INFO] [stdout] 184 | | .get(0) [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 182 ~ let global_environment_id = self [INFO] [stdout] 183 + .environment_stack.first() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:283:30 [INFO] [stdout] | [INFO] [stdout] 283 | JSValue::Null => match right { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 284 | | JSValue::Null => true, [INFO] [stdout] 285 | | _ => false, [INFO] [stdout] 286 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 283 - JSValue::Null => match right { [INFO] [stdout] 284 - JSValue::Null => true, [INFO] [stdout] 285 - _ => false, [INFO] [stdout] 286 - }, [INFO] [stdout] 283 + JSValue::Null => matches!(right, JSValue::Null), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:287:35 [INFO] [stdout] | [INFO] [stdout] 287 | JSValue::Undefined => match right { [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 288 | | JSValue::Undefined => true, [INFO] [stdout] 289 | | _ => false, [INFO] [stdout] 290 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 287 - JSValue::Undefined => match right { [INFO] [stdout] 288 - JSValue::Undefined => true, [INFO] [stdout] 289 - _ => false, [INFO] [stdout] 290 - }, [INFO] [stdout] 287 + JSValue::Undefined => matches!(right, JSValue::Undefined), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:291:45 [INFO] [stdout] | [INFO] [stdout] 291 | JSValue::Boolean { data: _ } => match right { [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 292 | | JSValue::Boolean { data: _ } => true, [INFO] [stdout] 293 | | _ => false, [INFO] [stdout] 294 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 291 - JSValue::Boolean { data: _ } => match right { [INFO] [stdout] 292 - JSValue::Boolean { data: _ } => true, [INFO] [stdout] 293 - _ => false, [INFO] [stdout] 294 - }, [INFO] [stdout] 291 + JSValue::Boolean { data: _ } => matches!(right, JSValue::Boolean { data: _ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:295:44 [INFO] [stdout] | [INFO] [stdout] 295 | JSValue::String { data: _ } => match right { [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 296 | | JSValue::String { data: _ } => true, [INFO] [stdout] 297 | | _ => false, [INFO] [stdout] 298 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 295 - JSValue::String { data: _ } => match right { [INFO] [stdout] 296 - JSValue::String { data: _ } => true, [INFO] [stdout] 297 - _ => false, [INFO] [stdout] 298 - }, [INFO] [stdout] 295 + JSValue::String { data: _ } => matches!(right, JSValue::String { data: _ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:302:18 [INFO] [stdout] | [INFO] [stdout] 302 | } => match right { [INFO] [stdout] | __________________^ [INFO] [stdout] 303 | | JSValue::Symbol { [INFO] [stdout] 304 | | id: _, [INFO] [stdout] 305 | | description: _, [INFO] [stdout] 306 | | } => true, [INFO] [stdout] 307 | | _ => false, [INFO] [stdout] 308 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 302 ~ } => matches!(right, JSValue::Symbol { [INFO] [stdout] 303 + id: _, [INFO] [stdout] 304 + description: _, [INFO] [stdout] 305 ~ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:309:44 [INFO] [stdout] | [INFO] [stdout] 309 | JSValue::Number { data: _ } => match right { [INFO] [stdout] | ____________________________________________^ [INFO] [stdout] 310 | | JSValue::Number { data: _ } => true, [INFO] [stdout] 311 | | _ => false, [INFO] [stdout] 312 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 309 - JSValue::Number { data: _ } => match right { [INFO] [stdout] 310 - JSValue::Number { data: _ } => true, [INFO] [stdout] 311 - _ => false, [INFO] [stdout] 312 - }, [INFO] [stdout] 309 + JSValue::Number { data: _ } => matches!(right, JSValue::Number { data: _ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:313:32 [INFO] [stdout] | [INFO] [stdout] 313 | JSValue::BigInt => match right { [INFO] [stdout] | ________________________________^ [INFO] [stdout] 314 | | JSValue::BigInt => true, [INFO] [stdout] 315 | | _ => false, [INFO] [stdout] 316 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 313 - JSValue::BigInt => match right { [INFO] [stdout] 314 - JSValue::BigInt => true, [INFO] [stdout] 315 - _ => false, [INFO] [stdout] 316 - }, [INFO] [stdout] 313 + JSValue::BigInt => matches!(right, JSValue::BigInt), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/lib.rs:320:18 [INFO] [stdout] | [INFO] [stdout] 320 | } => match right { [INFO] [stdout] | __________________^ [INFO] [stdout] 321 | | JSValue::Object { [INFO] [stdout] 322 | | object_id: _, [INFO] [stdout] 323 | | kind: _, [INFO] [stdout] 324 | | } => true, [INFO] [stdout] 325 | | _ => false, [INFO] [stdout] 326 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 320 ~ } => matches!(right, JSValue::Object { [INFO] [stdout] 321 + object_id: _, [INFO] [stdout] 322 + kind: _, [INFO] [stdout] 323 ~ }), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:334:17 [INFO] [stdout] | [INFO] [stdout] 334 | return Ok(JSValue::new_boolean(same_value(*l_num, r_num))); [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] 334 - return Ok(JSValue::new_boolean(same_value(*l_num, r_num))); [INFO] [stdout] 334 + Ok(JSValue::new_boolean(same_value(*l_num, r_num))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/lib.rs:346:17 [INFO] [stdout] | [INFO] [stdout] 345 | let result = *data == right; [INFO] [stdout] | ---------------------------- unnecessary `let` binding [INFO] [stdout] 346 | result [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 345 ~ [INFO] [stdout] 346 ~ *data == right [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lib.rs:421:9 [INFO] [stdout] | [INFO] [stdout] 421 | return self.same_value_non_number(left, right); [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] 421 - return self.same_value_non_number(left, right); [INFO] [stdout] 421 + self.same_value_non_number(left, right) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/lib.rs:446:5 [INFO] [stdout] | [INFO] [stdout] 426 | / let out = match value { [INFO] [stdout] 427 | | JSValue::Null => "null".to_string(), [INFO] [stdout] 428 | | JSValue::Undefined => "undefined".to_string(), [INFO] [stdout] 429 | | JSValue::Boolean { data } => data.to_string(), [INFO] [stdout] ... | [INFO] [stdout] 444 | | }; [INFO] [stdout] | |______- unnecessary `let` binding [INFO] [stdout] 445 | [INFO] [stdout] 446 | out [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 426 ~ [INFO] [stdout] 427 | [INFO] [stdout] 428 ~ match value { [INFO] [stdout] 429 + JSValue::Null => "null".to_string(), [INFO] [stdout] 430 + JSValue::Undefined => "undefined".to_string(), [INFO] [stdout] 431 + JSValue::Boolean { data } => data.to_string(), [INFO] [stdout] 432 + JSValue::String { data } => { [INFO] [stdout] 433 + let s = get_string_from_pool(data).unwrap_or("UNKNOWN STRING".to_string()); [INFO] [stdout] 434 + format!("'{s}'") [INFO] [stdout] 435 + } [INFO] [stdout] 436 + JSValue::Symbol { [INFO] [stdout] 437 + id: _, [INFO] [stdout] 438 + description: _, [INFO] [stdout] 439 + } => todo!(), [INFO] [stdout] 440 + JSValue::Number { data } => data.to_string(), [INFO] [stdout] 441 + JSValue::BigInt => todo!(), [INFO] [stdout] 442 + JSValue::Object { object_id, kind: _ } => { [INFO] [stdout] 443 + let obj = interpreter.get_object(*object_id).unwrap().clone(); [INFO] [stdout] 444 + obj.debug(interpreter) [INFO] [stdout] 445 + } [INFO] [stdout] 446 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `args.path` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/interpreter.rs:25:20 [INFO] [stdout] | [INFO] [stdout] 24 | if args.path.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = args.path` [INFO] [stdout] 25 | let path = args.path.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 49 | if out.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!out.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 52 | if err.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!err.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:76:24 [INFO] [stdout] | [INFO] [stdout] 76 | if out.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!out.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:79:24 [INFO] [stdout] | [INFO] [stdout] 79 | if err.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!err.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `args.path` after checking its variant with `is_some` [INFO] [stdout] --> src/bin/interpreter.rs:25:20 [INFO] [stdout] | [INFO] [stdout] 24 | if args.path.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = args.path` [INFO] [stdout] 25 | let path = args.path.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 49 | if out.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!out.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 52 | if err.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!err.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:76:24 [INFO] [stdout] | [INFO] [stdout] 76 | if out.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!out.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/interpreter.rs:79:24 [INFO] [stdout] | [INFO] [stdout] 79 | if err.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!err.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.24s [INFO] running `Command { std: "docker" "inspect" "2a30a7536ae87dced5830aaaa2272e1c1c52484b54bbcf632870b0926b18ba20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2a30a7536ae87dced5830aaaa2272e1c1c52484b54bbcf632870b0926b18ba20", kill_on_drop: false }` [INFO] [stdout] 2a30a7536ae87dced5830aaaa2272e1c1c52484b54bbcf632870b0926b18ba20