[INFO] cloning repository https://github.com/playXE/runtime [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/playXE/runtime" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FplayXE%2Fruntime", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FplayXE%2Fruntime'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4df148d809d63416d585d37d41a4ec3b09079e29 [INFO] linting playXE/runtime against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FplayXE%2Fruntime" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/playXE/runtime [INFO] finished tweaking git repo https://github.com/playXE/runtime [INFO] tweaked toml for git repo https://github.com/playXE/runtime written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/playXE/runtime on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/playXE/runtime already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] 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] e2fa6278f2e620c34617e8bb21cf83649af06042da19d7dd53f47c3d68778372 [INFO] running `Command { std: "docker" "start" "-a" "e2fa6278f2e620c34617e8bb21cf83649af06042da19d7dd53f47c3d68778372", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "e2fa6278f2e620c34617e8bb21cf83649af06042da19d7dd53f47c3d68778372", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e2fa6278f2e620c34617e8bb21cf83649af06042da19d7dd53f47c3d68778372", kill_on_drop: false }` [INFO] [stdout] e2fa6278f2e620c34617e8bb21cf83649af06042da19d7dd53f47c3d68778372 [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] 26a5c6f4be6a5319ea624ac21e19d1640959a29e29e64e762df403c52dfb4b7c [INFO] running `Command { std: "docker" "start" "-a" "26a5c6f4be6a5319ea624ac21e19d1640959a29e29e64e762df403c52dfb4b7c", kill_on_drop: false }` [INFO] [stderr] Checking runtime v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `super::cycleanalysis::*` [INFO] [stdout] --> src/analysis/hammockgraph.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use super::cycleanalysis::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::cfg::*` [INFO] [stdout] --> src/analysis/saferegion.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::cfg::*; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/analysis/mod.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | cfg: cfg, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `cfg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:231:13 [INFO] [stdout] | [INFO] [stdout] 231 | head: head, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `head` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | ty: ty, [INFO] [stdout] | ^^^^^^ help: replace it with: `ty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | tail: tail, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `tail` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:239:13 [INFO] [stdout] | [INFO] [stdout] 239 | ty: ty, [INFO] [stdout] | ^^^^^^ help: replace it with: `ty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::cycleanalysis::*` [INFO] [stdout] --> src/analysis/hammockgraph.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use super::cycleanalysis::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::cfg::*` [INFO] [stdout] --> src/analysis/saferegion.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::cfg::*; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/analysis/mod.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | cfg: cfg, [INFO] [stdout] | ^^^^^^^^ help: replace it with: `cfg` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:231:13 [INFO] [stdout] | [INFO] [stdout] 231 | head: head, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `head` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:233:13 [INFO] [stdout] | [INFO] [stdout] 233 | ty: ty, [INFO] [stdout] | ^^^^^^ help: replace it with: `ty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | tail: tail, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `tail` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cfg.rs:239:13 [INFO] [stdout] | [INFO] [stdout] 239 | ty: ty, [INFO] [stdout] | ^^^^^^ help: replace it with: `ty` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/analysis/hammockgraph.rs:146:13 [INFO] [stdout] | [INFO] [stdout] 146 | let mut new_hammock = unvisited.get(&entry).cloned().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/analysis/hammockgraph.rs:155:17 [INFO] [stdout] | [INFO] [stdout] 155 | let mut v: Rc> = v.clone(); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/analysis/hammockgraph.rs:146:13 [INFO] [stdout] | [INFO] [stdout] 146 | let mut new_hammock = unvisited.get(&entry).cloned().unwrap(); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/analysis/hammockgraph.rs:155:17 [INFO] [stdout] | [INFO] [stdout] 155 | let mut v: Rc> = v.clone(); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cfg`, `dom`, `post_dom`, `cycle`, `hammockgraph`, and `saferegion` are never read [INFO] [stdout] --> src/analysis/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Analysis<'a> { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 8 | cfg: &'a crate::cfg::ControlFlowGraph, [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | dom: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] 10 | post_dom: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 11 | cycle: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 12 | hammockgraph: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 13 | saferegion: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CycleAnalysis` [INFO] [stdout] --> src/analysis/cycleanalysis.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Self { back_edges: vec![] } [INFO] [stdout] 14 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for CycleAnalysis { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/cycleanalysis.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | let mut visited = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] = note: `#[warn(clippy::mutable_key_type)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> src/analysis/cycleanalysis.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | let block = stack.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 21 ~ while let Some(block) = stack.pop() { [INFO] [stdout] 22 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DominatorTree` [INFO] [stdout] --> src/analysis/dom.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Self { [INFO] [stdout] 14 | | blocks: vec![], [INFO] [stdout] 15 | | i_dom: vec![], [INFO] [stdout] ... | [INFO] [stdout] 19 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for DominatorTree { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cfg`, `dom`, `post_dom`, `cycle`, `hammockgraph`, and `saferegion` are never read [INFO] [stdout] --> src/analysis/mod.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct Analysis<'a> { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 8 | cfg: &'a crate::cfg::ControlFlowGraph, [INFO] [stdout] | ^^^ [INFO] [stdout] 9 | dom: Option, [INFO] [stdout] | ^^^ [INFO] [stdout] 10 | post_dom: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 11 | cycle: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 12 | hammockgraph: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 13 | saferegion: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/analysis/dom.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | for block in post_order.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, block) in post_order.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `CycleAnalysis` [INFO] [stdout] --> src/analysis/cycleanalysis.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Self { back_edges: vec![] } [INFO] [stdout] 14 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for CycleAnalysis { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/analysis/dom.rs:51:26 [INFO] [stdout] | [INFO] [stdout] 51 | let start_node = self [INFO] [stdout] | __________________________^ [INFO] [stdout] 52 | | .blocks_to_index [INFO] [stdout] 53 | | .get(&cfg.get_entry_block()) [INFO] [stdout] 54 | | .map(|x| *x) [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 51 ~ let start_node = self [INFO] [stdout] 52 + .blocks_to_index [INFO] [stdout] 53 + .get(&cfg.get_entry_block()).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/analysis/dom.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | / if processed { [INFO] [stdout] 80 | | if self.i_dom[b_ind] != new_idom { [INFO] [stdout] 81 | | self.i_dom[b_ind] = new_idom; [INFO] [stdout] 82 | | changed = true; [INFO] [stdout] 83 | | } [INFO] [stdout] 84 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ if processed [INFO] [stdout] 80 ~ && self.i_dom[b_ind] != new_idom { [INFO] [stdout] 81 | self.i_dom[b_ind] = new_idom; [INFO] [stdout] 82 | changed = true; [INFO] [stdout] 83 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/analysis/dom.rs:110:16 [INFO] [stdout] | [INFO] [stdout] 110 | if !(start_id != next_id && !dominates) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `start_id == next_id || dominates` [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 function has too many arguments (8/7) [INFO] [stdout] --> src/analysis/hammockgraph.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / pub fn expand_hammock( [INFO] [stdout] 62 | | &mut self, [INFO] [stdout] 63 | | entry: &mut CodeBlockRef, [INFO] [stdout] 64 | | exit: &mut CodeBlockRef, [INFO] [stdout] ... | [INFO] [stdout] 69 | | cfg: &ControlFlowGraph, [INFO] [stdout] 70 | | ) -> bool { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/cycleanalysis.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | let mut visited = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] = note: `#[warn(clippy::mutable_key_type)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> src/analysis/cycleanalysis.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | let block = stack.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 21 ~ while let Some(block) = stack.pop() { [INFO] [stdout] 22 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/hammockgraph.rs:98:20 [INFO] [stdout] | [INFO] [stdout] 98 | unvisited: &mut BlockToHammockMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DominatorTree` [INFO] [stdout] --> src/analysis/dom.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | Self { [INFO] [stdout] 14 | | blocks: vec![], [INFO] [stdout] 15 | | i_dom: vec![], [INFO] [stdout] ... | [INFO] [stdout] 19 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 11 + impl Default for DominatorTree { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/analysis/dom.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | for block in post_order.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, block) in post_order.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/hammockgraph.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | let mut unvisited = BlockToHammockMap::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/analysis/dom.rs:51:26 [INFO] [stdout] | [INFO] [stdout] 51 | let start_node = self [INFO] [stdout] | __________________________^ [INFO] [stdout] 52 | | .blocks_to_index [INFO] [stdout] 53 | | .get(&cfg.get_entry_block()) [INFO] [stdout] 54 | | .map(|x| *x) [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `copied` method [INFO] [stdout] | [INFO] [stdout] 51 ~ let start_node = self [INFO] [stdout] 52 + .blocks_to_index [INFO] [stdout] 53 + .get(&cfg.get_entry_block()).copied() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `PostDominatorTree` [INFO] [stdout] --> src/analysis/postdom.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | / pub fn new() -> Self { [INFO] [stdout] 17 | | Self { [INFO] [stdout] 18 | | blocks: vec![], [INFO] [stdout] 19 | | p_dom: vec![], [INFO] [stdout] ... | [INFO] [stdout] 24 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 15 + impl Default for PostDominatorTree { [INFO] [stdout] 16 + fn default() -> Self { [INFO] [stdout] 17 + Self::new() [INFO] [stdout] 18 + } [INFO] [stdout] 19 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/analysis/postdom.rs:40:16 [INFO] [stdout] | [INFO] [stdout] 40 | if !(start_id != next_id && !dominates) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `start_id == next_id || dominates` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/analysis/dom.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | / if processed { [INFO] [stdout] 80 | | if self.i_dom[b_ind] != new_idom { [INFO] [stdout] 81 | | self.i_dom[b_ind] = new_idom; [INFO] [stdout] 82 | | changed = true; [INFO] [stdout] 83 | | } [INFO] [stdout] 84 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ if processed [INFO] [stdout] 80 ~ && self.i_dom[b_ind] != new_idom { [INFO] [stdout] 81 | self.i_dom[b_ind] = new_idom; [INFO] [stdout] 82 | changed = true; [INFO] [stdout] 83 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/analysis/postdom.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | for block in post_order.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, block) in post_order.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/analysis/dom.rs:110:16 [INFO] [stdout] | [INFO] [stdout] 110 | if !(start_id != next_id && !dominates) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `start_id == next_id || dominates` [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 `if` statement can be collapsed [INFO] [stdout] --> src/analysis/postdom.rs:100:17 [INFO] [stdout] | [INFO] [stdout] 100 | / if processed { [INFO] [stdout] 101 | | if self.p_dom[b_ind] != new_pdom { [INFO] [stdout] 102 | | self.p_dom[b_ind] = new_pdom; [INFO] [stdout] 103 | | changed = true; [INFO] [stdout] 104 | | } [INFO] [stdout] 105 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 100 ~ if processed [INFO] [stdout] 101 ~ && self.p_dom[b_ind] != new_pdom { [INFO] [stdout] 102 | self.p_dom[b_ind] = new_pdom; [INFO] [stdout] 103 | changed = true; [INFO] [stdout] 104 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/analysis/hammockgraph.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | / pub fn expand_hammock( [INFO] [stdout] 62 | | &mut self, [INFO] [stdout] 63 | | entry: &mut CodeBlockRef, [INFO] [stdout] 64 | | exit: &mut CodeBlockRef, [INFO] [stdout] ... | [INFO] [stdout] 69 | | cfg: &ControlFlowGraph, [INFO] [stdout] 70 | | ) -> bool { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/hammockgraph.rs:98:20 [INFO] [stdout] | [INFO] [stdout] 98 | unvisited: &mut BlockToHammockMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:24:65 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn get_blocks_with_backward_branches(ca: &CycleAnalysis) -> BlockSet { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | let mut set = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/analysis/saferegion.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | return Some(branch.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - return Some(branch.clone()) [INFO] [stdout] 48 + Some(branch.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/analysis/saferegion.rs:50:14 [INFO] [stdout] | [INFO] [stdout] 50 | _ => return None, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 50 - _ => return None, [INFO] [stdout] 50 + _ => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Instruction` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/saferegion.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | let branch = block.borrow().instructions.last().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*block.borrow().instructions.last().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/hammockgraph.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | let mut unvisited = BlockToHammockMap::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Instruction` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/saferegion.rs:48:25 [INFO] [stdout] | [INFO] [stdout] 48 | return Some(branch.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `branch` [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: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:70:6 [INFO] [stdout] | [INFO] [stdout] 70 | ) -> BlockSet { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `PostDominatorTree` [INFO] [stdout] --> src/analysis/postdom.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | / pub fn new() -> Self { [INFO] [stdout] 17 | | Self { [INFO] [stdout] 18 | | blocks: vec![], [INFO] [stdout] 19 | | p_dom: vec![], [INFO] [stdout] ... | [INFO] [stdout] 24 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 15 + impl Default for PostDominatorTree { [INFO] [stdout] 16 + fn default() -> Self { [INFO] [stdout] 17 + Self::new() [INFO] [stdout] 18 + } [INFO] [stdout] 19 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | let mut set = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/analysis/postdom.rs:40:16 [INFO] [stdout] | [INFO] [stdout] 40 | if !(start_id != next_id && !dominates) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `start_id == next_id || dominates` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/block.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | / impl Default for EdgeType { [INFO] [stdout] 15 | | fn default() -> Self { [INFO] [stdout] 16 | | Self::Invalid [INFO] [stdout] 17 | | } [INFO] [stdout] 18 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Default)] [INFO] [stdout] 8 | pub enum EdgeType { [INFO] [stdout] 9 | Branch, [INFO] [stdout] 10 | FallThrough, [INFO] [stdout] 11 | Dummy, [INFO] [stdout] 12 ~ #[default] [INFO] [stdout] 13 ~ Invalid, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> src/analysis/postdom.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | for block in post_order.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, block) in post_order.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/analysis/postdom.rs:100:17 [INFO] [stdout] | [INFO] [stdout] 100 | / if processed { [INFO] [stdout] 101 | | if self.p_dom[b_ind] != new_pdom { [INFO] [stdout] 102 | | self.p_dom[b_ind] = new_pdom; [INFO] [stdout] 103 | | changed = true; [INFO] [stdout] 104 | | } [INFO] [stdout] 105 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 100 ~ if processed [INFO] [stdout] 101 ~ && self.p_dom[b_ind] != new_pdom { [INFO] [stdout] 102 | self.p_dom[b_ind] = new_pdom; [INFO] [stdout] 103 | changed = true; [INFO] [stdout] 104 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/block.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | self.children.len() == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:24:65 [INFO] [stdout] | [INFO] [stdout] 24 | pub fn get_blocks_with_backward_branches(ca: &CycleAnalysis) -> BlockSet { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | let mut set = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/analysis/saferegion.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | return Some(branch.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - return Some(branch.clone()) [INFO] [stdout] 48 + Some(branch.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/analysis/saferegion.rs:50:14 [INFO] [stdout] | [INFO] [stdout] 50 | _ => return None, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 50 - _ => return None, [INFO] [stdout] 50 + _ => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Instruction` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/saferegion.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | let branch = block.borrow().instructions.last().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*block.borrow().instructions.last().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/cfg.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | new_block.instructions = block.borrow().instructions.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `block::CodeBlock { instructions: block.borrow().instructions.clone(), id: id, ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/cfg.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | let mut new_block = CodeBlock::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Instruction` which implements the `Copy` trait [INFO] [stdout] --> src/analysis/saferegion.rs:48:25 [INFO] [stdout] | [INFO] [stdout] 48 | return Some(branch.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `branch` [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: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:70:6 [INFO] [stdout] | [INFO] [stdout] 70 | ) -> BlockSet { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/analysis/saferegion.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | let mut set = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/block.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | / impl Default for EdgeType { [INFO] [stdout] 15 | | fn default() -> Self { [INFO] [stdout] 16 | | Self::Invalid [INFO] [stdout] 17 | | } [INFO] [stdout] 18 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute and mark the default variant [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Default)] [INFO] [stdout] 8 | pub enum EdgeType { [INFO] [stdout] 9 | Branch, [INFO] [stdout] 10 | FallThrough, [INFO] [stdout] 11 | Dummy, [INFO] [stdout] 12 ~ #[default] [INFO] [stdout] 13 ~ Invalid, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/cfg.rs:234:15 [INFO] [stdout] | [INFO] [stdout] 234 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/cfg.rs:240:15 [INFO] [stdout] | [INFO] [stdout] 240 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/cfg.rs:247:9 [INFO] [stdout] | [INFO] [stdout] 247 | let mut visited: BlockSet = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/block.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | self.children.len() == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/cfg.rs:300:9 [INFO] [stdout] | [INFO] [stdout] 300 | let mut visited: BlockSet = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/cfg.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | new_block.instructions = block.borrow().instructions.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `block::CodeBlock { instructions: block.borrow().instructions.clone(), id: id, ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/cfg.rs:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | let mut new_block = CodeBlock::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/cfg.rs:234:15 [INFO] [stdout] | [INFO] [stdout] 234 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/cfg.rs:240:15 [INFO] [stdout] | [INFO] [stdout] 240 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/cfg.rs:247:9 [INFO] [stdout] | [INFO] [stdout] 247 | let mut visited: BlockSet = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/instructions.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / match self { [INFO] [stdout] 39 | | StEnv(_) | StField | StLocal(_) | StStatic(_) | LdEnv(_) | LdField | LdGlobal(_) [INFO] [stdout] 40 | | | LdLocal(_) | LdStatic(_) => true, [INFO] [stdout] 41 | | _ => false, [INFO] [stdout] 42 | | } [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] 38 ~ matches!(self, StEnv(_) | StField | StLocal(_) | StStatic(_) | LdEnv(_) | LdField | LdGlobal(_) [INFO] [stdout] 39 + | LdLocal(_) | LdStatic(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: mutable key type [INFO] [stdout] --> src/cfg.rs:300:9 [INFO] [stdout] | [INFO] [stdout] 300 | let mut visited: BlockSet = BlockSet::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: ... because it contains `CodeBlockRef`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Rc>`, which has interior mutability [INFO] [stdout] = note: ... because it contains `RefCell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `Cell`, which has interior mutability [INFO] [stdout] = note: ... because it contains `UnsafeCell`, which has interior mutability [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mutable_key_type [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/instructions.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / match self { [INFO] [stdout] 39 | | StEnv(_) | StField | StLocal(_) | StStatic(_) | LdEnv(_) | LdField | LdGlobal(_) [INFO] [stdout] 40 | | | LdLocal(_) | LdStatic(_) => true, [INFO] [stdout] 41 | | _ => false, [INFO] [stdout] 42 | | } [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] 38 ~ matches!(self, StEnv(_) | StField | StLocal(_) | StStatic(_) | LdEnv(_) | LdField | LdGlobal(_) [INFO] [stdout] 39 + | LdLocal(_) | LdStatic(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.45s [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | let mut b2 = cfg.insert_block(CodeBlockRef::new(block)); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | block.id = cfg.new_id(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `runtime::block::CodeBlock { id: cfg.new_id(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | let mut block: CodeBlock = CodeBlock::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | block.id = cfg.new_id(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `runtime::block::CodeBlock { id: cfg.new_id(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | let mut block: CodeBlock = CodeBlock::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:27:11 [INFO] [stdout] | [INFO] [stdout] 27 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | let mut b2 = cfg.insert_block(CodeBlockRef::new(block)); [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | block.id = cfg.new_id(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `runtime::block::CodeBlock { id: cfg.new_id(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | let mut block: CodeBlock = CodeBlock::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | block.id = cfg.new_id(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `runtime::block::CodeBlock { id: cfg.new_id(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | let mut block: CodeBlock = CodeBlock::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stdout] --> src/main.rs:27:11 [INFO] [stdout] | [INFO] [stdout] 27 | ..Default::default() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stdout] = note: `#[warn(clippy::needless_update)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "26a5c6f4be6a5319ea624ac21e19d1640959a29e29e64e762df403c52dfb4b7c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "26a5c6f4be6a5319ea624ac21e19d1640959a29e29e64e762df403c52dfb4b7c", kill_on_drop: false }` [INFO] [stdout] 26a5c6f4be6a5319ea624ac21e19d1640959a29e29e64e762df403c52dfb4b7c