[INFO] fetching crate moon_script 0.8.2... [INFO] linting moon_script-0.8.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate moon_script 0.8.2 into /workspace/builds/worker-0-tc1/source [INFO] started tweaking crates.io crate moon_script 0.8.2 [INFO] finished tweaking crates.io crate moon_script 0.8.2 [INFO] tweaked toml for crates.io crate moon_script 0.8.2 written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate moon_script 0.8.2 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 50 packages to latest compatible versions [INFO] [stderr] Adding colored v2.2.0 (available: v3.1.1) [INFO] [stderr] Adding generic-array v0.14.7 (available: v0.14.9) [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] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded pest_derive v2.8.6 [INFO] [stderr] Downloaded simple_logger v5.2.0 [INFO] [stderr] Downloaded string_colorization v1.0.0 [INFO] [stderr] Downloaded simple_detailed_error v0.1.0 [INFO] [stderr] Downloaded pest_generator v2.8.6 [INFO] [stderr] Downloaded pest v2.8.6 [INFO] [stderr] Downloaded pest_meta v2.8.6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 23a8a914372b0eb6e0f90a8b87d21feae6340ee16cf94a24c597f8a456dd16fc [INFO] running `Command { std: "docker" "start" "-a" "23a8a914372b0eb6e0f90a8b87d21feae6340ee16cf94a24c597f8a456dd16fc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "23a8a914372b0eb6e0f90a8b87d21feae6340ee16cf94a24c597f8a456dd16fc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "23a8a914372b0eb6e0f90a8b87d21feae6340ee16cf94a24c597f8a456dd16fc", kill_on_drop: false }` [INFO] [stdout] 23a8a914372b0eb6e0f90a8b87d21feae6340ee16cf94a24c597f8a456dd16fc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] c55e32cdca289b6ea735cb6b76a8d639efaaa1931ea332492b3c08d3c078c21d [INFO] running `Command { std: "docker" "start" "-a" "c55e32cdca289b6ea735cb6b76a8d639efaaa1931ea332492b3c08d3c078c21d", kill_on_drop: false }` [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Compiling num-conv v0.2.0 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Checking num_threads v0.1.7 [INFO] [stderr] Compiling pest v2.8.6 [INFO] [stderr] Checking deranged v0.5.8 [INFO] [stderr] Compiling time-macros v0.2.27 [INFO] [stderr] Checking colored v3.1.1 [INFO] [stderr] Checking string_colorization v1.0.0 [INFO] [stderr] Checking simple_detailed_error v0.1.0 [INFO] [stderr] Compiling pest_meta v2.8.6 [INFO] [stderr] Checking time v0.3.47 [INFO] [stderr] Compiling pest_generator v2.8.6 [INFO] [stderr] Checking simple_logger v5.2.0 [INFO] [stderr] Compiling pest_derive v2.8.6 [INFO] [stderr] Checking moon_script v0.8.2 (/opt/rustwide/workdir) [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/external_utils/on_error_iter.rs:22:18 [INFO] [stdout] | [INFO] [stdout] 22 | fn on_errors(self, on_error: OnError) -> OnErrorsIter where OnError: FnMut(Err); [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/external_utils/on_error_iter.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 26 | ...rs(self, on_error: OnError) -> OnErrorsIter where Iter: Iterator>, OnError: F... [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/external_utils/on_error_iter.rs:22:18 [INFO] [stdout] | [INFO] [stdout] 22 | fn on_errors(self, on_error: OnError) -> OnErrorsIter where OnError: FnMut(Err); [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/external_utils/on_error_iter.rs:26:18 [INFO] [stdout] | [INFO] [stdout] 26 | ...rs(self, on_error: OnError) -> OnErrorsIter where Iter: Iterator>, OnError: F... [INFO] [stdout] | ^^^^^^^ ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/reduced_value_impl/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/reduced_value_impl/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parsing/mod.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | function_info: function_info, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `function_info` [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: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:115:14 [INFO] [stdout] | [INFO] [stdout] 115 | def { n: 01 names: PA } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] = note: `#[warn(clippy::zero_prefixed_literal)]` on by default [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 115 - def { n: 01 names: PA } [INFO] [stdout] 115 + def { n: 1 names: PA } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 115 | def { n: 0o1 names: PA } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:116:14 [INFO] [stdout] | [INFO] [stdout] 116 | def { n: 02 names: PA PB } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 116 - def { n: 02 names: PA PB } [INFO] [stdout] 116 + def { n: 2 names: PA PB } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 116 | def { n: 0o2 names: PA PB } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:117:14 [INFO] [stdout] | [INFO] [stdout] 117 | def { n: 03 names: PA PB PC } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 117 - def { n: 03 names: PA PB PC } [INFO] [stdout] 117 + def { n: 3 names: PA PB PC } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 117 | def { n: 0o3 names: PA PB PC } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | def { n: 04 names: PA PB PC PD } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 118 - def { n: 04 names: PA PB PC PD } [INFO] [stdout] 118 + def { n: 4 names: PA PB PC PD } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 118 | def { n: 0o4 names: PA PB PC PD } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:119:14 [INFO] [stdout] | [INFO] [stdout] 119 | def { n: 05 names: PA PB PC PD PE } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 119 - def { n: 05 names: PA PB PC PD PE } [INFO] [stdout] 119 + def { n: 5 names: PA PB PC PD PE } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 119 | def { n: 0o5 names: PA PB PC PD PE } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:120:14 [INFO] [stdout] | [INFO] [stdout] 120 | def { n: 06 names: PA PB PC PD PE PF } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 120 - def { n: 06 names: PA PB PC PD PE PF } [INFO] [stdout] 120 + def { n: 6 names: PA PB PC PD PE PF } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 120 | def { n: 0o6 names: PA PB PC PD PE PF } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:121:14 [INFO] [stdout] | [INFO] [stdout] 121 | def { n: 07 names: PA PB PC PD PE PF PG } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 121 - def { n: 07 names: PA PB PC PD PE PF PG } [INFO] [stdout] 121 + def { n: 7 names: PA PB PC PD PE PF PG } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 121 | def { n: 0o7 names: PA PB PC PD PE PF PG } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:122:14 [INFO] [stdout] | [INFO] [stdout] 122 | def { n: 08 names: PA PB PC PD PE PF PG PH } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 122 - def { n: 08 names: PA PB PC PD PE PF PG PH } [INFO] [stdout] 122 + def { n: 8 names: PA PB PC PD PE PF PG PH } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/lib.rs:264:9 [INFO] [stdout] | [INFO] [stdout] 264 | /// Execute the AST [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 265 | ast.execute(); [INFO] [stdout] | ------------- rustdoc does not generate documentation for expressions [INFO] [stdout] | [INFO] [stdout] = help: use `//` for a plain comment [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/parsing/mod.rs:94:13 [INFO] [stdout] | [INFO] [stdout] 94 | function_info: function_info, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `function_info` [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: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:115:14 [INFO] [stdout] | [INFO] [stdout] 115 | def { n: 01 names: PA } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] = note: `#[warn(clippy::zero_prefixed_literal)]` on by default [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 115 - def { n: 01 names: PA } [INFO] [stdout] 115 + def { n: 1 names: PA } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 115 | def { n: 0o1 names: PA } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:116:14 [INFO] [stdout] | [INFO] [stdout] 116 | def { n: 02 names: PA PB } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 116 - def { n: 02 names: PA PB } [INFO] [stdout] 116 + def { n: 2 names: PA PB } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 116 | def { n: 0o2 names: PA PB } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:117:14 [INFO] [stdout] | [INFO] [stdout] 117 | def { n: 03 names: PA PB PC } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 117 - def { n: 03 names: PA PB PC } [INFO] [stdout] 117 + def { n: 3 names: PA PB PC } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 117 | def { n: 0o3 names: PA PB PC } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | def { n: 04 names: PA PB PC PD } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 118 - def { n: 04 names: PA PB PC PD } [INFO] [stdout] 118 + def { n: 4 names: PA PB PC PD } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 118 | def { n: 0o4 names: PA PB PC PD } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:119:14 [INFO] [stdout] | [INFO] [stdout] 119 | def { n: 05 names: PA PB PC PD PE } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 119 - def { n: 05 names: PA PB PC PD PE } [INFO] [stdout] 119 + def { n: 5 names: PA PB PC PD PE } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 119 | def { n: 0o5 names: PA PB PC PD PE } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:120:14 [INFO] [stdout] | [INFO] [stdout] 120 | def { n: 06 names: PA PB PC PD PE PF } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 120 - def { n: 06 names: PA PB PC PD PE PF } [INFO] [stdout] 120 + def { n: 6 names: PA PB PC PD PE PF } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 120 | def { n: 0o6 names: PA PB PC PD PE PF } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:121:14 [INFO] [stdout] | [INFO] [stdout] 121 | def { n: 07 names: PA PB PC PD PE PF PG } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 121 - def { n: 07 names: PA PB PC PD PE PF PG } [INFO] [stdout] 121 + def { n: 7 names: PA PB PC PD PE PF PG } [INFO] [stdout] | [INFO] [stdout] help: if you mean to use an octal constant, use `0o` [INFO] [stdout] | [INFO] [stdout] 121 | def { n: 0o7 names: PA PB PC PD PE PF PG } [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this is a decimal constant [INFO] [stdout] --> src/function/mod.rs:122:14 [INFO] [stdout] | [INFO] [stdout] 122 | def { n: 08 names: PA PB PC PD PE PF PG PH } [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stdout] help: if you mean to use a decimal constant, remove the `0` to avoid confusion [INFO] [stdout] | [INFO] [stdout] 122 - def { n: 08 names: PA PB PC PD PE PF PG PH } [INFO] [stdout] 122 + def { n: 8 names: PA PB PC PD PE PF PG PH } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | //! error types and using Sync with std::sync mechanisms where possible. [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] 16 | //! error types and using Sync with std::sync mechanisms where possible. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/context.rs:93:14 [INFO] [stdout] | [INFO] [stdout] 93 | .map(|(index, v)| v.map(|(var_index, var)| (index, var_index, var))) [INFO] [stdout] | ______________^ [INFO] [stdout] 94 | | .flatten() [INFO] [stdout] | |______________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|(index, v)| v.map(|(var_index, var)| (index, var_index, var)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/engine/context.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | / self.in_use_variables.iter_mut().rev() [INFO] [stdout] 88 | | .map(|(block_level, var)| [INFO] [stdout] 89 | | (*block_level, var.iter_mut().enumerate().rev().filter(|(_, var)| var.name.eq(variable_name)).next()) [INFO] [stdout] ... | [INFO] [stdout] 92 | | .next() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 ~ self.in_use_variables.iter_mut().rev() [INFO] [stdout] 88 + .map(|(block_level, var)| [INFO] [stdout] 89 + (*block_level, var.iter_mut().enumerate().rev().filter(|(_, var)| var.name.eq(variable_name)).next()) [INFO] [stdout] 90 + ).find(|(_, var)| var.is_some()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/engine/context.rs:89:32 [INFO] [stdout] | [INFO] [stdout] 89 | (*block_level, var.iter_mut().enumerate().rev().filter(|(_, var)| var.name.eq(variable_name)).next()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `var.iter_mut().enumerate().rev().find(|(_, var)| var.name.eq(variable_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/engine/context.rs:217:55 [INFO] [stdout] | [INFO] [stdout] 217 | let parsed = SimpleParser::parse(Rule::ident, &*name); [INFO] [stdout] | ^^^^^^ help: try: `&name` [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: redundant closure [INFO] [stdout] --> src/engine/mod.rs:206:22 [INFO] [stdout] | [INFO] [stdout] 206 | .map_err(|e| ParsingError::Grammar(e))? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ParsingError::Grammar` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&str>` which implements the `Copy` trait [INFO] [stdout] --> src/engine/mod.rs:226:40 [INFO] [stdout] | [INFO] [stdout] 226 | if let Some(module_name) = module_name.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `module_name` [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: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:228:22 [INFO] [stdout] | [INFO] [stdout] 228 | .map(|assoc_map| assoc_map.get(module_name) [INFO] [stdout] | ______________________^ [INFO] [stdout] 229 | | .map(|module_map| module_map.get(function_name))) [INFO] [stdout] 230 | | .flatten().flatten() [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] help: try replacing `map` with `and_then` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 228 ~ .and_then(|assoc_map| assoc_map.get(module_name) [INFO] [stdout] 229 ~ .map(|module_map| module_map.get(function_name))).flatten() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:233:22 [INFO] [stdout] | [INFO] [stdout] 233 | .map(|assoc_map| assoc_map.get(function_name)).flatten(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|assoc_map| assoc_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:236:22 [INFO] [stdout] | [INFO] [stdout] 236 | .map(|assoc_map| assoc_map.iter() [INFO] [stdout] | ______________________^ [INFO] [stdout] 237 | | .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] 238 | | .next() [INFO] [stdout] 239 | | ).flatten().flatten(); [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] help: try replacing `map` with `and_then` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 236 ~ .and_then(|assoc_map| assoc_map.iter() [INFO] [stdout] 237 + .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] 238 ~ .next()).flatten(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/engine/mod.rs:236:38 [INFO] [stdout] | [INFO] [stdout] 236 | .map(|assoc_map| assoc_map.iter() [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 237 | | .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] | |_____________________________________________________________________________^ help: try: `assoc_map.values().map(|module_map| module_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&str>` which implements the `Copy` trait [INFO] [stdout] --> src/engine/mod.rs:243:40 [INFO] [stdout] | [INFO] [stdout] 243 | if let Some(module_name) = module_name.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `module_name` [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: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:245:22 [INFO] [stdout] | [INFO] [stdout] 245 | .map(|module_map| module_map.get(function_name)) [INFO] [stdout] | ______________________^ [INFO] [stdout] 246 | | .flatten() [INFO] [stdout] | |______________________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|module_map| module_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/engine/mod.rs:250:51 [INFO] [stdout] | [INFO] [stdout] 250 | let resolve_from_user_functions = self.functions.iter() [INFO] [stdout] | ___________________________________________________^ [INFO] [stdout] 251 | | .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] | |_________________________________________________________________________^ help: try: `self.functions.values().map(|module_map| module_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::Range` [INFO] [stdout] --> src/execution/optimized_ast.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | (self.start..(self.start + self.len)).into_iter() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(self.start..(self.start + self.len))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/execution/optimized_ast.rs:138:40 [INFO] [stdout] | [INFO] [stdout] 138 | self.blocks.extend(if_blocks.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 138 - self.blocks.extend(if_blocks.into_iter()); [INFO] [stdout] 138 + self.blocks.extend(if_blocks); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/execution/optimized_ast.rs:156:28 [INFO] [stdout] | [INFO] [stdout] 156 | self.blocks.extend(blocks.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 156 - self.blocks.extend(blocks.into_iter()); [INFO] [stdout] 156 + self.blocks.extend(blocks); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/execution/optimized_ast.rs:180:28 [INFO] [stdout] | [INFO] [stdout] 180 | self.values.extend(values.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 180 - self.values.extend(values.into_iter()); [INFO] [stdout] 180 + self.values.extend(values); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `value::MoonValue` [INFO] [stdout] --> src/execution/optimized_ast.rs:219:114 [INFO] [stdout] | [INFO] [stdout] 219 | ... OptimizedVariable::Value(variable.into().into()) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `variable.into()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:227:84 [INFO] [stdout] | [INFO] [stdout] 227 | if let Some(res) = self.context.execute_block(&self.ast.blocks[block], &self.ast)? { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [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] --> src/execution/optimized_ast.rs:240:66 [INFO] [stdout] | [INFO] [stdout] 240 | if self.context.resolve_value(condition.dir, &self.ast)?.try_into() [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:250:78 [INFO] [stdout] | [INFO] [stdout] 250 | ... if self.context.resolve_value(condition.dir, &self.ast)?.try_into() [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:262:155 [INFO] [stdout] | [INFO] [stdout] 262 | ...alue(self.context.resolve_value(value.dir, &self.ast)?) } [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:265:127 [INFO] [stdout] | [INFO] [stdout] 265 | ...dir| self.context.resolve_value(value_dir, &self.ast)))?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:268:71 [INFO] [stdout] | [INFO] [stdout] 268 | let value = self.context.resolve_value(value.dir, &self.ast)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [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 `bool` which implements the `Copy` trait [INFO] [stdout] --> src/execution/optimized_ast.rs:325:66 [INFO] [stdout] | [INFO] [stdout] 325 | OptimizedFullValue::Boolean(v) => MoonValue::Boolean(v.clone()), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i128` which implements the `Copy` trait [INFO] [stdout] --> src/execution/optimized_ast.rs:326:66 [INFO] [stdout] | [INFO] [stdout] 326 | OptimizedFullValue::Integer(v) => MoonValue::Integer(v.clone()), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/execution/optimized_ast.rs:327:66 [INFO] [stdout] | [INFO] [stdout] 327 | OptimizedFullValue::Decimal(v) => MoonValue::Decimal(v.clone()), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/ast.rs:157:59 [INFO] [stdout] | [INFO] [stdout] 157 | if let Some(res) = self.context.execute_block(&block)? { [INFO] [stdout] | ^^^^^^ help: change this to: `block` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:41:40 [INFO] [stdout] | [INFO] [stdout] 41 | pub(crate) fn get_unary_operators() -> Vec<(&'static str, fn(MoonValue) -> Result)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:63:41 [INFO] [stdout] | [INFO] [stdout] 63 | pub(crate) fn get_binary_operators() -> Vec<(&'static str, fn(MoonValue, MoonValue) -> Result)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | Ok(res) => { return res; } [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] 83 - Ok(res) => { return res; } [INFO] [stdout] 83 + Ok(res) => { res} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: order comparisons between booleans can be simplified [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:199:70 [INFO] [stdout] | [INFO] [stdout] 199 | ... |bool_1, bool_2| Ok(MoonValue::Boolean(bool_1 > bool_2)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `bool_1 & !bool_2` [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: order comparisons between booleans can be simplified [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:206:70 [INFO] [stdout] | [INFO] [stdout] 206 | ... |bool_1, bool_2| Ok(MoonValue::Boolean(bool_1 < bool_2)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `!bool_1 & bool_2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/reduced_value_impl/mod.rs:20:26 [INFO] [stdout] | [INFO] [stdout] 20 | .map(|reduced_value| Self::from(reduced_value)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Self::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:58:44 [INFO] [stdout] | [INFO] [stdout] 58 | error_union.extend(rhs.err().unwrap_or_default().into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 58 - error_union.extend(rhs.err().unwrap_or_default().into_iter()); [INFO] [stdout] 58 + error_union.extend(rhs.err().unwrap_or_default()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:69:65 [INFO] [stdout] | [INFO] [stdout] 69 | ... function.function.execute_into_iter([Ok(lhs), Ok(rhs)].into_iter()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> src/function/mod.rs:49:138 [INFO] [stdout] | [INFO] [stdout] 49 | ...Value, RuntimeError> where ValuesIter: IntoIterator> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 69 - function.function.execute_into_iter([Ok(lhs), Ok(rhs)].into_iter()) [INFO] [stdout] 69 + function.function.execute_into_iter([Ok(lhs), Ok(rhs)]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `pest::iterators::Pairs<'_, parsing::Rule>` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:98:32 [INFO] [stdout] | [INFO] [stdout] 98 | for index_token in token.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `token` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:122:50 [INFO] [stdout] | [INFO] [stdout] 122 | .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 122 - .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] 122 + .on_errors(|error| errors.extend(error)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:141:79 [INFO] [stdout] | [INFO] [stdout] 141 | let (t_object_type, t_object) = context.find_variable(¤t_token_as_str) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `current_token_as_str` [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: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:166:50 [INFO] [stdout] | [INFO] [stdout] 166 | .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 166 - .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] 166 + .on_errors(|error| errors.extend(error)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'fn_info [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:208:34 [INFO] [stdout] | [INFO] [stdout] 208 | fn decompress_function<'fn_name, 'fn_info>(function_name: &'fn_name str, args: Vec, function: &'fn_info FunctionInfo) ->... [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 208 - fn decompress_function<'fn_name, 'fn_info>(function_name: &'fn_name str, args: Vec, function: &'fn_info FunctionInfo) -> Result>> { [INFO] [stdout] 208 + fn decompress_function<'fn_name>(function_name: &'fn_name str, args: Vec, function: &FunctionInfo) -> Result>> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `prepend_on_last_property` after checking its variant with `is_none` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:243:97 [INFO] [stdout] | [INFO] [stdout] 243 | let prepend = if !is_last_ident || prepend_on_last_property.is_none() { "get_" } else { prepend_on_last_property.unwrap() }; [INFO] [stdout] | ---------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | the check is happening here [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:246:68 [INFO] [stdout] | [INFO] [stdout] 246 | let function = base.find_function(type_name.clone(), None, &*prepended) [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&prepended` [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: this loop could be written as a `for` loop [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | while let Some(current_token) = pairs.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for current_token in pairs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `parsed_statements.get(0)` [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:136:31 [INFO] [stdout] | [INFO] [stdout] 136 | let first_block = parsed_statements.get(0).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parsed_statements.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:158:74 [INFO] [stdout] | [INFO] [stdout] 158 | let value = build_value_token(pairs.next().unwrap(), &base, context).add_where_error(token_str, line_and_column)?; [INFO] [stdout] | ^^^^^ help: change this to: `base` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:186:74 [INFO] [stdout] | [INFO] [stdout] 186 | let value = build_value_token(pairs.next().unwrap(), &base, context).add_where_error(token_str, line_and_column)?; [INFO] [stdout] | ^^^^^ help: change this to: `base` [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: manual saturating arithmetic [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:233:28 [INFO] [stdout] | [INFO] [stdout] 233 | let last_token_index = statements_token.len().checked_sub(1).unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `statements_token.len().saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `flat_map` with an identity function [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:240:10 [INFO] [stdout] | [INFO] [stdout] 240 | .flat_map(|statements| statements) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#flat_map_identity [INFO] [stdout] = note: `#[warn(clippy::flat_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/parsing/error.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | /// which uses [NO_COLOR](https://no-color.org/). [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 34 | /// which uses [NO_COLOR](https://no-color.org/). [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/parsing/error.rs:222:62 [INFO] [stdout] | [INFO] [stdout] 222 | ... .unwrap_or_else(|| format!(" in any module")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `" in any module".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/parsing/mod.rs:240:15 [INFO] [stdout] | [INFO] [stdout] 240 | let end = type_in_use.chars().enumerate().filter(|(_, char)| { [INFO] [stdout] | _______________^ [INFO] [stdout] 241 | | match char { [INFO] [stdout] 242 | | '(' | '<' => opened_brackets_and_diamonds += 1, [INFO] [stdout] 243 | | ')' | '>' => opened_brackets_and_diamonds -= 1, [INFO] [stdout] ... | [INFO] [stdout] 247 | | false [INFO] [stdout] 248 | | }).next().unwrap().0; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_custom_unnamed_type` is never used [INFO] [stdout] --> src/lib.rs:194:8 [INFO] [stdout] | [INFO] [stdout] 194 | fn test_custom_unnamed_type() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | //! error types and using Sync with std::sync mechanisms where possible. [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] 16 | //! error types and using Sync with std::sync mechanisms where possible. [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/parsing/mod.rs:300:109 [INFO] [stdout] | [INFO] [stdout] 300 | fn optimize_variables(context: &mut ContextBuilder, inlineable_variables: Vec<(String, usize)>, statements: &mut Vec) ->... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 300 - fn optimize_variables(context: &mut ContextBuilder, inlineable_variables: Vec<(String, usize)>, statements: &mut Vec) -> (Vec, HashMap) { [INFO] [stdout] 300 + fn optimize_variables(context: &mut ContextBuilder, inlineable_variables: Vec<(String, usize)>, statements: &mut [Statement]) -> (Vec, HashMap) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/parsing/mod.rs:316:29 [INFO] [stdout] | [INFO] [stdout] 316 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 317 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 318 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 319 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 320 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 321 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 315 ~ Statement::UnoptimizedAssignament { block_level, var_index, .. } [INFO] [stdout] 316 ~ if !used_variables.contains_key(&(*block_level, *var_index)) => { [INFO] [stdout] 317 | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... [INFO] [stdout] 320 | used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 321 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:314:21 [INFO] [stdout] | [INFO] [stdout] 314 | / match block { [INFO] [stdout] 315 | | Statement::UnoptimizedAssignament { block_level, var_index, .. } => { [INFO] [stdout] 316 | | if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 317 | | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... | [INFO] [stdout] 323 | | _ => {} [INFO] [stdout] 324 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 314 ~ if let Statement::UnoptimizedAssignament { block_level, var_index, .. } = block { [INFO] [stdout] 315 + if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 316 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 317 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 318 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 319 + used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 320 + } [INFO] [stdout] 321 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/parsing/mod.rs:316:29 [INFO] [stdout] | [INFO] [stdout] 316 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 317 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 318 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 319 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 320 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 321 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 316 ~ used_variables.entry((*block_level, *var_index)).or_insert_with(|| { [INFO] [stdout] 317 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 318 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 319 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 320 + variable [INFO] [stdout] 321 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/parsing/mod.rs:329:29 [INFO] [stdout] | [INFO] [stdout] 329 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 330 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 331 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 332 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 333 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 334 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 328 ~ FullValue::Variable { block_level, var_index } [INFO] [stdout] 329 ~ if !used_variables.contains_key(&(*block_level, *var_index)) => { [INFO] [stdout] 330 | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... [INFO] [stdout] 333 | used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:327:21 [INFO] [stdout] | [INFO] [stdout] 327 | / match value { [INFO] [stdout] 328 | | FullValue::Variable { block_level, var_index } => { [INFO] [stdout] 329 | | if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 330 | | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... | [INFO] [stdout] 336 | | _ => {} [INFO] [stdout] 337 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 327 ~ if let FullValue::Variable { block_level, var_index } = value { [INFO] [stdout] 328 + if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 329 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 330 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 331 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 332 + used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 333 + } [INFO] [stdout] 334 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/parsing/mod.rs:329:29 [INFO] [stdout] | [INFO] [stdout] 329 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 330 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 331 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 332 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 333 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 334 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 329 ~ used_variables.entry((*block_level, *var_index)).or_insert_with(|| { [INFO] [stdout] 330 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 331 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 332 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 333 + variable [INFO] [stdout] 334 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:365:21 [INFO] [stdout] | [INFO] [stdout] 365 | / ... match block { [INFO] [stdout] 366 | | ... Statement::UnoptimizedAssignament { block_level, var_index, value } => { [INFO] [stdout] 367 | | ... let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 368 | | ... log::trace!("Substitued variable of assignament for block {block_level} and index {var_index} for simplified index ... [INFO] [stdout] ... | [INFO] [stdout] 371 | | ... _ => {} [INFO] [stdout] 372 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 365 ~ if let Statement::UnoptimizedAssignament { block_level, var_index, value } = block { [INFO] [stdout] 366 + let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 367 + log::trace!("Substitued variable of assignament for block {block_level} and index {var_index} for simplified index {direct_index}"); [INFO] [stdout] 368 + *block = Statement::OptimizedAssignament { var_index: direct_index, value: mem::replace(value, FullValue::Null) }; [INFO] [stdout] 369 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/context.rs:93:14 [INFO] [stdout] | [INFO] [stdout] 93 | .map(|(index, v)| v.map(|(var_index, var)| (index, var_index, var))) [INFO] [stdout] | ______________^ [INFO] [stdout] 94 | | .flatten() [INFO] [stdout] | |______________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|(index, v)| v.map(|(var_index, var)| (index, var_index, var)))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:375:21 [INFO] [stdout] | [INFO] [stdout] 375 | / ... match value { [INFO] [stdout] 376 | | ... FullValue::Variable { block_level, var_index } => { [INFO] [stdout] 377 | | ... let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 378 | | ... log::trace!("Substitued variable of value for block {block_level} and index {var_index} for simplified index {direc... [INFO] [stdout] ... | [INFO] [stdout] 381 | | ... _ => {} [INFO] [stdout] 382 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 375 ~ if let FullValue::Variable { block_level, var_index } = value { [INFO] [stdout] 376 + let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 377 + log::trace!("Substitued variable of value for block {block_level} and index {var_index} for simplified index {direct_index}"); [INFO] [stdout] 378 + *value = FullValue::DirectVariable(direct_index); [INFO] [stdout] 379 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/engine/context.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 87 | / self.in_use_variables.iter_mut().rev() [INFO] [stdout] 88 | | .map(|(block_level, var)| [INFO] [stdout] 89 | | (*block_level, var.iter_mut().enumerate().rev().filter(|(_, var)| var.name.eq(variable_name)).next()) [INFO] [stdout] ... | [INFO] [stdout] 92 | | .next() [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] = note: `#[warn(clippy::filter_next)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 87 ~ self.in_use_variables.iter_mut().rev() [INFO] [stdout] 88 + .map(|(block_level, var)| [INFO] [stdout] 89 + (*block_level, var.iter_mut().enumerate().rev().filter(|(_, var)| var.name.eq(variable_name)).next()) [INFO] [stdout] 90 + ).find(|(_, var)| var.is_some()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/engine/context.rs:89:32 [INFO] [stdout] | [INFO] [stdout] 89 | (*block_level, var.iter_mut().enumerate().rev().filter(|(_, var)| var.name.eq(variable_name)).next()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `var.iter_mut().enumerate().rev().find(|(_, var)| var.name.eq(variable_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/parsing/mod.rs:388:46 [INFO] [stdout] | [INFO] [stdout] 388 | let mut used_variables_and_new_indexes = used_variables_and_new_indexes.into_iter() [INFO] [stdout] | ______________________________________________^ [INFO] [stdout] 389 | | .map(|(_, variable)| variable) [INFO] [stdout] | |______________________________________^ help: try: `used_variables_and_new_indexes.into_values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` branch is empty [INFO] [stdout] --> src/parsing/mod.rs:400:5 [INFO] [stdout] | [INFO] [stdout] 400 | if token.as_rule() != Rule::BASE_STATEMENTS {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can remove it: `token.as_rule() != Rule::BASE_STATEMENTS;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_ifs [INFO] [stdout] = note: `#[warn(clippy::needless_ifs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `context.in_use_variables.get(0)` [INFO] [stdout] --> src/parsing/mod.rs:403:32 [INFO] [stdout] | [INFO] [stdout] 403 | let inlineable_variables = context.in_use_variables.get(0).map(|(_, variables)| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `context.in_use_variables.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/parsing/mod.rs:416:58 [INFO] [stdout] | [INFO] [stdout] 416 | fn replace_last_fn_call_for_return_statement(statements: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 416 - fn replace_last_fn_call_for_return_statement(statements: &mut Vec) { [INFO] [stdout] 416 + fn replace_last_fn_call_for_return_statement(statements: &mut [Statement]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/parsing/mod.rs:418:26 [INFO] [stdout] | [INFO] [stdout] 418 | let is_fn_call = match last_statement { [INFO] [stdout] | __________________________^ [INFO] [stdout] 419 | | Statement::FnCall(_) => true, [INFO] [stdout] 420 | | _ => false, [INFO] [stdout] 421 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 418 - let is_fn_call = match last_statement { [INFO] [stdout] 419 - Statement::FnCall(_) => true, [INFO] [stdout] 420 - _ => false, [INFO] [stdout] 421 - }; [INFO] [stdout] 418 + let is_fn_call = matches!(last_statement, Statement::FnCall(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/function/mod.rs:23:15 [INFO] [stdout] | [INFO] [stdout] 23 | function: Arc>) -> Result + Send + Sync>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/engine/context.rs:217:55 [INFO] [stdout] | [INFO] [stdout] 217 | let parsed = SimpleParser::parse(Rule::ident, &*name); [INFO] [stdout] | ^^^^^^ help: try: `&name` [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: this lifetime isn't used in the function definition [INFO] [stdout] --> src/function/mod.rs:44:32 [INFO] [stdout] | [INFO] [stdout] 44 | pub(crate) fn execute_iter<'values, ValuesIter>(&self, mut values: ValuesIter) -> Result where ValuesIt... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/function/mod.rs:49:37 [INFO] [stdout] | [INFO] [stdout] 49 | pub(crate) fn execute_into_iter<'values, ValuesIter>(&self, values: ValuesIter) -> Result where ValuesI... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/engine/mod.rs:206:22 [INFO] [stdout] | [INFO] [stdout] 206 | .map_err(|e| ParsingError::Grammar(e))? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `ParsingError::Grammar` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&str>` which implements the `Copy` trait [INFO] [stdout] --> src/engine/mod.rs:226:40 [INFO] [stdout] | [INFO] [stdout] 226 | if let Some(module_name) = module_name.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `module_name` [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: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:228:22 [INFO] [stdout] | [INFO] [stdout] 228 | .map(|assoc_map| assoc_map.get(module_name) [INFO] [stdout] | ______________________^ [INFO] [stdout] 229 | | .map(|module_map| module_map.get(function_name))) [INFO] [stdout] 230 | | .flatten().flatten() [INFO] [stdout] | |______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] help: try replacing `map` with `and_then` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 228 ~ .and_then(|assoc_map| assoc_map.get(module_name) [INFO] [stdout] 229 ~ .map(|module_map| module_map.get(function_name))).flatten() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:233:22 [INFO] [stdout] | [INFO] [stdout] 233 | .map(|assoc_map| assoc_map.get(function_name)).flatten(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|assoc_map| assoc_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:236:22 [INFO] [stdout] | [INFO] [stdout] 236 | .map(|assoc_map| assoc_map.iter() [INFO] [stdout] | ______________________^ [INFO] [stdout] 237 | | .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] 238 | | .next() [INFO] [stdout] 239 | | ).flatten().flatten(); [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] help: try replacing `map` with `and_then` and remove the `.flatten()` [INFO] [stdout] | [INFO] [stdout] 236 ~ .and_then(|assoc_map| assoc_map.iter() [INFO] [stdout] 237 + .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] 238 ~ .next()).flatten(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/engine/mod.rs:236:38 [INFO] [stdout] | [INFO] [stdout] 236 | .map(|assoc_map| assoc_map.iter() [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 237 | | .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] | |_____________________________________________________________________________^ help: try: `assoc_map.values().map(|module_map| module_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option<&str>` which implements the `Copy` trait [INFO] [stdout] --> src/engine/mod.rs:243:40 [INFO] [stdout] | [INFO] [stdout] 243 | if let Some(module_name) = module_name.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `module_name` [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: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/engine/mod.rs:245:22 [INFO] [stdout] | [INFO] [stdout] 245 | .map(|module_map| module_map.get(function_name)) [INFO] [stdout] | ______________________^ [INFO] [stdout] 246 | | .flatten() [INFO] [stdout] | |______________________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|module_map| module_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/engine/mod.rs:250:51 [INFO] [stdout] | [INFO] [stdout] 250 | let resolve_from_user_functions = self.functions.iter() [INFO] [stdout] | ___________________________________________________^ [INFO] [stdout] 251 | | .map(|(_, module_map)| module_map.get(function_name)) [INFO] [stdout] | |_________________________________________________________________________^ help: try: `self.functions.values().map(|module_map| module_map.get(function_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::ops::Range` [INFO] [stdout] --> src/execution/optimized_ast.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | (self.start..(self.start + self.len)).into_iter() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(self.start..(self.start + self.len))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/execution/optimized_ast.rs:138:40 [INFO] [stdout] | [INFO] [stdout] 138 | self.blocks.extend(if_blocks.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 138 - self.blocks.extend(if_blocks.into_iter()); [INFO] [stdout] 138 + self.blocks.extend(if_blocks); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/execution/optimized_ast.rs:156:28 [INFO] [stdout] | [INFO] [stdout] 156 | self.blocks.extend(blocks.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 156 - self.blocks.extend(blocks.into_iter()); [INFO] [stdout] 156 + self.blocks.extend(blocks); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/execution/optimized_ast.rs:180:28 [INFO] [stdout] | [INFO] [stdout] 180 | self.values.extend(values.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 180 - self.values.extend(values.into_iter()); [INFO] [stdout] 180 + self.values.extend(values); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `value::MoonValue` [INFO] [stdout] --> src/execution/optimized_ast.rs:219:114 [INFO] [stdout] | [INFO] [stdout] 219 | ... OptimizedVariable::Value(variable.into().into()) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `variable.into()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:227:84 [INFO] [stdout] | [INFO] [stdout] 227 | if let Some(res) = self.context.execute_block(&self.ast.blocks[block], &self.ast)? { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [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] --> src/execution/optimized_ast.rs:240:66 [INFO] [stdout] | [INFO] [stdout] 240 | if self.context.resolve_value(condition.dir, &self.ast)?.try_into() [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:250:78 [INFO] [stdout] | [INFO] [stdout] 250 | ... if self.context.resolve_value(condition.dir, &self.ast)?.try_into() [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:262:155 [INFO] [stdout] | [INFO] [stdout] 262 | ...alue(self.context.resolve_value(value.dir, &self.ast)?) } [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:265:127 [INFO] [stdout] | [INFO] [stdout] 265 | ...dir| self.context.resolve_value(value_dir, &self.ast)))?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/optimized_ast.rs:268:71 [INFO] [stdout] | [INFO] [stdout] 268 | let value = self.context.resolve_value(value.dir, &self.ast)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `self.ast` [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 `bool` which implements the `Copy` trait [INFO] [stdout] --> src/execution/optimized_ast.rs:325:66 [INFO] [stdout] | [INFO] [stdout] 325 | OptimizedFullValue::Boolean(v) => MoonValue::Boolean(v.clone()), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `i128` which implements the `Copy` trait [INFO] [stdout] --> src/execution/optimized_ast.rs:326:66 [INFO] [stdout] | [INFO] [stdout] 326 | OptimizedFullValue::Integer(v) => MoonValue::Integer(v.clone()), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f64` which implements the `Copy` trait [INFO] [stdout] --> src/execution/optimized_ast.rs:327:66 [INFO] [stdout] | [INFO] [stdout] 327 | OptimizedFullValue::Decimal(v) => MoonValue::Decimal(v.clone()), [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*v` [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: deref which would be done by auto-deref [INFO] [stdout] --> src/value.rs:46:53 [INFO] [stdout] | [INFO] [stdout] 46 | MoonValue::Boolean(bool) => f.write_str(&*bool.to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&bool.to_string()` [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 which would be done by auto-deref [INFO] [stdout] --> src/value.rs:47:52 [INFO] [stdout] | [INFO] [stdout] 47 | MoonValue::Integer(int) => f.write_str(&*int.to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `&int.to_string()` [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 which would be done by auto-deref [INFO] [stdout] --> src/value.rs:48:52 [INFO] [stdout] | [INFO] [stdout] 48 | MoonValue::Decimal(dec) => f.write_str(&*dec.to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `&dec.to_string()` [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 which would be done by auto-deref [INFO] [stdout] --> src/value.rs:63:29 [INFO] [stdout] | [INFO] [stdout] 63 | f.write_str(&*result) [INFO] [stdout] | ^^^^^^^^ help: try: `&result` [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: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/value.rs:130:22 [INFO] [stdout] | [INFO] [stdout] 130 | .map(|know_value| know_value.type_name(context_builder)) [INFO] [stdout] | ______________________^ [INFO] [stdout] 131 | | .flatten(); [INFO] [stdout] | |______________________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|know_value| know_value.type_name(context_builder))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/execution/mod.rs:46:22 [INFO] [stdout] | [INFO] [stdout] 46 | fn explain_error(&self) -> SimpleErrorExplanation { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 46 | fn explain_error(&self) -> SimpleErrorExplanation<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/execution/ast.rs:157:59 [INFO] [stdout] | [INFO] [stdout] 157 | if let Some(res) = self.context.execute_block(&block)? { [INFO] [stdout] | ^^^^^^ help: change this to: `block` [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: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parsing/error.rs:196:22 [INFO] [stdout] | [INFO] [stdout] 196 | fn explain_error(&self) -> SimpleErrorExplanation { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 196 | fn explain_error(&self) -> SimpleErrorExplanation<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:41:40 [INFO] [stdout] | [INFO] [stdout] 41 | pub(crate) fn get_unary_operators() -> Vec<(&'static str, fn(MoonValue) -> Result)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:63:41 [INFO] [stdout] | [INFO] [stdout] 63 | pub(crate) fn get_binary_operators() -> Vec<(&'static str, fn(MoonValue, MoonValue) -> Result)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:83:30 [INFO] [stdout] | [INFO] [stdout] 83 | Ok(res) => { return res; } [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] 83 - Ok(res) => { return res; } [INFO] [stdout] 83 + Ok(res) => { res} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: order comparisons between booleans can be simplified [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:199:70 [INFO] [stdout] | [INFO] [stdout] 199 | ... |bool_1, bool_2| Ok(MoonValue::Boolean(bool_1 > bool_2)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `bool_1 & !bool_2` [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: order comparisons between booleans can be simplified [INFO] [stdout] --> src/reduced_value_impl/impl_operators.rs:206:70 [INFO] [stdout] | [INFO] [stdout] 206 | ... |bool_1, bool_2| Ok(MoonValue::Boolean(bool_1 < bool_2)), [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `!bool_1 & bool_2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/reduced_value_impl/mod.rs:20:26 [INFO] [stdout] | [INFO] [stdout] 20 | .map(|reduced_value| Self::from(reduced_value)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `Self::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:58:44 [INFO] [stdout] | [INFO] [stdout] 58 | error_union.extend(rhs.err().unwrap_or_default().into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 58 - error_union.extend(rhs.err().unwrap_or_default().into_iter()); [INFO] [stdout] 58 + error_union.extend(rhs.err().unwrap_or_default()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:69:65 [INFO] [stdout] | [INFO] [stdout] 69 | ... function.function.execute_into_iter([Ok(lhs), Ok(rhs)].into_iter()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> src/function/mod.rs:49:138 [INFO] [stdout] | [INFO] [stdout] 49 | ...Value, RuntimeError> where ValuesIter: IntoIterator> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 69 - function.function.execute_into_iter([Ok(lhs), Ok(rhs)].into_iter()) [INFO] [stdout] 69 + function.function.execute_into_iter([Ok(lhs), Ok(rhs)]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `pest::iterators::Pairs<'_, parsing::Rule>` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:98:32 [INFO] [stdout] | [INFO] [stdout] 98 | for index_token in token.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `token` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:122:50 [INFO] [stdout] | [INFO] [stdout] 122 | .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 122 - .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] 122 + .on_errors(|error| errors.extend(error)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:141:79 [INFO] [stdout] | [INFO] [stdout] 141 | let (t_object_type, t_object) = context.find_variable(¤t_token_as_str) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `current_token_as_str` [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: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:166:50 [INFO] [stdout] | [INFO] [stdout] 166 | .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/91021ccc790478a1a89c003e7d32b8d155ae6aae/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 166 - .on_errors(|error| errors.extend(error.into_iter())) [INFO] [stdout] 166 + .on_errors(|error| errors.extend(error)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'fn_info [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:208:34 [INFO] [stdout] | [INFO] [stdout] 208 | fn decompress_function<'fn_name, 'fn_info>(function_name: &'fn_name str, args: Vec, function: &'fn_info FunctionInfo) ->... [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 208 - fn decompress_function<'fn_name, 'fn_info>(function_name: &'fn_name str, args: Vec, function: &'fn_info FunctionInfo) -> Result>> { [INFO] [stdout] 208 + fn decompress_function<'fn_name>(function_name: &'fn_name str, args: Vec, function: &FunctionInfo) -> Result>> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `prepend_on_last_property` after checking its variant with `is_none` [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:243:97 [INFO] [stdout] | [INFO] [stdout] 243 | let prepend = if !is_last_ident || prepend_on_last_property.is_none() { "get_" } else { prepend_on_last_property.unwrap() }; [INFO] [stdout] | ---------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | the check is happening here [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/parsing/value_parsing/mod.rs:246:68 [INFO] [stdout] | [INFO] [stdout] 246 | let function = base.find_function(type_name.clone(), None, &*prepended) [INFO] [stdout] | ^^^^^^^^^^^ help: try: `&prepended` [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: this loop could be written as a `for` loop [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | while let Some(current_token) = pairs.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for current_token in pairs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `parsed_statements.get(0)` [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:136:31 [INFO] [stdout] | [INFO] [stdout] 136 | let first_block = parsed_statements.get(0).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parsed_statements.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:158:74 [INFO] [stdout] | [INFO] [stdout] 158 | let value = build_value_token(pairs.next().unwrap(), &base, context).add_where_error(token_str, line_and_column)?; [INFO] [stdout] | ^^^^^ help: change this to: `base` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:186:74 [INFO] [stdout] | [INFO] [stdout] 186 | let value = build_value_token(pairs.next().unwrap(), &base, context).add_where_error(token_str, line_and_column)?; [INFO] [stdout] | ^^^^^ help: change this to: `base` [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: manual saturating arithmetic [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:233:28 [INFO] [stdout] | [INFO] [stdout] 233 | let last_token_index = statements_token.len().checked_sub(1).unwrap_or(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `statements_token.len().saturating_sub(1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic [INFO] [stdout] = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `flat_map` with an identity function [INFO] [stdout] --> src/parsing/statement_parsing/mod.rs:240:10 [INFO] [stdout] | [INFO] [stdout] 240 | .flat_map(|statements| statements) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#flat_map_identity [INFO] [stdout] = note: `#[warn(clippy::flat_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/parsing/error.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | /// which uses [NO_COLOR](https://no-color.org/). [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 34 | /// which uses [NO_COLOR](https://no-color.org/). [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/parsing/error.rs:222:62 [INFO] [stdout] | [INFO] [stdout] 222 | ... .unwrap_or_else(|| format!(" in any module")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `" in any module".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `filter(..).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(..)` instead [INFO] [stdout] --> src/parsing/mod.rs:240:15 [INFO] [stdout] | [INFO] [stdout] 240 | let end = type_in_use.chars().enumerate().filter(|(_, char)| { [INFO] [stdout] | _______________^ [INFO] [stdout] 241 | | match char { [INFO] [stdout] 242 | | '(' | '<' => opened_brackets_and_diamonds += 1, [INFO] [stdout] 243 | | ')' | '>' => opened_brackets_and_diamonds -= 1, [INFO] [stdout] ... | [INFO] [stdout] 247 | | false [INFO] [stdout] 248 | | }).next().unwrap().0; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/parsing/mod.rs:300:109 [INFO] [stdout] | [INFO] [stdout] 300 | fn optimize_variables(context: &mut ContextBuilder, inlineable_variables: Vec<(String, usize)>, statements: &mut Vec) ->... [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 300 - fn optimize_variables(context: &mut ContextBuilder, inlineable_variables: Vec<(String, usize)>, statements: &mut Vec) -> (Vec, HashMap) { [INFO] [stdout] 300 + fn optimize_variables(context: &mut ContextBuilder, inlineable_variables: Vec<(String, usize)>, statements: &mut [Statement]) -> (Vec, HashMap) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/parsing/mod.rs:316:29 [INFO] [stdout] | [INFO] [stdout] 316 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 317 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 318 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 319 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 320 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 321 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 315 ~ Statement::UnoptimizedAssignament { block_level, var_index, .. } [INFO] [stdout] 316 ~ if !used_variables.contains_key(&(*block_level, *var_index)) => { [INFO] [stdout] 317 | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... [INFO] [stdout] 320 | used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 321 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:314:21 [INFO] [stdout] | [INFO] [stdout] 314 | / match block { [INFO] [stdout] 315 | | Statement::UnoptimizedAssignament { block_level, var_index, .. } => { [INFO] [stdout] 316 | | if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 317 | | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... | [INFO] [stdout] 323 | | _ => {} [INFO] [stdout] 324 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 314 ~ if let Statement::UnoptimizedAssignament { block_level, var_index, .. } = block { [INFO] [stdout] 315 + if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 316 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 317 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 318 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 319 + used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 320 + } [INFO] [stdout] 321 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/parsing/mod.rs:316:29 [INFO] [stdout] | [INFO] [stdout] 316 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 317 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 318 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 319 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 320 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 321 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 316 ~ used_variables.entry((*block_level, *var_index)).or_insert_with(|| { [INFO] [stdout] 317 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 318 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 319 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 320 + variable [INFO] [stdout] 321 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/parsing/mod.rs:329:29 [INFO] [stdout] | [INFO] [stdout] 329 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 330 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 331 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 332 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 333 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 334 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 328 ~ FullValue::Variable { block_level, var_index } [INFO] [stdout] 329 ~ if !used_variables.contains_key(&(*block_level, *var_index)) => { [INFO] [stdout] 330 | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... [INFO] [stdout] 333 | used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:327:21 [INFO] [stdout] | [INFO] [stdout] 327 | / match value { [INFO] [stdout] 328 | | FullValue::Variable { block_level, var_index } => { [INFO] [stdout] 329 | | if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 330 | | log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] ... | [INFO] [stdout] 336 | | _ => {} [INFO] [stdout] 337 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 327 ~ if let FullValue::Variable { block_level, var_index } = value { [INFO] [stdout] 328 + if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 329 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 330 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 331 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 332 + used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 333 + } [INFO] [stdout] 334 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/parsing/mod.rs:329:29 [INFO] [stdout] | [INFO] [stdout] 329 | / ... if !used_variables.contains_key(&(*block_level, *var_index)) { [INFO] [stdout] 330 | | ... log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 331 | | ... let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 332 | | ... log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 333 | | ... used_variables.insert((*block_level, *var_index), variable); [INFO] [stdout] 334 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 329 ~ used_variables.entry((*block_level, *var_index)).or_insert_with(|| { [INFO] [stdout] 330 + log::trace!("Found used variable of block {block_level} and index {var_index}"); [INFO] [stdout] 331 + let variable = variables.remove(&(*block_level, *var_index)).unwrap(); [INFO] [stdout] 332 + log::trace!(" - Variable: {variable:?})"); [INFO] [stdout] 333 + variable [INFO] [stdout] 334 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:365:21 [INFO] [stdout] | [INFO] [stdout] 365 | / ... match block { [INFO] [stdout] 366 | | ... Statement::UnoptimizedAssignament { block_level, var_index, value } => { [INFO] [stdout] 367 | | ... let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 368 | | ... log::trace!("Substitued variable of assignament for block {block_level} and index {var_index} for simplified index ... [INFO] [stdout] ... | [INFO] [stdout] 371 | | ... _ => {} [INFO] [stdout] 372 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 365 ~ if let Statement::UnoptimizedAssignament { block_level, var_index, value } = block { [INFO] [stdout] 366 + let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 367 + log::trace!("Substitued variable of assignament for block {block_level} and index {var_index} for simplified index {direct_index}"); [INFO] [stdout] 368 + *block = Statement::OptimizedAssignament { var_index: direct_index, value: mem::replace(value, FullValue::Null) }; [INFO] [stdout] 369 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/parsing/mod.rs:375:21 [INFO] [stdout] | [INFO] [stdout] 375 | / ... match value { [INFO] [stdout] 376 | | ... FullValue::Variable { block_level, var_index } => { [INFO] [stdout] 377 | | ... let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 378 | | ... log::trace!("Substitued variable of value for block {block_level} and index {var_index} for simplified index {direc... [INFO] [stdout] ... | [INFO] [stdout] 381 | | ... _ => {} [INFO] [stdout] 382 | | ... } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 375 ~ if let FullValue::Variable { block_level, var_index } = value { [INFO] [stdout] 376 + let direct_index = used_variables_and_new_indexes.get(&(*block_level, *var_index)).unwrap().0; [INFO] [stdout] 377 + log::trace!("Substitued variable of value for block {block_level} and index {var_index} for simplified index {direct_index}"); [INFO] [stdout] 378 + *value = FullValue::DirectVariable(direct_index); [INFO] [stdout] 379 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/parsing/mod.rs:388:46 [INFO] [stdout] | [INFO] [stdout] 388 | let mut used_variables_and_new_indexes = used_variables_and_new_indexes.into_iter() [INFO] [stdout] | ______________________________________________^ [INFO] [stdout] 389 | | .map(|(_, variable)| variable) [INFO] [stdout] | |______________________________________^ help: try: `used_variables_and_new_indexes.into_values()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` branch is empty [INFO] [stdout] --> src/parsing/mod.rs:400:5 [INFO] [stdout] | [INFO] [stdout] 400 | if token.as_rule() != Rule::BASE_STATEMENTS {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can remove it: `token.as_rule() != Rule::BASE_STATEMENTS;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_ifs [INFO] [stdout] = note: `#[warn(clippy::needless_ifs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `context.in_use_variables.get(0)` [INFO] [stdout] --> src/parsing/mod.rs:403:32 [INFO] [stdout] | [INFO] [stdout] 403 | let inlineable_variables = context.in_use_variables.get(0).map(|(_, variables)| { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `context.in_use_variables.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/parsing/mod.rs:416:58 [INFO] [stdout] | [INFO] [stdout] 416 | fn replace_last_fn_call_for_return_statement(statements: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 416 - fn replace_last_fn_call_for_return_statement(statements: &mut Vec) { [INFO] [stdout] 416 + fn replace_last_fn_call_for_return_statement(statements: &mut [Statement]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/parsing/mod.rs:418:26 [INFO] [stdout] | [INFO] [stdout] 418 | let is_fn_call = match last_statement { [INFO] [stdout] | __________________________^ [INFO] [stdout] 419 | | Statement::FnCall(_) => true, [INFO] [stdout] 420 | | _ => false, [INFO] [stdout] 421 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 418 - let is_fn_call = match last_statement { [INFO] [stdout] 419 - Statement::FnCall(_) => true, [INFO] [stdout] 420 - _ => false, [INFO] [stdout] 421 - }; [INFO] [stdout] 418 + let is_fn_call = matches!(last_statement, Statement::FnCall(_)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/function/mod.rs:23:15 [INFO] [stdout] | [INFO] [stdout] 23 | function: Arc>) -> Result + Send + Sync>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/function/mod.rs:44:32 [INFO] [stdout] | [INFO] [stdout] 44 | pub(crate) fn execute_iter<'values, ValuesIter>(&self, mut values: ValuesIter) -> Result where ValuesIt... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/function/mod.rs:49:37 [INFO] [stdout] | [INFO] [stdout] 49 | pub(crate) fn execute_into_iter<'values, ValuesIter>(&self, values: ValuesIter) -> Result where ValuesI... [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/value.rs:46:53 [INFO] [stdout] | [INFO] [stdout] 46 | MoonValue::Boolean(bool) => f.write_str(&*bool.to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&bool.to_string()` [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 which would be done by auto-deref [INFO] [stdout] --> src/value.rs:47:52 [INFO] [stdout] | [INFO] [stdout] 47 | MoonValue::Integer(int) => f.write_str(&*int.to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `&int.to_string()` [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 which would be done by auto-deref [INFO] [stdout] --> src/value.rs:48:52 [INFO] [stdout] | [INFO] [stdout] 48 | MoonValue::Decimal(dec) => f.write_str(&*dec.to_string()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `&dec.to_string()` [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 which would be done by auto-deref [INFO] [stdout] --> src/value.rs:63:29 [INFO] [stdout] | [INFO] [stdout] 63 | f.write_str(&*result) [INFO] [stdout] | ^^^^^^^^ help: try: `&result` [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: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/value.rs:130:22 [INFO] [stdout] | [INFO] [stdout] 130 | .map(|know_value| know_value.type_name(context_builder)) [INFO] [stdout] | ______________________^ [INFO] [stdout] 131 | | .flatten(); [INFO] [stdout] | |______________________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|know_value| know_value.type_name(context_builder))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: try not to call a closure in the expression where it is declared [INFO] [stdout] --> src/lib.rs:152:29 [INFO] [stdout] | [INFO] [stdout] 152 | let rust_executed = (|| { [INFO] [stdout] | _____________________________^ [INFO] [stdout] 153 | | let a = [[4, 2, 5], [3, 9, 1], [6, 8, 7]]; [INFO] [stdout] 154 | | a[1][2] [INFO] [stdout] 155 | | })(); [INFO] [stdout] | |____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure_call [INFO] [stdout] = note: `#[warn(clippy::redundant_closure_call)]` on by default [INFO] [stdout] help: try doing something like [INFO] [stdout] | [INFO] [stdout] 152 ~ let rust_executed = { [INFO] [stdout] 153 + let a = [[4, 2, 5], [3, 9, 1], [6, 8, 7]]; [INFO] [stdout] 154 + a[1][2] [INFO] [stdout] 155 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:163:24 [INFO] [stdout] | [INFO] [stdout] 163 | let expected = 2 * 3 + 5 > 4 && true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `2 * 3 + 5 > 4` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:168:24 [INFO] [stdout] | [INFO] [stdout] 168 | let expected = true && 4 < 5 + 3 * 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `4 < 5 + 3 * 2` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/lib.rs:190:9 [INFO] [stdout] | [INFO] [stdout] 190 | assert_eq!(false, res); [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] 190 - assert_eq!(false, res); [INFO] [stdout] 190 + assert!(!res); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> src/lib.rs:460:54 [INFO] [stdout] | [INFO] [stdout] 460 | let simple_error = format!("{error}").lines().skip(2).next().unwrap().to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] = note: `#[warn(clippy::iter_skip_next)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `skip(..).next()` on an iterator [INFO] [stdout] --> src/lib.rs:471:54 [INFO] [stdout] | [INFO] [stdout] 471 | let simple_error = format!("{error}").lines().skip(2).next().unwrap().to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: use `nth` instead: `.nth(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/execution/mod.rs:46:22 [INFO] [stdout] | [INFO] [stdout] 46 | fn explain_error(&self) -> SimpleErrorExplanation { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 46 | fn explain_error(&self) -> SimpleErrorExplanation<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parsing/error.rs:196:22 [INFO] [stdout] | [INFO] [stdout] 196 | fn explain_error(&self) -> SimpleErrorExplanation { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided 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] 196 | fn explain_error(&self) -> SimpleErrorExplanation<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/lib.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | simple_logger::init_with_level(Level::Trace); [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] 145 | let _ = simple_logger::init_with_level(Level::Trace); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/lib.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | simple_logger::init_with_level(Level::Trace); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 161 | let _ = simple_logger::init_with_level(Level::Trace); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/lib.rs:176:9 [INFO] [stdout] | [INFO] [stdout] 176 | simple_logger::init_with_level(Level::Trace); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 176 | let _ = simple_logger::init_with_level(Level::Trace); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___engine` should have a snake case name [INFO] [stdout] --> src/lib.rs:257:8 [INFO] [stdout] | [INFO] [stdout] 257 | fn developers_guide___engine() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_engine` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/lib.rs:265:9 [INFO] [stdout] | [INFO] [stdout] 265 | ast.execute(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 265 | let _ = ast.execute(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___engine___add_constants` should have a snake case name [INFO] [stdout] --> src/lib.rs:269:8 [INFO] [stdout] | [INFO] [stdout] 269 | fn developers_guide___engine___add_constants() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_engine_add_constants` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___engine___add_functions` should have a snake case name [INFO] [stdout] --> src/lib.rs:289:8 [INFO] [stdout] | [INFO] [stdout] 289 | fn developers_guide___engine___add_functions() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_engine_add_functions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___engine___add_functions__Result` should have a snake case name [INFO] [stdout] --> src/lib.rs:307:8 [INFO] [stdout] | [INFO] [stdout] 307 | fn developers_guide___engine___add_functions__Result() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_engine_add_functions_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___engine___custom_type` should have a snake case name [INFO] [stdout] --> src/lib.rs:372:8 [INFO] [stdout] | [INFO] [stdout] 372 | fn developers_guide___engine___custom_type() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_engine_custom_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___context___input_variables` should have a snake case name [INFO] [stdout] --> src/lib.rs:400:8 [INFO] [stdout] | [INFO] [stdout] 400 | fn developers_guide___context___input_variables() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_context_input_variables` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___context___ast_input_variables` should have a snake case name [INFO] [stdout] --> src/lib.rs:415:8 [INFO] [stdout] | [INFO] [stdout] 415 | fn developers_guide___context___ast_input_variables() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_context_ast_input_variables` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `developers_guide___context___line_error` should have a snake case name [INFO] [stdout] --> src/lib.rs:438:8 [INFO] [stdout] | [INFO] [stdout] 438 | fn developers_guide___context___line_error() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `developers_guide_context_line_error` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.78s [INFO] running `Command { std: "docker" "inspect" "c55e32cdca289b6ea735cb6b76a8d639efaaa1931ea332492b3c08d3c078c21d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c55e32cdca289b6ea735cb6b76a8d639efaaa1931ea332492b3c08d3c078c21d", kill_on_drop: false }` [INFO] [stdout] c55e32cdca289b6ea735cb6b76a8d639efaaa1931ea332492b3c08d3c078c21d