[INFO] cloning repository https://github.com/dimitribobkov/gameboy [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dimitribobkov/gameboy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdimitribobkov%2Fgameboy", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdimitribobkov%2Fgameboy'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 34576647af675768b7705ac1eb697d417e2ccead [INFO] testing dimitribobkov/gameboy against master#414482f6a0d4e7290f614300581a0b55442552a3 for pr-140985 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdimitribobkov%2Fgameboy" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/dimitribobkov/gameboy on toolchain 414482f6a0d4e7290f614300581a0b55442552a3 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/dimitribobkov/gameboy [INFO] finished tweaking git repo https://github.com/dimitribobkov/gameboy [INFO] tweaked toml for git repo https://github.com/dimitribobkov/gameboy written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/dimitribobkov/gameboy 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" "+414482f6a0d4e7290f614300581a0b55442552a3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sdl2 v0.34.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7051730084b3a5d7758deb3b6866f4c8526289de714c8873e53497991f418720 [INFO] running `Command { std: "docker" "start" "-a" "7051730084b3a5d7758deb3b6866f4c8526289de714c8873e53497991f418720", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7051730084b3a5d7758deb3b6866f4c8526289de714c8873e53497991f418720", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7051730084b3a5d7758deb3b6866f4c8526289de714c8873e53497991f418720", kill_on_drop: false }` [INFO] [stdout] 7051730084b3a5d7758deb3b6866f4c8526289de714c8873e53497991f418720 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] eeb332289ff26aba96fa3368b4154fe28066defa15e2b020bc151a1dd7dcdd39 [INFO] running `Command { std: "docker" "start" "-a" "eeb332289ff26aba96fa3368b4154fe28066defa15e2b020bc151a1dd7dcdd39", kill_on_drop: false }` [INFO] [stderr] Compiling cfg-if v0.1.10 [INFO] [stderr] Compiling libc v0.2.71 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling sdl2 v0.34.1 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling sdl2-sys v0.34.0 [INFO] [stderr] Compiling gameboy v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:359:26 [INFO] [stdout] | [INFO] [stdout] 359 | self.rom[(self.rom_offs + ((address as usize) & 0x3FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 359 - self.rom[(self.rom_offs + ((address as usize) & 0x3FFF))] [INFO] [stdout] 359 + self.rom[self.rom_offs + ((address as usize) & 0x3FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:368:35 [INFO] [stdout] | [INFO] [stdout] 368 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 368 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] 368 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:373:39 [INFO] [stdout] | [INFO] [stdout] 373 | ... self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 373 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] 373 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:381:35 [INFO] [stdout] | [INFO] [stdout] 381 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 381 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] 381 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:609:35 [INFO] [stdout] | [INFO] [stdout] 609 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 609 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] 609 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:614:39 [INFO] [stdout] | [INFO] [stdout] 614 | ... self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 614 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] 614 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:632:35 [INFO] [stdout] | [INFO] [stdout] 632 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 632 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] 632 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stdin` [INFO] [stdout] --> src/_cpu/read_rom.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{Read, stdin}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `delay` is never read [INFO] [stdout] --> src/cpu.rs:670:21 [INFO] [stdout] | [INFO] [stdout] 670 | let mut delay = 0x0; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `trace` is assigned to, but never used [INFO] [stdout] --> src/cpu.rs:698:25 [INFO] [stdout] | [INFO] [stdout] 698 | let mut trace = String::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_trace` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `trace` is never read [INFO] [stdout] --> src/cpu.rs:701:21 [INFO] [stdout] | [INFO] [stdout] 701 | ... trace = format!("A: {:x?} F: {:x?} B: {:x?} C: {:x?} D: {:x?} E: {:x?} H: {:x?} L: {:x?} SP: {:x?} PC: 00:{:x?} | Opcode: {:x?} : {... [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `trace` is never read [INFO] [stdout] --> src/cpu.rs:703:21 [INFO] [stdout] | [INFO] [stdout] 703 | ... trace = format!("A: {:x?} F: {:x?} B: {:x?} C: {:x?} D: {:x?} E: {:x?} H: {:x?} L: {:x?} SP: {:x?} PC: 00:{:x?} | Opcode: {:x?} -- ... [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu.rs:3344:13 [INFO] [stdout] | [INFO] [stdout] 3344 | _ => { panic!("Opcode: CB -> {:#x?}", opcode)} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/cpu.rs:3344:13 [INFO] [stdout] | [INFO] [stdout] 2318 | 0x0 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 2322 | 0x1 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 2326 | 0x2 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 2330 | 0x3 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 3344 | _ => { panic!("Opcode: CB -> {:#x?}", opcode)} [INFO] [stdout] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/cpu.rs:2316:46 [INFO] [stdout] | [INFO] [stdout] 2316 | pub fn execute_cb(&mut self, opcode: u8, v: usize) -> u8{ [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3420:33 [INFO] [stdout] | [INFO] [stdout] 3420 | let (new_value, did_overflow) = self.registers.sp.overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3624:33 [INFO] [stdout] | [INFO] [stdout] 3624 | let (new_value, did_overflow) = self.registers.a.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3633:33 [INFO] [stdout] | [INFO] [stdout] 3633 | let (new_value, did_overflow) = self.registers.b.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3642:33 [INFO] [stdout] | [INFO] [stdout] 3642 | let (new_value, did_overflow) = self.registers.c.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3651:33 [INFO] [stdout] | [INFO] [stdout] 3651 | let (new_value, did_overflow) = self.registers.d.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3660:33 [INFO] [stdout] | [INFO] [stdout] 3660 | let (new_value, did_overflow) = self.registers.e.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3669:33 [INFO] [stdout] | [INFO] [stdout] 3669 | let (new_value, did_overflow) = self.registers.h.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3677:33 [INFO] [stdout] | [INFO] [stdout] 3677 | let (new_value, did_overflow) = self.registers.l.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3685:33 [INFO] [stdout] | [INFO] [stdout] 3685 | let (new_value, did_overflow) = self.registers.sp.overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3690:33 [INFO] [stdout] | [INFO] [stdout] 3690 | let (new_value, did_overflow) = self.registers.get_hl().overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3696:33 [INFO] [stdout] | [INFO] [stdout] 3696 | let (new_value, did_overflow) = self.registers.get_de().overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3703:33 [INFO] [stdout] | [INFO] [stdout] 3703 | let (new_value, did_overflow) = self.registers.get_bc().overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3716:33 [INFO] [stdout] | [INFO] [stdout] 3716 | let (new_value, did_overflow) = self.registers.a.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3725:33 [INFO] [stdout] | [INFO] [stdout] 3725 | let (new_value, did_overflow) = self.registers.b.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3734:33 [INFO] [stdout] | [INFO] [stdout] 3734 | let (new_value, did_overflow) = self.registers.c.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3743:33 [INFO] [stdout] | [INFO] [stdout] 3743 | let (new_value, did_overflow) = self.registers.d.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3752:33 [INFO] [stdout] | [INFO] [stdout] 3752 | let (new_value, did_overflow) = self.registers.e.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3761:33 [INFO] [stdout] | [INFO] [stdout] 3761 | let (new_value, did_overflow) = self.registers.h.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3770:33 [INFO] [stdout] | [INFO] [stdout] 3770 | let (new_value, did_overflow) = self.registers.l.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3779:33 [INFO] [stdout] | [INFO] [stdout] 3779 | let (new_value, did_overflow) = self.registers.sp.overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3786:33 [INFO] [stdout] | [INFO] [stdout] 3786 | let (new_value, did_overflow) = self.registers.get_hl().overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3793:33 [INFO] [stdout] | [INFO] [stdout] 3793 | let (new_value, did_overflow) = self.registers.get_de().overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3800:33 [INFO] [stdout] | [INFO] [stdout] 3800 | let (new_value, did_overflow) = self.registers.get_bc().overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `mode` is never read [INFO] [stdout] --> src/main.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | let mut mode = false; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `trace_buffer` [INFO] [stdout] --> src/main.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | let mut trace_buffer = Vec::::new(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_trace_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `cpu` is never read [INFO] [stdout] --> src/main.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let mut cpu = CPU::new(); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | let mut trace_buffer = Vec::::new(); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save` is never used [INFO] [stdout] --> src/main.rs:194:4 [INFO] [stdout] | [INFO] [stdout] 194 | fn save(trace_buffer: Vec::){ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `debug` is never read [INFO] [stdout] --> src/cpu.rs:561:9 [INFO] [stdout] | [INFO] [stdout] 554 | pub struct CPU{ [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 561 | pub debug: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load_rom_cgb` is never used [INFO] [stdout] --> src/cpu.rs:632:12 [INFO] [stdout] | [INFO] [stdout] 568 | impl CPU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 632 | pub fn load_rom_cgb(&mut self, file: String){ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `F` and `AF` are never constructed [INFO] [stdout] --> src/cpu.rs:4604:5 [INFO] [stdout] | [INFO] [stdout] 4601 | pub enum Target{ [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 4604 | F, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 4613 | AF, [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_af` is never used [INFO] [stdout] --> src/_cpu/registers.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl Registers{ [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn get_af(&mut self) -> u16{ [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_BEGIN` is never used [INFO] [stdout] --> src/_cpu/memory.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const VRAM_BEGIN: usize = 0x8000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_END` is never used [INFO] [stdout] --> src/_cpu/memory.rs:5:7 [INFO] [stdout] | [INFO] [stdout] 5 | const VRAM_END: usize = 0x9FFF; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_SIZE` is never used [INFO] [stdout] --> src/_cpu/memory.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/main.rs:161:12 [INFO] [stdout] | [INFO] [stdout] 161 | if cpu.registers.pc > 0xFFFF{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `IF` should have a snake case name [INFO] [stdout] --> src/cpu.rs:744:13 [INFO] [stdout] | [INFO] [stdout] 744 | let IF = self.memory.rb(0xFF0F); [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] help: rename the identifier or convert it to a snake case raw identifier [INFO] [stdout] | [INFO] [stdout] 744 - let IF = self.memory.rb(0xFF0F); [INFO] [stdout] 744 + let r#if = self.memory.rb(0xFF0F); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `IE` should have a snake case name [INFO] [stdout] --> src/cpu.rs:745:13 [INFO] [stdout] | [INFO] [stdout] 745 | let IE = self.memory.rb(0xFFFF); [INFO] [stdout] | ^^ help: convert the identifier to snake case: `ie` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.81s [INFO] running `Command { std: "docker" "inspect" "eeb332289ff26aba96fa3368b4154fe28066defa15e2b020bc151a1dd7dcdd39", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "eeb332289ff26aba96fa3368b4154fe28066defa15e2b020bc151a1dd7dcdd39", kill_on_drop: false }` [INFO] [stdout] eeb332289ff26aba96fa3368b4154fe28066defa15e2b020bc151a1dd7dcdd39 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b9af2bffdcc9e1d00269e1c773f4662edd0f8843cd0c43d15155a5e385f16450 [INFO] running `Command { std: "docker" "start" "-a" "b9af2bffdcc9e1d00269e1c773f4662edd0f8843cd0c43d15155a5e385f16450", kill_on_drop: false }` [INFO] [stderr] Compiling gameboy v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:359:26 [INFO] [stdout] | [INFO] [stdout] 359 | self.rom[(self.rom_offs + ((address as usize) & 0x3FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 359 - self.rom[(self.rom_offs + ((address as usize) & 0x3FFF))] [INFO] [stdout] 359 + self.rom[self.rom_offs + ((address as usize) & 0x3FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:368:35 [INFO] [stdout] | [INFO] [stdout] 368 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 368 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] 368 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:373:39 [INFO] [stdout] | [INFO] [stdout] 373 | ... self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 373 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] 373 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:381:35 [INFO] [stdout] | [INFO] [stdout] 381 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 381 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stdout] 381 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:609:35 [INFO] [stdout] | [INFO] [stdout] 609 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 609 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] 609 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:614:39 [INFO] [stdout] | [INFO] [stdout] 614 | ... self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 614 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] 614 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around index expression [INFO] [stdout] --> src/_cpu/memory.rs:632:35 [INFO] [stdout] | [INFO] [stdout] 632 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 632 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stdout] 632 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stdin` [INFO] [stdout] --> src/_cpu/read_rom.rs:3:21 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::{Read, stdin}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `delay` is never read [INFO] [stdout] --> src/cpu.rs:670:21 [INFO] [stdout] | [INFO] [stdout] 670 | let mut delay = 0x0; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `trace` is assigned to, but never used [INFO] [stdout] --> src/cpu.rs:698:25 [INFO] [stdout] | [INFO] [stdout] 698 | let mut trace = String::new(); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_trace` instead [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `trace` is never read [INFO] [stdout] --> src/cpu.rs:701:21 [INFO] [stdout] | [INFO] [stdout] 701 | ... trace = format!("A: {:x?} F: {:x?} B: {:x?} C: {:x?} D: {:x?} E: {:x?} H: {:x?} L: {:x?} SP: {:x?} PC: 00:{:x?} | Opcode: {:x?} : {... [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `trace` is never read [INFO] [stdout] --> src/cpu.rs:703:21 [INFO] [stdout] | [INFO] [stdout] 703 | ... trace = format!("A: {:x?} F: {:x?} B: {:x?} C: {:x?} D: {:x?} E: {:x?} H: {:x?} L: {:x?} SP: {:x?} PC: 00:{:x?} | Opcode: {:x?} -- ... [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu.rs:3344:13 [INFO] [stdout] | [INFO] [stdout] 3344 | _ => { panic!("Opcode: CB -> {:#x?}", opcode)} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/cpu.rs:3344:13 [INFO] [stdout] | [INFO] [stdout] 2318 | 0x0 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 2322 | 0x1 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 2326 | 0x2 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 2330 | 0x3 => { [INFO] [stdout] | --- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 3344 | _ => { panic!("Opcode: CB -> {:#x?}", opcode)} [INFO] [stdout] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `v` [INFO] [stdout] --> src/cpu.rs:2316:46 [INFO] [stdout] | [INFO] [stdout] 2316 | pub fn execute_cb(&mut self, opcode: u8, v: usize) -> u8{ [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3420:33 [INFO] [stdout] | [INFO] [stdout] 3420 | let (new_value, did_overflow) = self.registers.sp.overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3624:33 [INFO] [stdout] | [INFO] [stdout] 3624 | let (new_value, did_overflow) = self.registers.a.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3633:33 [INFO] [stdout] | [INFO] [stdout] 3633 | let (new_value, did_overflow) = self.registers.b.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3642:33 [INFO] [stdout] | [INFO] [stdout] 3642 | let (new_value, did_overflow) = self.registers.c.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3651:33 [INFO] [stdout] | [INFO] [stdout] 3651 | let (new_value, did_overflow) = self.registers.d.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3660:33 [INFO] [stdout] | [INFO] [stdout] 3660 | let (new_value, did_overflow) = self.registers.e.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3669:33 [INFO] [stdout] | [INFO] [stdout] 3669 | let (new_value, did_overflow) = self.registers.h.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3677:33 [INFO] [stdout] | [INFO] [stdout] 3677 | let (new_value, did_overflow) = self.registers.l.overflowing_add(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3685:33 [INFO] [stdout] | [INFO] [stdout] 3685 | let (new_value, did_overflow) = self.registers.sp.overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3690:33 [INFO] [stdout] | [INFO] [stdout] 3690 | let (new_value, did_overflow) = self.registers.get_hl().overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3696:33 [INFO] [stdout] | [INFO] [stdout] 3696 | let (new_value, did_overflow) = self.registers.get_de().overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3703:33 [INFO] [stdout] | [INFO] [stdout] 3703 | let (new_value, did_overflow) = self.registers.get_bc().overflowing_add(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3716:33 [INFO] [stdout] | [INFO] [stdout] 3716 | let (new_value, did_overflow) = self.registers.a.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3725:33 [INFO] [stdout] | [INFO] [stdout] 3725 | let (new_value, did_overflow) = self.registers.b.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3734:33 [INFO] [stdout] | [INFO] [stdout] 3734 | let (new_value, did_overflow) = self.registers.c.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3743:33 [INFO] [stdout] | [INFO] [stdout] 3743 | let (new_value, did_overflow) = self.registers.d.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3752:33 [INFO] [stdout] | [INFO] [stdout] 3752 | let (new_value, did_overflow) = self.registers.e.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3761:33 [INFO] [stdout] | [INFO] [stdout] 3761 | let (new_value, did_overflow) = self.registers.h.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3770:33 [INFO] [stdout] | [INFO] [stdout] 3770 | let (new_value, did_overflow) = self.registers.l.overflowing_sub(value as u8); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3779:33 [INFO] [stdout] | [INFO] [stdout] 3779 | let (new_value, did_overflow) = self.registers.sp.overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3786:33 [INFO] [stdout] | [INFO] [stdout] 3786 | let (new_value, did_overflow) = self.registers.get_hl().overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3793:33 [INFO] [stdout] | [INFO] [stdout] 3793 | let (new_value, did_overflow) = self.registers.get_de().overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu.rs:3800:33 [INFO] [stdout] | [INFO] [stdout] 3800 | let (new_value, did_overflow) = self.registers.get_bc().overflowing_sub(value as u16); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `mode` is never read [INFO] [stdout] --> src/main.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | let mut mode = false; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `trace_buffer` [INFO] [stdout] --> src/main.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | let mut trace_buffer = Vec::::new(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_trace_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `cpu` is never read [INFO] [stdout] --> src/main.rs:64:13 [INFO] [stdout] | [INFO] [stdout] 64 | let mut cpu = CPU::new(); [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | let mut trace_buffer = Vec::::new(); [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `save` is never used [INFO] [stdout] --> src/main.rs:194:4 [INFO] [stdout] | [INFO] [stdout] 194 | fn save(trace_buffer: Vec::){ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `debug` is never read [INFO] [stdout] --> src/cpu.rs:561:9 [INFO] [stdout] | [INFO] [stdout] 554 | pub struct CPU{ [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 561 | pub debug: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load_rom_cgb` is never used [INFO] [stdout] --> src/cpu.rs:632:12 [INFO] [stdout] | [INFO] [stdout] 568 | impl CPU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 632 | pub fn load_rom_cgb(&mut self, file: String){ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `F` and `AF` are never constructed [INFO] [stdout] --> src/cpu.rs:4604:5 [INFO] [stdout] | [INFO] [stdout] 4601 | pub enum Target{ [INFO] [stdout] | ------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 4604 | F, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 4613 | AF, [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_af` is never used [INFO] [stdout] --> src/_cpu/registers.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl Registers{ [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 46 | pub fn get_af(&mut self) -> u16{ [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_BEGIN` is never used [INFO] [stdout] --> src/_cpu/memory.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const VRAM_BEGIN: usize = 0x8000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_END` is never used [INFO] [stdout] --> src/_cpu/memory.rs:5:7 [INFO] [stdout] | [INFO] [stdout] 5 | const VRAM_END: usize = 0x9FFF; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_SIZE` is never used [INFO] [stdout] --> src/_cpu/memory.rs:6:7 [INFO] [stdout] | [INFO] [stdout] 6 | const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison is useless due to type limits [INFO] [stdout] --> src/main.rs:161:12 [INFO] [stdout] | [INFO] [stdout] 161 | if cpu.registers.pc > 0xFFFF{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `IF` should have a snake case name [INFO] [stdout] --> src/cpu.rs:744:13 [INFO] [stdout] | [INFO] [stdout] 744 | let IF = self.memory.rb(0xFF0F); [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] help: rename the identifier or convert it to a snake case raw identifier [INFO] [stdout] | [INFO] [stdout] 744 - let IF = self.memory.rb(0xFF0F); [INFO] [stdout] 744 + let r#if = self.memory.rb(0xFF0F); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `IE` should have a snake case name [INFO] [stdout] --> src/cpu.rs:745:13 [INFO] [stdout] | [INFO] [stdout] 745 | let IE = self.memory.rb(0xFFFF); [INFO] [stdout] | ^^ help: convert the identifier to snake case: `ie` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.69s [INFO] running `Command { std: "docker" "inspect" "b9af2bffdcc9e1d00269e1c773f4662edd0f8843cd0c43d15155a5e385f16450", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b9af2bffdcc9e1d00269e1c773f4662edd0f8843cd0c43d15155a5e385f16450", kill_on_drop: false }` [INFO] [stdout] b9af2bffdcc9e1d00269e1c773f4662edd0f8843cd0c43d15155a5e385f16450 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:eea15d5475069c3ef791f10c2c6b5af2ee421ef2da1e680ecce1cba46243983b" "/opt/rustwide/cargo-home/bin/cargo" "+414482f6a0d4e7290f614300581a0b55442552a3" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] a09cdefc278345b69a3da4781e19e1737a6f7c1b7fb37f82b3a83ac558583cce [INFO] running `Command { std: "docker" "start" "-a" "a09cdefc278345b69a3da4781e19e1737a6f7c1b7fb37f82b3a83ac558583cce", kill_on_drop: false }` [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:359:26 [INFO] [stderr] | [INFO] [stderr] 359 | self.rom[(self.rom_offs + ((address as usize) & 0x3FFF))] [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 359 - self.rom[(self.rom_offs + ((address as usize) & 0x3FFF))] [INFO] [stderr] 359 + self.rom[self.rom_offs + ((address as usize) & 0x3FFF)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:368:35 [INFO] [stderr] | [INFO] [stderr] 368 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 368 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stderr] 368 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:373:39 [INFO] [stderr] | [INFO] [stderr] 373 | ... self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 373 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stderr] 373 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:381:35 [INFO] [stderr] | [INFO] [stderr] 381 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 381 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] [INFO] [stderr] 381 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:609:35 [INFO] [stderr] | [INFO] [stderr] 609 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 609 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stderr] 609 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:614:39 [INFO] [stderr] | [INFO] [stderr] 614 | ... self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 614 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stderr] 614 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around index expression [INFO] [stderr] --> src/_cpu/memory.rs:632:35 [INFO] [stderr] | [INFO] [stderr] 632 | self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 632 - self.eram[(self.ram_offs + ((address as usize) & 0x1FFF))] = value; [INFO] [stderr] 632 + self.eram[self.ram_offs + ((address as usize) & 0x1FFF)] = value; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `stdin` [INFO] [stderr] --> src/_cpu/read_rom.rs:3:21 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::{Read, stdin}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `delay` is never read [INFO] [stderr] --> src/cpu.rs:670:21 [INFO] [stderr] | [INFO] [stderr] 670 | let mut delay = 0x0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `trace` is assigned to, but never used [INFO] [stderr] --> src/cpu.rs:698:25 [INFO] [stderr] | [INFO] [stderr] 698 | let mut trace = String::new(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_trace` instead [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `trace` is never read [INFO] [stderr] --> src/cpu.rs:701:21 [INFO] [stderr] | [INFO] [stderr] 701 | ... trace = format!("A: {:x?} F: {:x?} B: {:x?} C: {:x?} D: {:x?} E: {:x?} H: {:x?} L: {:x?} SP: {:x?} PC: 00:{:x?} | Opcode: {:x?} : {... [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: value assigned to `trace` is never read [INFO] [stderr] --> src/cpu.rs:703:21 [INFO] [stderr] | [INFO] [stderr] 703 | ... trace = format!("A: {:x?} F: {:x?} B: {:x?} C: {:x?} D: {:x?} E: {:x?} H: {:x?} L: {:x?} SP: {:x?} PC: 00:{:x?} | Opcode: {:x?} -- ... [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu.rs:3344:13 [INFO] [stderr] | [INFO] [stderr] 3344 | _ => { panic!("Opcode: CB -> {:#x?}", opcode)} [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/cpu.rs:3344:13 [INFO] [stderr] | [INFO] [stderr] 2318 | 0x0 => { [INFO] [stderr] | --- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 2322 | 0x1 => { [INFO] [stderr] | --- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 2326 | 0x2 => { [INFO] [stderr] | --- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 2330 | 0x3 => { [INFO] [stderr] | --- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 3344 | _ => { panic!("Opcode: CB -> {:#x?}", opcode)} [INFO] [stderr] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `v` [INFO] [stderr] --> src/cpu.rs:2316:46 [INFO] [stderr] | [INFO] [stderr] 2316 | pub fn execute_cb(&mut self, opcode: u8, v: usize) -> u8{ [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_v` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3420:33 [INFO] [stderr] | [INFO] [stderr] 3420 | let (new_value, did_overflow) = self.registers.sp.overflowing_add(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3624:33 [INFO] [stderr] | [INFO] [stderr] 3624 | let (new_value, did_overflow) = self.registers.a.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3633:33 [INFO] [stderr] | [INFO] [stderr] 3633 | let (new_value, did_overflow) = self.registers.b.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3642:33 [INFO] [stderr] | [INFO] [stderr] 3642 | let (new_value, did_overflow) = self.registers.c.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3651:33 [INFO] [stderr] | [INFO] [stderr] 3651 | let (new_value, did_overflow) = self.registers.d.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3660:33 [INFO] [stderr] | [INFO] [stderr] 3660 | let (new_value, did_overflow) = self.registers.e.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3669:33 [INFO] [stderr] | [INFO] [stderr] 3669 | let (new_value, did_overflow) = self.registers.h.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3677:33 [INFO] [stderr] | [INFO] [stderr] 3677 | let (new_value, did_overflow) = self.registers.l.overflowing_add(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3685:33 [INFO] [stderr] | [INFO] [stderr] 3685 | let (new_value, did_overflow) = self.registers.sp.overflowing_add(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3690:33 [INFO] [stderr] | [INFO] [stderr] 3690 | let (new_value, did_overflow) = self.registers.get_hl().overflowing_add(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3696:33 [INFO] [stderr] | [INFO] [stderr] 3696 | let (new_value, did_overflow) = self.registers.get_de().overflowing_add(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3703:33 [INFO] [stderr] | [INFO] [stderr] 3703 | let (new_value, did_overflow) = self.registers.get_bc().overflowing_add(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3716:33 [INFO] [stderr] | [INFO] [stderr] 3716 | let (new_value, did_overflow) = self.registers.a.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3725:33 [INFO] [stderr] | [INFO] [stderr] 3725 | let (new_value, did_overflow) = self.registers.b.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3734:33 [INFO] [stderr] | [INFO] [stderr] 3734 | let (new_value, did_overflow) = self.registers.c.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3743:33 [INFO] [stderr] | [INFO] [stderr] 3743 | let (new_value, did_overflow) = self.registers.d.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3752:33 [INFO] [stderr] | [INFO] [stderr] 3752 | let (new_value, did_overflow) = self.registers.e.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3761:33 [INFO] [stderr] | [INFO] [stderr] 3761 | let (new_value, did_overflow) = self.registers.h.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3770:33 [INFO] [stderr] | [INFO] [stderr] 3770 | let (new_value, did_overflow) = self.registers.l.overflowing_sub(value as u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3779:33 [INFO] [stderr] | [INFO] [stderr] 3779 | let (new_value, did_overflow) = self.registers.sp.overflowing_sub(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3786:33 [INFO] [stderr] | [INFO] [stderr] 3786 | let (new_value, did_overflow) = self.registers.get_hl().overflowing_sub(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3793:33 [INFO] [stderr] | [INFO] [stderr] 3793 | let (new_value, did_overflow) = self.registers.get_de().overflowing_sub(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu.rs:3800:33 [INFO] [stderr] | [INFO] [stderr] 3800 | let (new_value, did_overflow) = self.registers.get_bc().overflowing_sub(value as u16); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `mode` is never read [INFO] [stderr] --> src/main.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let mut mode = false; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: unused variable: `trace_buffer` [INFO] [stderr] --> src/main.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | let mut trace_buffer = Vec::::new(); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_trace_buffer` [INFO] [stderr] [INFO] [stderr] warning: value assigned to `cpu` is never read [INFO] [stderr] --> src/main.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut cpu = CPU::new(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | let mut trace_buffer = Vec::::new(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function `save` is never used [INFO] [stderr] --> src/main.rs:194:4 [INFO] [stderr] | [INFO] [stderr] 194 | fn save(trace_buffer: Vec::){ [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: field `debug` is never read [INFO] [stderr] --> src/cpu.rs:561:9 [INFO] [stderr] | [INFO] [stderr] 554 | pub struct CPU{ [INFO] [stderr] | --- field in this struct [INFO] [stderr] ... [INFO] [stderr] 561 | pub debug: bool, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `load_rom_cgb` is never used [INFO] [stderr] --> src/cpu.rs:632:12 [INFO] [stderr] | [INFO] [stderr] 568 | impl CPU { [INFO] [stderr] | -------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 632 | pub fn load_rom_cgb(&mut self, file: String){ [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `F` and `AF` are never constructed [INFO] [stderr] --> src/cpu.rs:4604:5 [INFO] [stderr] | [INFO] [stderr] 4601 | pub enum Target{ [INFO] [stderr] | ------ variants in this enum [INFO] [stderr] ... [INFO] [stderr] 4604 | F, [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 4613 | AF, [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: method `get_af` is never used [INFO] [stderr] --> src/_cpu/registers.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 26 | impl Registers{ [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 46 | pub fn get_af(&mut self) -> u16{ [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_BEGIN` is never used [INFO] [stderr] --> src/_cpu/memory.rs:4:7 [INFO] [stderr] | [INFO] [stderr] 4 | const VRAM_BEGIN: usize = 0x8000; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_END` is never used [INFO] [stderr] --> src/_cpu/memory.rs:5:7 [INFO] [stderr] | [INFO] [stderr] 5 | const VRAM_END: usize = 0x9FFF; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_SIZE` is never used [INFO] [stderr] --> src/_cpu/memory.rs:6:7 [INFO] [stderr] | [INFO] [stderr] 6 | const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:161:12 [INFO] [stderr] | [INFO] [stderr] 161 | if cpu.registers.pc > 0xFFFF{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_comparisons)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `IF` should have a snake case name [INFO] [stderr] --> src/cpu.rs:744:13 [INFO] [stderr] | [INFO] [stderr] 744 | let IF = self.memory.rb(0xFF0F); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` on by default [INFO] [stderr] help: rename the identifier or convert it to a snake case raw identifier [INFO] [stderr] | [INFO] [stderr] 744 - let IF = self.memory.rb(0xFF0F); [INFO] [stderr] 744 + let r#if = self.memory.rb(0xFF0F); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: variable `IE` should have a snake case name [INFO] [stderr] --> src/cpu.rs:745:13 [INFO] [stderr] | [INFO] [stderr] 745 | let IE = self.memory.rb(0xFFFF); [INFO] [stderr] | ^^ help: convert the identifier to snake case: `ie` [INFO] [stderr] [INFO] [stderr] warning: `gameboy` (bin "gameboy" test) generated 52 warnings (run `cargo fix --bin "gameboy" --tests` to apply 9 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/gameboy-04c645b233439244) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "a09cdefc278345b69a3da4781e19e1737a6f7c1b7fb37f82b3a83ac558583cce", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a09cdefc278345b69a3da4781e19e1737a6f7c1b7fb37f82b3a83ac558583cce", kill_on_drop: false }` [INFO] [stdout] a09cdefc278345b69a3da4781e19e1737a6f7c1b7fb37f82b3a83ac558583cce