[INFO] cloning repository https://github.com/HallerPatrick/liva-lang [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/HallerPatrick/liva-lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHallerPatrick%2Fliva-lang", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHallerPatrick%2Fliva-lang'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d6a0a90582881054546082d3c88bde6efc221cd9 [INFO] linting HallerPatrick/liva-lang against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHallerPatrick%2Fliva-lang" "/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/HallerPatrick/liva-lang [INFO] finished tweaking git repo https://github.com/HallerPatrick/liva-lang [INFO] tweaked toml for git repo https://github.com/HallerPatrick/liva-lang written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/HallerPatrick/liva-lang 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/HallerPatrick/liva-lang 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] warning: profiles for the non root package will be ignored, specify profiles at the workspace root: [INFO] [stderr] package: /workspace/builds/worker-1-tc1/source/vm/Cargo.toml [INFO] [stderr] workspace: /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded bytecount v0.6.2 [INFO] [stderr] Downloaded nom_locate v4.0.0 [INFO] [stderr] Downloaded pretty-trait v0.1.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] 32e24f6e99761e14ca350345b3a71a8d5b0ddc864f82f2794a2eb7bd09961ea0 [INFO] running `Command { std: "docker" "start" "-a" "32e24f6e99761e14ca350345b3a71a8d5b0ddc864f82f2794a2eb7bd09961ea0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "32e24f6e99761e14ca350345b3a71a8d5b0ddc864f82f2794a2eb7bd09961ea0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "32e24f6e99761e14ca350345b3a71a8d5b0ddc864f82f2794a2eb7bd09961ea0", kill_on_drop: false }` [INFO] [stdout] 32e24f6e99761e14ca350345b3a71a8d5b0ddc864f82f2794a2eb7bd09961ea0 [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] 4972b63f4844b93763d268b7186195a1551e5324a8d7d6d08629ae96f6bd8dd4 [INFO] running `Command { std: "docker" "start" "-a" "4972b63f4844b93763d268b7186195a1551e5324a8d7d6d08629ae96f6bd8dd4", kill_on_drop: false }` [INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root: [INFO] [stderr] package: /opt/rustwide/workdir/vm/Cargo.toml [INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling nom v7.1.0 [INFO] [stderr] Checking bytecount v0.6.2 [INFO] [stderr] Compiling libc v0.2.107 [INFO] [stderr] Checking pretty-trait v0.1.2 [INFO] [stderr] Checking vec_map v0.8.2 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking clap v2.33.3 [INFO] [stderr] Checking nom_locate v4.0.0 [INFO] [stderr] Checking liva_parser v0.1.0 (/opt/rustwide/workdir/parser) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> parser/src/parser/expression/mod.rs:510:17 [INFO] [stdout] | [INFO] [stdout] 510 | left: left, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `left` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> parser/src/parser/expression/mod.rs:512:17 [INFO] [stdout] | [INFO] [stdout] 512 | right: right [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `right` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: duplicated attribute [INFO] [stdout] --> parser/src/parser/statement/declaration/function.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | #[test] [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(duplicate_macro_attributes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser/src/parser/expression/mod.rs:293:40 [INFO] [stdout] | [INFO] [stdout] 293 | merge_all_binops(&mut explist, &*BINOP_PRECEDENCE[0]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&BINOP_PRECEDENCE[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser/src/parser/expression/mod.rs:294:39 [INFO] [stdout] | [INFO] [stdout] 294 | merge_all_unops(&mut explist, &*UNOPS); [INFO] [stdout] | ^^^^^^^ help: try: `&UNOPS` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> parser/src/parser/expression/mod.rs:297:44 [INFO] [stdout] | [INFO] [stdout] 297 | merge_all_binops(&mut explist, &*binops); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 297 - merge_all_binops(&mut explist, &*binops); [INFO] [stdout] 297 + merge_all_binops(&mut explist, binops); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 297 | merge_all_binops(&mut explist, &**binops); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser/src/parser/expression/mod.rs:332:29 [INFO] [stdout] | [INFO] [stdout] 332 | a.extend_from_slice(&*tuple_to_flat_vec(head.1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&tuple_to_flat_vec(head.1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stdout] --> parser/src/parser/literals.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stdout] = note: `#[warn(clippy::partialeq_ne_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser/src/parser/expression/mod.rs:293:40 [INFO] [stdout] | [INFO] [stdout] 293 | merge_all_binops(&mut explist, &*BINOP_PRECEDENCE[0]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&BINOP_PRECEDENCE[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser/src/parser/expression/mod.rs:294:39 [INFO] [stdout] | [INFO] [stdout] 294 | merge_all_unops(&mut explist, &*UNOPS); [INFO] [stdout] | ^^^^^^^ help: try: `&UNOPS` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> parser/src/parser/expression/mod.rs:297:44 [INFO] [stdout] | [INFO] [stdout] 297 | merge_all_binops(&mut explist, &*binops); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] help: if you would like to reborrow, try removing `&*` [INFO] [stdout] | [INFO] [stdout] 297 - merge_all_binops(&mut explist, &*binops); [INFO] [stdout] 297 + merge_all_binops(&mut explist, binops); [INFO] [stdout] | [INFO] [stdout] help: if you would like to deref, try using `&**` [INFO] [stdout] | [INFO] [stdout] 297 | merge_all_binops(&mut explist, &**binops); [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> parser/src/parser/expression/mod.rs:332:29 [INFO] [stdout] | [INFO] [stdout] 332 | a.extend_from_slice(&*tuple_to_flat_vec(head.1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&tuple_to_flat_vec(head.1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stdout] --> parser/src/parser/literals.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stdout] = note: `#[warn(clippy::partialeq_ne_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/comment.rs:9:36 [INFO] [stdout] | [INFO] [stdout] 9 | pub(crate) fn parse_comment(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 9 | pub(crate) fn parse_comment(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/literals.rs:106:25 [INFO] [stdout] | [INFO] [stdout] 106 | pub(crate) fn sp(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 106 | pub(crate) fn sp(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/literals.rs:218:56 [INFO] [stdout] | [INFO] [stdout] 218 | pub(crate) fn parse_collection<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^--^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is named here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 218 | pub(crate) fn parse_collection<'a>(input: Span<'a>) -> Res<'a, Collection<'a>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/literals.rs:253:53 [INFO] [stdout] | [INFO] [stdout] 253 | pub(crate) fn parse_literal<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^--^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is named here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 253 | pub(crate) fn parse_literal<'a>(input: Span<'a>) -> Res<'a, Literal<'a>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/mod.rs:170:38 [INFO] [stdout] | [INFO] [stdout] 170 | pub(crate) fn opt_line_ending(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 170 | pub(crate) fn opt_line_ending(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/declaration/for_statement.rs:38:44 [INFO] [stdout] | [INFO] [stdout] 38 | fn parse_iter_item<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^^--^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is named here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 38 | fn parse_iter_item<'a>(input: Span<'a>) -> Res<'a, Variable<'a>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/declaration/function.rs:73:31 [INFO] [stdout] | [INFO] [stdout] 73 | fn parse_function_name(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 73 | fn parse_function_name(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/declaration/function.rs:84:53 [INFO] [stdout] | [INFO] [stdout] 84 | fn parse_function_arguments<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 84 | fn parse_function_arguments<'a>(input: Span<'a>) -> Res<'a, Vec>> { [INFO] [stdout] | +++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/comment.rs:9:36 [INFO] [stdout] | [INFO] [stdout] 9 | pub(crate) fn parse_comment(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 9 | pub(crate) fn parse_comment(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/literals.rs:106:25 [INFO] [stdout] | [INFO] [stdout] 106 | pub(crate) fn sp(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 106 | pub(crate) fn sp(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/literals.rs:218:56 [INFO] [stdout] | [INFO] [stdout] 218 | pub(crate) fn parse_collection<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^--^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is named here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 218 | pub(crate) fn parse_collection<'a>(input: Span<'a>) -> Res<'a, Collection<'a>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/literals.rs:253:53 [INFO] [stdout] | [INFO] [stdout] 253 | pub(crate) fn parse_literal<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^--^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is named here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 253 | pub(crate) fn parse_literal<'a>(input: Span<'a>) -> Res<'a, Literal<'a>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/mod.rs:170:38 [INFO] [stdout] | [INFO] [stdout] 170 | pub(crate) fn opt_line_ending(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 170 | pub(crate) fn opt_line_ending(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/declaration/for_statement.rs:38:44 [INFO] [stdout] | [INFO] [stdout] 38 | fn parse_iter_item<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^^--^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is named here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 38 | fn parse_iter_item<'a>(input: Span<'a>) -> Res<'a, Variable<'a>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/declaration/function.rs:73:31 [INFO] [stdout] | [INFO] [stdout] 73 | fn parse_function_name(input: Span) -> Res<&str> { [INFO] [stdout] | ^^^^ ^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is elided here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 73 | fn parse_function_name(input: Span<'_>) -> Res<'_, &str> { [INFO] [stdout] | ++++ +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing [INFO] [stdout] --> parser/src/parser/statement/declaration/function.rs:84:53 [INFO] [stdout] | [INFO] [stdout] 84 | fn parse_function_arguments<'a>(input: Span<'a>) -> Res> { [INFO] [stdout] | -- ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | | | [INFO] [stdout] | | | the same lifetime is hidden here [INFO] [stdout] | | the same lifetime is hidden here [INFO] [stdout] | the lifetime is named here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: consistently use `'a` [INFO] [stdout] | [INFO] [stdout] 84 | fn parse_function_arguments<'a>(input: Span<'a>) -> Res<'a, Vec>> { [INFO] [stdout] | +++ ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking liva_vm v0.1.0 (/opt/rustwide/workdir/vm) [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> parser/tests/example_tests.rs:31:12 [INFO] [stdout] | [INFO] [stdout] 31 | if !ast.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `ast.is_err()` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> parser/tests/example_tests.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | assert_eq!(ast.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 35 - assert_eq!(ast.is_ok(), true); [INFO] [stdout] 35 + assert!(ast.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around match arm expression [INFO] [stdout] --> vm/src/value.rs:137:51 [INFO] [stdout] | [INFO] [stdout] 137 | (Value::Integer(x), Value::Integer(y)) => (x == y), [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 137 - (Value::Integer(x), Value::Integer(y)) => (x == y), [INFO] [stdout] 137 + (Value::Integer(x), Value::Integer(y)) => x == y , [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> vm/src/vm/object.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | / /// idea of all the reference/pointer things [INFO] [stdout] 25 | | [INFO] [stdout] | |_^ [INFO] [stdout] 26 | static CURRENT_REF_ID: AtomicUsize = AtomicUsize::new(0); [INFO] [stdout] | --------------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> vm/src/vm/object.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | name: name, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> vm/src/vm/object.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | class: class, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `class` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> vm/src/vm/object.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | attributes: attributes, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `attributes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around match arm expression [INFO] [stdout] --> vm/src/value.rs:137:51 [INFO] [stdout] | [INFO] [stdout] 137 | (Value::Integer(x), Value::Integer(y)) => (x == y), [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 137 - (Value::Integer(x), Value::Integer(y)) => (x == y), [INFO] [stdout] 137 + (Value::Integer(x), Value::Integer(y)) => x == y , [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> vm/src/vm/object.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | / /// idea of all the reference/pointer things [INFO] [stdout] 25 | | [INFO] [stdout] | |_^ [INFO] [stdout] 26 | static CURRENT_REF_ID: AtomicUsize = AtomicUsize::new(0); [INFO] [stdout] | --------------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> vm/src/vm/object.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | name: name, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> vm/src/vm/object.rs:71:13 [INFO] [stdout] | [INFO] [stdout] 71 | class: class, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `class` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> vm/src/vm/object.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | attributes: attributes, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `attributes` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> vm/src/vm/mod.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> vm/src/vm/mod.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::hash::Hasher` [INFO] [stdout] --> vm/src/value.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::hash::Hasher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::hash::Hasher` [INFO] [stdout] --> vm/src/value.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::hash::Hasher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `import` [INFO] [stdout] --> vm/src/compiler/statements.rs:29:31 [INFO] [stdout] | [INFO] [stdout] 29 | Statement::Import(import) => {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_import` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `import` [INFO] [stdout] --> vm/src/compiler/statements.rs:29:31 [INFO] [stdout] | [INFO] [stdout] 29 | Statement::Import(import) => {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_import` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `map` [INFO] [stdout] --> vm/src/compiler/mod.rs:391:29 [INFO] [stdout] | [INFO] [stdout] 391 | Collection::Map(map) => {} [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_map` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `map` [INFO] [stdout] --> vm/src/compiler/mod.rs:391:29 [INFO] [stdout] | [INFO] [stdout] 391 | Collection::Map(map) => {} [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_map` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error_message` [INFO] [stdout] --> vm/src/compiler/mod.rs:576:49 [INFO] [stdout] | [INFO] [stdout] 576 | fn parse_variable(&mut self, str_val: &str, error_message: &str) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `error_message` [INFO] [stdout] --> vm/src/compiler/mod.rs:576:49 [INFO] [stdout] | [INFO] [stdout] 576 | fn parse_variable(&mut self, str_val: &str, error_message: &str) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> vm/src/vm/mod.rs:912:33 [INFO] [stdout] | [INFO] [stdout] 912 | ... let mut iterator = Iterable { iter: list }; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iter` [INFO] [stdout] --> vm/src/vm/mod.rs:910:25 [INFO] [stdout] | [INFO] [stdout] 910 | let iter = match iterable { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_iter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `primitve_objects` [INFO] [stdout] --> vm/src/main.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | let primitve_objects = PrimitiveObjects::new(&mut store); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_primitve_objects` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> vm/src/main.rs:111:19 [INFO] [stdout] | [INFO] [stdout] 111 | fn call_main_code(state: &mut VMState, module: LvObjectRef) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `module` [INFO] [stdout] --> vm/src/main.rs:111:40 [INFO] [stdout] | [INFO] [stdout] 111 | fn call_main_code(state: &mut VMState, module: LvObjectRef) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_module` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> vm/src/vm/mod.rs:912:33 [INFO] [stdout] | [INFO] [stdout] 912 | ... let mut iterator = Iterable { iter: list }; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `call_main_code` is never used [INFO] [stdout] --> vm/src/main.rs:111:4 [INFO] [stdout] | [INFO] [stdout] 111 | fn call_main_code(state: &mut VMState, module: LvObjectRef) {} [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `end_scope` and `get_variable` are never used [INFO] [stdout] --> vm/src/compiler/mod.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 65 | impl Compiler { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 156 | fn end_scope(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | fn get_variable(&mut self, prefix_expr: PrefixExpr) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `GetSuper`, `CallGlobal`, `Invoke`, and `LoadMethod` are never constructed [INFO] [stdout] --> vm/src/op_codes.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum OpCode { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 9 | GetSuper(usize), // ^ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 10 | CallGlobal(usize, usize), // A combination of OpCall and OpGetGlobal [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | Invoke(usize, usize), // Combines a GetProperty and a Call. Contains the exact same information. First usize is the index for th... [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 16 | // This will replace `GetProperty` [INFO] [stdout] 17 | LoadMethod(usize), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OpCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `iter` [INFO] [stdout] --> vm/src/vm/mod.rs:910:25 [INFO] [stdout] | [INFO] [stdout] 910 | let iter = match iterable { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_iter` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `lv_stack` is never read [INFO] [stdout] --> vm/src/vm/mod.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct VMState { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 57 | lv_stack: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_id` and `new_version` are never used [INFO] [stdout] --> vm/src/vm/object.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl LvObjectRef { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn get_id(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | fn new_version() -> u64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `version`, `name`, `data`, `class`, `bases`, and `attributes` are never read [INFO] [stdout] --> vm/src/vm/object.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct LvObject { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 52 | pub version: u64, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 53 | pub name: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 54 | pub data: ObjectData, [INFO] [stdout] | ^^^^ [INFO] [stdout] 55 | pub class: LvObjectRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 56 | pub bases: Option>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 57 | pub attributes: Option>>>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Code` is never constructed [INFO] [stdout] --> vm/src/vm/object.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct Code { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LvString`, `LvNum`, `LvList`, `LvMap`, `Function`, and `Module` are never constructed [INFO] [stdout] --> vm/src/vm/object.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 104 | pub enum ObjectData { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 109 | LvString(String), // Actual rust string [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 110 | LvNum(f64), // Actual float [INFO] [stdout] | ^^^^^ [INFO] [stdout] 111 | LvList(Vec), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 112 | LvMap(Vec<(LvObjectRef, LvObjectRef)>), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 113 | Function(String, LvObjectRef, HashMap), // module, code, default arguments [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 114 | Module(LvObjectRef), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `deref` and `deref_mut` are never used [INFO] [stdout] --> vm/src/vm/object.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl ObjectStore { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn deref(&mut self, obj_ref: LvObjectRef) -> &LvObject { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn deref_mut(&mut self, obj_ref: LvObjectRef) -> &mut LvObject { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> vm/src/vm/object.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct PrimitiveObjects { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 155 | pub object: LvObjectRef, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 156 | pub type_: LvObjectRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 157 | [INFO] [stdout] 158 | pub nil_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 159 | pub nil: LvObjectRef, [INFO] [stdout] | ^^^ [INFO] [stdout] 160 | [INFO] [stdout] 161 | pub int_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 162 | pub bool_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 163 | pub true_obj: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 164 | pub false_obj: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub list_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub dict_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub str_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 175 | [INFO] [stdout] 176 | pub iterator_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 177 | [INFO] [stdout] 178 | pub function_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 179 | // pub code_type: LvObjectRef, [INFO] [stdout] 180 | pub module: LvObjectRef, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `new_int`, `new_string`, `new_list`, `new_dict`, `new_function`, and `new_module` are never used [INFO] [stdout] --> vm/src/vm/object.rs:446:12 [INFO] [stdout] | [INFO] [stdout] 196 | impl PrimitiveObjects { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn new_int(&self, i: u32) -> LvObject { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 449 | pub fn new_string(&self, s: String) -> LvObject { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn new_list(&self, v: Vec) -> LvObject { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn new_dict(&self, v: Vec<(LvObjectRef, LvObjectRef)>) -> LvObject { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 481 | pub fn new_function( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 494 | pub fn new_module(&self, name: String, code: LvObjectRef) -> LvObject { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `LivaFunction` is never used [INFO] [stdout] --> vm/src/vm/state.rs:8:10 [INFO] [stdout] | [INFO] [stdout] 8 | pub type LivaFunction = fn(&mut State, &mut Vec, Vec); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `State` is never constructed [INFO] [stdout] --> vm/src/vm/state.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct State { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `primitve_objects` [INFO] [stdout] --> vm/src/main.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | let primitve_objects = PrimitiveObjects::new(&mut store); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_primitve_objects` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> vm/src/main.rs:111:19 [INFO] [stdout] | [INFO] [stdout] 111 | fn call_main_code(state: &mut VMState, module: LvObjectRef) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `module` [INFO] [stdout] --> vm/src/main.rs:111:40 [INFO] [stdout] | [INFO] [stdout] 111 | fn call_main_code(state: &mut VMState, module: LvObjectRef) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_module` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `call_main_code` is never used [INFO] [stdout] --> vm/src/main.rs:111:4 [INFO] [stdout] | [INFO] [stdout] 111 | fn call_main_code(state: &mut VMState, module: LvObjectRef) {} [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `end_scope` and `get_variable` are never used [INFO] [stdout] --> vm/src/compiler/mod.rs:156:8 [INFO] [stdout] | [INFO] [stdout] 65 | impl Compiler { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 156 | fn end_scope(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | fn get_variable(&mut self, prefix_expr: PrefixExpr) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `GetSuper`, `CallGlobal`, `Invoke`, and `LoadMethod` are never constructed [INFO] [stdout] --> vm/src/op_codes.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 2 | pub enum OpCode { [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 9 | GetSuper(usize), // ^ [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 10 | CallGlobal(usize, usize), // A combination of OpCall and OpGetGlobal [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 15 | Invoke(usize, usize), // Combines a GetProperty and a Call. Contains the exact same information. First usize is the index for th... [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 16 | // This will replace `GetProperty` [INFO] [stdout] 17 | LoadMethod(usize), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OpCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `lv_stack` is never read [INFO] [stdout] --> vm/src/vm/mod.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct VMState { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 57 | lv_stack: Vec, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `get_id` and `new_version` are never used [INFO] [stdout] --> vm/src/vm/object.rs:41:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl LvObjectRef { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 41 | pub fn get_id(&self) -> usize { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | fn new_version() -> u64 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `version`, `name`, `data`, `class`, `bases`, and `attributes` are never read [INFO] [stdout] --> vm/src/vm/object.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct LvObject { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 52 | pub version: u64, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 53 | pub name: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 54 | pub data: ObjectData, [INFO] [stdout] | ^^^^ [INFO] [stdout] 55 | pub class: LvObjectRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 56 | pub bases: Option>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 57 | pub attributes: Option>>>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Code` is never constructed [INFO] [stdout] --> vm/src/vm/object.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct Code { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LvString`, `LvNum`, `LvList`, `LvMap`, `Function`, and `Module` are never constructed [INFO] [stdout] --> vm/src/vm/object.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 104 | pub enum ObjectData { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 109 | LvString(String), // Actual rust string [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 110 | LvNum(f64), // Actual float [INFO] [stdout] | ^^^^^ [INFO] [stdout] 111 | LvList(Vec), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 112 | LvMap(Vec<(LvObjectRef, LvObjectRef)>), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 113 | Function(String, LvObjectRef, HashMap), // module, code, default arguments [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 114 | Module(LvObjectRef), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `deref` and `deref_mut` are never used [INFO] [stdout] --> vm/src/vm/object.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl ObjectStore { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn deref(&mut self, obj_ref: LvObjectRef) -> &LvObject { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn deref_mut(&mut self, obj_ref: LvObjectRef) -> &mut LvObject { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> vm/src/vm/object.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct PrimitiveObjects { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] 155 | pub object: LvObjectRef, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 156 | pub type_: LvObjectRef, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 157 | [INFO] [stdout] 158 | pub nil_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 159 | pub nil: LvObjectRef, [INFO] [stdout] | ^^^ [INFO] [stdout] 160 | [INFO] [stdout] 161 | pub int_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 162 | pub bool_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 163 | pub true_obj: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 164 | pub false_obj: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub list_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub dict_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub str_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 175 | [INFO] [stdout] 176 | pub iterator_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 177 | [INFO] [stdout] 178 | pub function_type: LvObjectRef, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 179 | // pub code_type: LvObjectRef, [INFO] [stdout] 180 | pub module: LvObjectRef, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `new_int`, `new_string`, `new_list`, `new_dict`, `new_function`, and `new_module` are never used [INFO] [stdout] --> vm/src/vm/object.rs:446:12 [INFO] [stdout] | [INFO] [stdout] 196 | impl PrimitiveObjects { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn new_int(&self, i: u32) -> LvObject { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 449 | pub fn new_string(&self, s: String) -> LvObject { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 458 | pub fn new_list(&self, v: Vec) -> LvObject { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn new_dict(&self, v: Vec<(LvObjectRef, LvObjectRef)>) -> LvObject { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 481 | pub fn new_function( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 494 | pub fn new_module(&self, name: String, code: LvObjectRef) -> LvObject { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `LivaFunction` is never used [INFO] [stdout] --> vm/src/vm/state.rs:8:10 [INFO] [stdout] | [INFO] [stdout] 8 | pub type LivaFunction = fn(&mut State, &mut Vec, Vec); [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `State` is never constructed [INFO] [stdout] --> vm/src/vm/state.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct State { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> vm/src/compiler/mod.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | /// to the VM [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 52 | /// to the VM [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:176:41 [INFO] [stdout] | [INFO] [stdout] 176 | self.emit_instr(OpCode::ForIter(usize::max_value())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 176 - self.emit_instr(OpCode::ForIter(usize::max_value())); [INFO] [stdout] 176 + self.emit_instr(OpCode::ForIter(usize::MAX)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:184:45 [INFO] [stdout] | [INFO] [stdout] 184 | self.emit_instr(OpCode::JumpIfFalse(usize::max_value())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 184 - self.emit_instr(OpCode::JumpIfFalse(usize::max_value())); [INFO] [stdout] 184 + self.emit_instr(OpCode::JumpIfFalse(usize::MAX)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:192:38 [INFO] [stdout] | [INFO] [stdout] 192 | self.emit_instr(OpCode::Jump(usize::max_value())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 192 - self.emit_instr(OpCode::Jump(usize::max_value())); [INFO] [stdout] 192 + self.emit_instr(OpCode::Jump(usize::MAX)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:199:26 [INFO] [stdout] | [INFO] [stdout] 199 | if jump_amount > usize::max_value() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 199 - if jump_amount > usize::max_value() { [INFO] [stdout] 199 + if jump_amount > usize::MAX { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> vm/src/compiler/mod.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | /// after scope end all values are popped from the stack [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> vm/src/compiler/mod.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 52 | /// to the VM [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 52 | /// to the VM [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:176:41 [INFO] [stdout] | [INFO] [stdout] 176 | self.emit_instr(OpCode::ForIter(usize::max_value())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 176 - self.emit_instr(OpCode::ForIter(usize::max_value())); [INFO] [stdout] 176 + self.emit_instr(OpCode::ForIter(usize::MAX)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:184:45 [INFO] [stdout] | [INFO] [stdout] 184 | self.emit_instr(OpCode::JumpIfFalse(usize::max_value())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 184 - self.emit_instr(OpCode::JumpIfFalse(usize::max_value())); [INFO] [stdout] 184 + self.emit_instr(OpCode::JumpIfFalse(usize::MAX)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:192:38 [INFO] [stdout] | [INFO] [stdout] 192 | self.emit_instr(OpCode::Jump(usize::max_value())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 192 - self.emit_instr(OpCode::Jump(usize::max_value())); [INFO] [stdout] 192 + self.emit_instr(OpCode::Jump(usize::MAX)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> vm/src/compiler/mod.rs:459:12 [INFO] [stdout] | [INFO] [stdout] 459 | if assignment.variable.suffix_chain.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!assignment.variable.suffix_chain.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: usage of a legacy numeric method [INFO] [stdout] --> vm/src/compiler/mod.rs:199:26 [INFO] [stdout] | [INFO] [stdout] 199 | if jump_amount > usize::max_value() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 199 - if jump_amount > usize::max_value() { [INFO] [stdout] 199 + if jump_amount > usize::MAX { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> vm/src/compiler/mod.rs:230:9 [INFO] [stdout] | [INFO] [stdout] 230 | /// after scope end all values are popped from the stack [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try using ` ` (3 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> vm/src/compiler/mod.rs:603:12 [INFO] [stdout] | [INFO] [stdout] 603 | if (last_instr == None) || last_instr.unwrap().op_code != OpCode::Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `last_instr.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` 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] --> vm/src/debug.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | function_defs: &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] 7 - function_defs: &Vec, [INFO] [stdout] 7 + function_defs: &[FunctionChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/debug.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | class_defs: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 8 - class_defs: &Vec, [INFO] [stdout] 8 + class_defs: &[ClassChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> vm/src/compiler/mod.rs:459:12 [INFO] [stdout] | [INFO] [stdout] 459 | if assignment.variable.suffix_chain.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!assignment.variable.suffix_chain.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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/debug.rs:63:16 [INFO] [stdout] | [INFO] [stdout] 63 | constants: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 63 - constants: &Vec, [INFO] [stdout] 63 + constants: &[Value], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/debug.rs:64:18 [INFO] [stdout] | [INFO] [stdout] 64 | identifiers: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 64 - identifiers: &Vec, [INFO] [stdout] 64 + identifiers: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> vm/src/gc.rs:95:20 [INFO] [stdout] | [INFO] [stdout] 95 | if obj.is_marked == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `!obj.is_marked` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/gc.rs:114:37 [INFO] [stdout] | [INFO] [stdout] 114 | fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 114 - fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] 114 + fn mark_roots(&mut self, stack: &[Value], globals: &Vec) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/gc.rs:114:59 [INFO] [stdout] | [INFO] [stdout] 114 | fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 114 - fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] 114 + fn mark_roots(&mut self, stack: &Vec, globals: &[Global]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> vm/src/compiler/mod.rs:603:12 [INFO] [stdout] | [INFO] [stdout] 603 | if (last_instr == None) || last_instr.unwrap().op_code != OpCode::Return { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `last_instr.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` 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] --> vm/src/debug.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | function_defs: &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] 7 - function_defs: &Vec, [INFO] [stdout] 7 + function_defs: &[FunctionChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/debug.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | class_defs: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 8 - class_defs: &Vec, [INFO] [stdout] 8 + class_defs: &[ClassChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> vm/src/gc.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 128 | let index = self.grey_worklist.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 127 ~ while let Some(index) = self.grey_worklist.pop() { [INFO] [stdout] 128 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/debug.rs:63:16 [INFO] [stdout] | [INFO] [stdout] 63 | constants: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 63 - constants: &Vec, [INFO] [stdout] 63 + constants: &[Value], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/debug.rs:64:18 [INFO] [stdout] | [INFO] [stdout] 64 | identifiers: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 64 - identifiers: &Vec, [INFO] [stdout] 64 + identifiers: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> vm/src/gc.rs:95:20 [INFO] [stdout] | [INFO] [stdout] 95 | if obj.is_marked == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `!obj.is_marked` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/gc.rs:114:37 [INFO] [stdout] | [INFO] [stdout] 114 | fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 114 - fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] 114 + fn mark_roots(&mut self, stack: &[Value], globals: &Vec) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/gc.rs:114:59 [INFO] [stdout] | [INFO] [stdout] 114 | fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 114 - fn mark_roots(&mut self, stack: &Vec, globals: &Vec) { [INFO] [stdout] 114 + fn mark_roots(&mut self, stack: &Vec, globals: &[Global]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> vm/src/native.rs:61:19 [INFO] [stdout] | [INFO] [stdout] 61 | for i in min..max as i32 { [INFO] [stdout] | ^^^^^^^^^^ help: try: `max` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> vm/src/gc.rs:128:13 [INFO] [stdout] | [INFO] [stdout] 128 | let index = self.grey_worklist.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 127 ~ while let Some(index) = self.grey_worklist.pop() { [INFO] [stdout] 128 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> vm/src/resolver.rs:76:13 [INFO] [stdout] | [INFO] [stdout] 76 | return Some(child.add_upvalue(index, true)); [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] 76 - return Some(child.add_upvalue(index, true)); [INFO] [stdout] 76 + Some(child.add_upvalue(index, true)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> vm/src/resolver.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | return Some(child.add_upvalue(index, false)); [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] 79 - return Some(child.add_upvalue(index, false)); [INFO] [stdout] 79 + Some(child.add_upvalue(index, false)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> vm/src/resolver.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | / let mut locals = Vec::new(); [INFO] [stdout] 117 | | locals.push(Local { [INFO] [stdout] 118 | | // Placeholder local variable for VM use -> Will be filled by the corresponding LoxFunction for the CallFrame [INFO] [stdout] 119 | | name: String::from(""), [INFO] [stdout] 120 | | depth: None, [INFO] [stdout] 121 | | }); [INFO] [stdout] | |___________^ help: consider using the `vec![]` macro: `let locals = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> vm/src/resolver.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | / let mut stack = Vec::new(); [INFO] [stdout] 130 | | stack.push(top); [INFO] [stdout] | |________________________^ help: consider using the `vec![]` macro: `let stack = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`i32` -> `i32`) [INFO] [stdout] --> vm/src/native.rs:61:19 [INFO] [stdout] | [INFO] [stdout] 61 | for i in min..max as i32 { [INFO] [stdout] | ^^^^^^^^^^ help: try: `max` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> vm/src/resolver.rs:232:20 [INFO] [stdout] | [INFO] [stdout] 232 | if local.depth == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `local.depth.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> vm/src/resolver.rs:76:13 [INFO] [stdout] | [INFO] [stdout] 76 | return Some(child.add_upvalue(index, true)); [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] 76 - return Some(child.add_upvalue(index, true)); [INFO] [stdout] 76 + Some(child.add_upvalue(index, true)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> vm/src/resolver.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | return Some(child.add_upvalue(index, false)); [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] 79 - return Some(child.add_upvalue(index, false)); [INFO] [stdout] 79 + Some(child.add_upvalue(index, false)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> vm/src/resolver.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | / let mut locals = Vec::new(); [INFO] [stdout] 117 | | locals.push(Local { [INFO] [stdout] 118 | | // Placeholder local variable for VM use -> Will be filled by the corresponding LoxFunction for the CallFrame [INFO] [stdout] 119 | | name: String::from(""), [INFO] [stdout] 120 | | depth: None, [INFO] [stdout] 121 | | }); [INFO] [stdout] | |___________^ help: consider using the `vec![]` macro: `let locals = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> vm/src/resolver.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 129 | / let mut stack = Vec::new(); [INFO] [stdout] 130 | | stack.push(top); [INFO] [stdout] | |________________________^ help: consider using the `vec![]` macro: `let stack = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> vm/src/resolver.rs:232:20 [INFO] [stdout] | [INFO] [stdout] 232 | if local.depth == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `local.depth.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> vm/src/vm/object.rs:133:33 [INFO] [stdout] | [INFO] [stdout] 133 | self.all_objects.insert(obj_ref.id.clone(), obj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `obj_ref.id` [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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> vm/src/vm/object.rs:133:33 [INFO] [stdout] | [INFO] [stdout] 133 | self.all_objects.insert(obj_ref.id.clone(), obj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `obj_ref.id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/vm/mod.rs:209:21 [INFO] [stdout] | [INFO] [stdout] 209 | class_defs: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 209 - class_defs: &Vec, [INFO] [stdout] 209 + class_defs: &[ClassChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> vm/src/vm/mod.rs:242:20 [INFO] [stdout] | [INFO] [stdout] 242 | if init_slot == &None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `init_slot.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `fn(usize, Vec) -> Value` which implements the `Copy` trait [INFO] [stdout] --> vm/src/vm/mod.rs:259:29 [INFO] [stdout] | [INFO] [stdout] 259 | let native_fn = native_fn.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*native_fn` [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: unneeded `return` statement [INFO] [stdout] --> vm/src/vm/mod.rs:296:9 [INFO] [stdout] | [INFO] [stdout] 296 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 296 - return None; [INFO] [stdout] 296 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/vm/mod.rs:272:24 [INFO] [stdout] | [INFO] [stdout] 272 | function_defs: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 272 - function_defs: &Vec, [INFO] [stdout] 272 + function_defs: &[FunctionChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/vm/mod.rs:314:47 [INFO] [stdout] | [INFO] [stdout] 314 | fn define_std_lib(&mut self, identifiers: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 314 - fn define_std_lib(&mut self, identifiers: &Vec) { [INFO] [stdout] 314 + fn define_std_lib(&mut self, identifiers: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/vm/mod.rs:209:21 [INFO] [stdout] | [INFO] [stdout] 209 | class_defs: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 209 - class_defs: &Vec, [INFO] [stdout] 209 + class_defs: &[ClassChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> vm/src/vm/mod.rs:242:20 [INFO] [stdout] | [INFO] [stdout] 242 | if init_slot == &None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `init_slot.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> vm/src/vm/mod.rs:421:13 [INFO] [stdout] | [INFO] [stdout] 421 | return var_name; [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 var_name; [INFO] [stdout] 421 + var_name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:439:35 [INFO] [stdout] | [INFO] [stdout] 439 | debug_print_constants(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:505:29 [INFO] [stdout] | [INFO] [stdout] 505 | debug_trace(&self, &instr, &state); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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] --> vm/src/vm/mod.rs:505:36 [INFO] [stdout] | [INFO] [stdout] 505 | debug_trace(&self, &instr, &state); [INFO] [stdout] | ^^^^^^ help: change this to: `instr` [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: using `clone` on type `fn(usize, Vec) -> Value` which implements the `Copy` trait [INFO] [stdout] --> vm/src/vm/mod.rs:259:29 [INFO] [stdout] | [INFO] [stdout] 259 | let native_fn = native_fn.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*native_fn` [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: unneeded `return` statement [INFO] [stdout] --> vm/src/vm/mod.rs:296:9 [INFO] [stdout] | [INFO] [stdout] 296 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 296 - return None; [INFO] [stdout] 296 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/vm/mod.rs:272:24 [INFO] [stdout] | [INFO] [stdout] 272 | function_defs: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 272 - function_defs: &Vec, [INFO] [stdout] 272 + function_defs: &[FunctionChunk], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> vm/src/vm/mod.rs:314:47 [INFO] [stdout] | [INFO] [stdout] 314 | fn define_std_lib(&mut self, identifiers: &Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 314 - fn define_std_lib(&mut self, identifiers: &Vec) { [INFO] [stdout] 314 + fn define_std_lib(&mut self, identifiers: &[String]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:680:141 [INFO] [stdout] | [INFO] [stdout] 680 | ...h '.' Found {} instead", pointer_val.to_string(&self, &state)); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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] --> vm/src/vm/mod.rs:746:139 [INFO] [stdout] | [INFO] [stdout] 746 | ...ith '.' Found {} instead", owner_ref.to_string(&self, &state)); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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] --> vm/src/vm/mod.rs:421:13 [INFO] [stdout] | [INFO] [stdout] 421 | return var_name; [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 var_name; [INFO] [stdout] 421 + var_name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:439:35 [INFO] [stdout] | [INFO] [stdout] 439 | debug_print_constants(&self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:505:29 [INFO] [stdout] | [INFO] [stdout] 505 | debug_trace(&self, &instr, &state); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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] --> vm/src/vm/mod.rs:505:36 [INFO] [stdout] | [INFO] [stdout] 505 | debug_trace(&self, &instr, &state); [INFO] [stdout] | ^^^^^^ help: change this to: `instr` [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 multiplication by -1 can be written more succinctly [INFO] [stdout] --> vm/src/vm/mod.rs:878:67 [INFO] [stdout] | [INFO] [stdout] 878 | Some(x) => state.stack.push(Value::Double(x * -1.0)), [INFO] [stdout] | ^^^^^^^^ help: consider using: `-x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> vm/src/vm/mod.rs:910:21 [INFO] [stdout] | [INFO] [stdout] 910 | / let iter = match iterable { [INFO] [stdout] 911 | | Value::List(list) => { [INFO] [stdout] 912 | | let mut iterator = Iterable { iter: list }; [INFO] [stdout] ... | [INFO] [stdout] 922 | | }; [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 910 - let iter = match iterable { [INFO] [stdout] 910 + match iterable { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:680:141 [INFO] [stdout] | [INFO] [stdout] 680 | ...h '.' Found {} instead", pointer_val.to_string(&self, &state)); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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: empty string literal in `eprintln!` [INFO] [stdout] --> vm/src/vm/mod.rs:969:5 [INFO] [stdout] | [INFO] [stdout] 969 | eprintln!(""); [INFO] [stdout] | ^^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> vm/src/vm/mod.rs:746:139 [INFO] [stdout] | [INFO] [stdout] 746 | ...ith '.' Found {} instead", owner_ref.to_string(&self, &state)); [INFO] [stdout] | ^^^^^ help: change this to: `self` [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: the borrowed expression implements the required traits [INFO] [stdout] --> vm/src/main.rs:62:37 [INFO] [stdout] | [INFO] [stdout] 62 | let mut file = match File::open(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> vm/src/main.rs:88:26 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn interpret(source: &String, debug: bool, debug_stepper: bool) -> InterpretResult { [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] 88 - pub fn interpret(source: &String, debug: bool, debug_stepper: bool) -> InterpretResult { [INFO] [stdout] 88 + pub fn interpret(source: &str, debug: bool, debug_stepper: bool) -> InterpretResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> vm/src/main.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | print_ast(file); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 46 | let _ = print_ast(file); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> vm/src/value.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 36 | #[derive(Debug, Clone, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 47 | NativeFunction(NativeFn), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this multiplication by -1 can be written more succinctly [INFO] [stdout] --> vm/src/vm/mod.rs:878:67 [INFO] [stdout] | [INFO] [stdout] 878 | Some(x) => state.stack.push(Value::Double(x * -1.0)), [INFO] [stdout] | ^^^^^^^^ help: consider using: `-x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stdout] = note: `#[warn(clippy::neg_multiply)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> vm/src/vm/mod.rs:910:21 [INFO] [stdout] | [INFO] [stdout] 910 | / let iter = match iterable { [INFO] [stdout] 911 | | Value::List(list) => { [INFO] [stdout] 912 | | let mut iterator = Iterable { iter: list }; [INFO] [stdout] ... | [INFO] [stdout] 922 | | }; [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 910 - let iter = match iterable { [INFO] [stdout] 910 + match iterable { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> vm/src/value.rs:144:65 [INFO] [stdout] | [INFO] [stdout] 144 | (Value::NativeFunction(x), Value::NativeFunction(y)) => x == y, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 144 - (Value::NativeFunction(x), Value::NativeFunction(y)) => x == y, [INFO] [stdout] 144 + (Value::NativeFunction(x), Value::NativeFunction(y)) => std::ptr::fn_addr_eq(*x, *y), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `eprintln!` [INFO] [stdout] --> vm/src/vm/mod.rs:969:5 [INFO] [stdout] | [INFO] [stdout] 969 | eprintln!(""); [INFO] [stdout] | ^^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.57s [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> vm/src/main.rs:62:37 [INFO] [stdout] | [INFO] [stdout] 62 | let mut file = match File::open(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> vm/src/main.rs:88:26 [INFO] [stdout] | [INFO] [stdout] 88 | pub fn interpret(source: &String, debug: bool, debug_stepper: bool) -> InterpretResult { [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] 88 - pub fn interpret(source: &String, debug: bool, debug_stepper: bool) -> InterpretResult { [INFO] [stdout] 88 + pub fn interpret(source: &str, debug: bool, debug_stepper: bool) -> InterpretResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> vm/src/main.rs:46:13 [INFO] [stdout] | [INFO] [stdout] 46 | print_ast(file); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 46 | let _ = print_ast(file); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> vm/src/value.rs:47:20 [INFO] [stdout] | [INFO] [stdout] 36 | #[derive(Debug, Clone, PartialEq)] [INFO] [stdout] | --------- in this derive macro expansion [INFO] [stdout] ... [INFO] [stdout] 47 | NativeFunction(NativeFn), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> vm/src/value.rs:144:65 [INFO] [stdout] | [INFO] [stdout] 144 | (Value::NativeFunction(x), Value::NativeFunction(y)) => x == y, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 144 - (Value::NativeFunction(x), Value::NativeFunction(y)) => x == y, [INFO] [stdout] 144 + (Value::NativeFunction(x), Value::NativeFunction(y)) => std::ptr::fn_addr_eq(*x, *y), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "4972b63f4844b93763d268b7186195a1551e5324a8d7d6d08629ae96f6bd8dd4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4972b63f4844b93763d268b7186195a1551e5324a8d7d6d08629ae96f6bd8dd4", kill_on_drop: false }` [INFO] [stdout] 4972b63f4844b93763d268b7186195a1551e5324a8d7d6d08629ae96f6bd8dd4