[INFO] cloning repository https://github.com/kjl56/gbemu [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kjl56/gbemu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkjl56%2Fgbemu", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkjl56%2Fgbemu'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1964fe6a7feb5bd68edbf99f3ac3cbdcf1353e67 [INFO] testing kjl56/gbemu against master#ec6f9a5b4413f74386267ef8efc93712c2ce6db6 for pr-155739-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkjl56%2Fgbemu" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/kjl56/gbemu [INFO] finished tweaking git repo https://github.com/kjl56/gbemu [INFO] tweaked toml for git repo https://github.com/kjl56/gbemu written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/kjl56/gbemu on toolchain ec6f9a5b4413f74386267ef8efc93712c2ce6db6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/kjl56/gbemu 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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded version-compare v0.1.1 [INFO] [stderr] Downloaded sdl2 v0.37.0 [INFO] [stderr] Downloaded libc v0.2.159 [INFO] [stderr] Downloaded sdl2-sys v0.37.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] db6f87069a342ccc498591652c146a44e8d3ef4479bd07ae7742bcee29de65a0 [INFO] running `Command { std: "docker" "start" "-a" "db6f87069a342ccc498591652c146a44e8d3ef4479bd07ae7742bcee29de65a0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "db6f87069a342ccc498591652c146a44e8d3ef4479bd07ae7742bcee29de65a0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "db6f87069a342ccc498591652c146a44e8d3ef4479bd07ae7742bcee29de65a0", kill_on_drop: false }` [INFO] [stdout] db6f87069a342ccc498591652c146a44e8d3ef4479bd07ae7742bcee29de65a0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 81b8b2a829e0124699807cd4660a4ca72bec26ae1fe41747726ec5298ef4c92a [INFO] running `Command { std: "docker" "start" "-a" "81b8b2a829e0124699807cd4660a4ca72bec26ae1fe41747726ec5298ef4c92a", kill_on_drop: false }` [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling version-compare v0.1.1 [INFO] [stderr] Compiling libc v0.2.159 [INFO] [stderr] Compiling sdl2 v0.37.0 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling sdl2-sys v0.37.0 [INFO] [stderr] Compiling gbemu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:89:64 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 89 - VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] 89 + VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b1)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:90:61 [INFO] [stdout] | [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 90 - LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] 90 + LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b10)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:91:63 [INFO] [stdout] | [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 91 - Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] 91 + Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b100)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:92:64 [INFO] [stdout] | [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 92 - Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] 92 + Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b1000)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:93:64 [INFO] [stdout] | [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 93 - Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] 93 + Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b10000)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:633:25 [INFO] [stdout] | [INFO] [stdout] 633 | flags.carry = ((0b1 & (*register >> 7)) != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 633 - flags.carry = ((0b1 & (*register >> 7)) != 0); [INFO] [stdout] 633 + flags.carry = (0b1 & (*register >> 7)) != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:635:24 [INFO] [stdout] | [INFO] [stdout] 635 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 635 - flags.zero = (*register == 0); [INFO] [stdout] 635 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:653:25 [INFO] [stdout] | [INFO] [stdout] 653 | flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 653 - flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] 653 + flags.carry = (0b1 & *register) != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:654:20 [INFO] [stdout] | [INFO] [stdout] 654 | let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 654 - let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] 654 + let b7 = 0b1 & (*register >> 7); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/cpu/cpu.rs:656:14 [INFO] [stdout] | [INFO] [stdout] 656 | if (b7 != 0) {*register += 0b10000000;} [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 656 - if (b7 != 0) {*register += 0b10000000;} [INFO] [stdout] 656 + if b7 != 0 {*register += 0b10000000;} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:657:24 [INFO] [stdout] | [INFO] [stdout] 657 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 657 - flags.zero = (*register == 0); [INFO] [stdout] 657 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:675:25 [INFO] [stdout] | [INFO] [stdout] 675 | flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 675 - flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] 675 + flags.carry = (0b1 & *register) != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:677:24 [INFO] [stdout] | [INFO] [stdout] 677 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 677 - flags.zero = (*register == 0); [INFO] [stdout] 677 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:750:24 [INFO] [stdout] | [INFO] [stdout] 750 | flags.zero = ( 0 == match testbit { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 759 | } ); [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 750 ~ flags.zero = 0 == match testbit { [INFO] [stdout] 751 | TestBit::Zero => 0b1 & *register, [INFO] [stdout] ... [INFO] [stdout] 758 | TestBit::Seven => 0b1 & (*register >> 7), [INFO] [stdout] 759 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:907:30 [INFO] [stdout] | [INFO] [stdout] 907 | self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 907 - self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] 907 + self.registers.f.carry = did_overflow | did_overflow2; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:934:30 [INFO] [stdout] | [INFO] [stdout] 934 | self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 934 - self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] 934 + self.registers.f.carry = did_overflow | did_overflow2; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:939:14 [INFO] [stdout] | [INFO] [stdout] 939 | let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 939 - let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] 939 + let b7 = 0b1 & (*register >> 7); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:941:19 [INFO] [stdout] | [INFO] [stdout] 941 | flags.carry = (b7 != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 941 - flags.carry = (b7 != 0); [INFO] [stdout] 941 + flags.carry = b7 != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:950:14 [INFO] [stdout] | [INFO] [stdout] 950 | let b0 = (0b1 & *register); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 950 - let b0 = (0b1 & *register); [INFO] [stdout] 950 + let b0 = 0b1 & *register; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:952:19 [INFO] [stdout] | [INFO] [stdout] 952 | flags.carry = (b0 != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 952 - flags.carry = (b0 != 0); [INFO] [stdout] 952 + flags.carry = b0 != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/cpu/cpu.rs:954:8 [INFO] [stdout] | [INFO] [stdout] 954 | if (b7 != 0) {*register += 0b10000000} [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 954 - if (b7 != 0) {*register += 0b10000000} [INFO] [stdout] 954 + if b7 != 0 {*register += 0b10000000} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:955:18 [INFO] [stdout] | [INFO] [stdout] 955 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 955 - flags.zero = (*register == 0); [INFO] [stdout] 955 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::rect::Rect` [INFO] [stdout] --> src/gpu/gpu.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use sdl2::rect::Rect; [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: `sdl2::render::Canvas` [INFO] [stdout] --> src/gpu/gpu.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::render::Canvas; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/gpu/gpu.rs:212:12 [INFO] [stdout] | [INFO] [stdout] 212 | if ((self.LY >= objectTop) & (self.LY < objectBottom)) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 212 - if ((self.LY >= objectTop) & (self.LY < objectBottom)) { [INFO] [stdout] 212 + if (self.LY >= objectTop) & (self.LY < objectBottom) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/gpu/gpu.rs:359:30 [INFO] [stdout] | [INFO] [stdout] 359 | let mapstart: usize = if (self.LCDC.three) {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 359 - let mapstart: usize = if (self.LCDC.three) {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stdout] 359 + let mapstart: usize = if self.LCDC.three {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::pixels::Color` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use sdl2::pixels::Color; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::rect::Point` [INFO] [stdout] --> src/main.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use sdl2::rect::Point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/main.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `VBlank` [INFO] [stdout] --> src/cpu/cpu.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_VBlank` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `LCD` [INFO] [stdout] --> src/cpu/cpu.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_LCD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Timer` [INFO] [stdout] --> src/cpu/cpu.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Serial` [INFO] [stdout] --> src/cpu/cpu.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Serial` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Joypad` [INFO] [stdout] --> src/cpu/cpu.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Joypad` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:885:7 [INFO] [stdout] | [INFO] [stdout] 885 | _ => { panic!("todo: Instruction: {:?} not yet implemented", instruction) } [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/cpu.rs:885:7 [INFO] [stdout] | [INFO] [stdout] 138 | Instruction::ADD(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 177 | Instruction::ADC(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 191 | Instruction::SUB(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 205 | Instruction::SBC(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 885 | _ => { panic!("todo: Instruction: {:?} not yet implemented", instruction) } [INFO] [stdout] | ^ ...and 40 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu/cpu.rs:167:29 [INFO] [stdout] | [INFO] [stdout] 167 | let (new_value, did_overflow) = self.sp.overflowing_add_signed(value); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:177:24 [INFO] [stdout] | [INFO] [stdout] 177 | Instruction::ADC(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:191:24 [INFO] [stdout] | [INFO] [stdout] 191 | Instruction::SUB(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:205:24 [INFO] [stdout] | [INFO] [stdout] 205 | Instruction::SBC(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:219:24 [INFO] [stdout] | [INFO] [stdout] 219 | Instruction::AND(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:250:24 [INFO] [stdout] | [INFO] [stdout] 250 | Instruction::XOR(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:281:23 [INFO] [stdout] | [INFO] [stdout] 281 | Instruction::OR(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:312:23 [INFO] [stdout] | [INFO] [stdout] 312 | Instruction::CP(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:314:39 [INFO] [stdout] | [INFO] [stdout] 314 | ArithmeticSource::A => {let val = self.subtract(self.registers.a); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:315:39 [INFO] [stdout] | [INFO] [stdout] 315 | ArithmeticSource::B => {let val = self.subtract(self.registers.b); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:316:39 [INFO] [stdout] | [INFO] [stdout] 316 | ArithmeticSource::C => {let val = self.subtract(self.registers.c); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:317:39 [INFO] [stdout] | [INFO] [stdout] 317 | ArithmeticSource::D => {let val = self.subtract(self.registers.d); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:318:39 [INFO] [stdout] | [INFO] [stdout] 318 | ArithmeticSource::E => {let val = self.subtract(self.registers.e); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:319:39 [INFO] [stdout] | [INFO] [stdout] 319 | ArithmeticSource::H => {let val = self.subtract(self.registers.h); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:320:39 [INFO] [stdout] | [INFO] [stdout] 320 | ArithmeticSource::L => {let val = self.subtract(self.registers.l); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:321:40 [INFO] [stdout] | [INFO] [stdout] 321 | ArithmeticSource::HL => {let val = self.subtract(self.bus.read_byte(self.registers.get_hl())); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:322:40 [INFO] [stdout] | [INFO] [stdout] 322 | ArithmeticSource::D8 => {let val = self.subtract(self.read_next_byte()); self.pc.wrapping_add(2)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:344:29 [INFO] [stdout] | [INFO] [stdout] 344 | Instruction::JR(test, target) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `source` [INFO] [stdout] --> src/cpu/cpu.rs:482:34 [INFO] [stdout] | [INFO] [stdout] 482 | LoadType::Byte(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:825:31 [INFO] [stdout] | [INFO] [stdout] 825 | Instruction::CALL(test, target) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/instructions.rs:385:7 [INFO] [stdout] | [INFO] [stdout] 385 | _ => /*todo: add mapping for rest of instructions*/ None [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/instructions.rs:385:7 [INFO] [stdout] | [INFO] [stdout] 129 | 0x00 => Some(Instruction::RLC(RotateTarget::B)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 130 | 0x01 => Some(Instruction::RLC(RotateTarget::C)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 131 | 0x02 => Some(Instruction::RLC(RotateTarget::D)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 132 | 0x03 => Some(Instruction::RLC(RotateTarget::E)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 385 | _ => /*todo: add mapping for rest of instructions*/ None [INFO] [stdout] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/gpu/gpu.rs:469:9 [INFO] [stdout] | [INFO] [stdout] 469 | let result = self.canvas.with_texture_canvas(&mut texture, |texture_canvas| { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mcycles` [INFO] [stdout] --> src/main.rs:65:11 [INFO] [stdout] | [INFO] [stdout] 65 | for mcycles in 0..17556 { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mcycles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_SIZE` is never used [INFO] [stdout] --> src/memory/membus.rs:10:7 [INFO] [stdout] | [INFO] [stdout] 10 | const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Three` is never constructed [INFO] [stdout] --> src/gpu/gpu.rs:46:3 [INFO] [stdout] | [INFO] [stdout] 42 | enum PPUMode { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 46 | Three, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/gpu/gpu.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 50 | enum TilePixelValue { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TilePixelValue` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `empty_tile` is never used [INFO] [stdout] --> src/gpu/gpu.rs:62:4 [INFO] [stdout] | [INFO] [stdout] 62 | fn empty_tile() -> Tile { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `color`, `palette`, `sprite_priority`, and `background_priority` are never read [INFO] [stdout] --> src/gpu/gpu.rs:88:3 [INFO] [stdout] | [INFO] [stdout] 87 | struct FIFOPixel { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 88 | color: TilePixelValue, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 89 | palette: u8, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 90 | sprite_priority: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 91 | background_priority: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `STAT` is never constructed [INFO] [stdout] --> src/gpu/gpu.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | struct STAT { //LCD STATus, io register 0xFF41 [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `background_FIFO`, `object_FIFO`, and `i` are never read [INFO] [stdout] --> src/gpu/gpu.rs:161:5 [INFO] [stdout] | [INFO] [stdout] 145 | pub struct GPU<'a>{ [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 161 | background_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 162 | object_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 163 | i: u8, [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/cpu/cpu.rs:31:25 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> CPU { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 31 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> CPU<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/cpu/cpu.rs:77:7 [INFO] [stdout] | [INFO] [stdout] 77 | writeln!(self.logfile, "{}", cpustate); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 77 | let _ = writeln!(self.logfile, "{}", cpustate); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `VBlank` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `vblank` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `LCD` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `lcd` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Timer` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Serial` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `serial` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Joypad` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `joypad` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/memory/membus.rs:37:25 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> MemoryBus { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> MemoryBus<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LCDC` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | pub LCDC: LCDC, //io register 0xFF40 [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `lcdc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `SCY` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | pub SCY: u8, //background viewport y position, io register 0xFF42 [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `scy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `SCX` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | pub SCX: u8, //background viewport x position, io register 0xFF43 [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `scx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LY` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | pub LY: u8, //LCD Y coordinate, io register 0xFF44 (read-only for cpu) [INFO] [stdout] | ^^ help: convert the identifier to snake case: `ly` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LYC` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | pub LYC: u8, //LY Compare, io register 0xFF45, constantly compared to LY, when equal sets related flag in STAT and (if enabled)... [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `lyc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LX` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:156:5 [INFO] [stdout] | [INFO] [stdout] 156 | LX : u8, [INFO] [stdout] | ^^ help: convert the identifier to snake case: `lx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `WY` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | pub WY: u8, //window Y coordinate, io register 0xFF4A [INFO] [stdout] | ^^ help: convert the identifier to snake case (notice the capitalization): `wy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `WX` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:158:9 [INFO] [stdout] | [INFO] [stdout] 158 | pub WX: u8, //window X coordinate + 7, io register 0xFF4B [INFO] [stdout] | ^^ help: convert the identifier to snake case (notice the capitalization): `wx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `background_FIFO` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:161:5 [INFO] [stdout] | [INFO] [stdout] 161 | background_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `background_fifo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `object_FIFO` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:162:5 [INFO] [stdout] | [INFO] [stdout] 162 | object_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `object_fifo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/gpu/gpu.rs:167:25 [INFO] [stdout] | [INFO] [stdout] 167 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> GPU { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 167 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> GPU<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `objectTop` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:210:13 [INFO] [stdout] | [INFO] [stdout] 210 | let objectTop = object.ycoord; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `object_top` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `objectBottom` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:211:13 [INFO] [stdout] | [INFO] [stdout] 211 | let objectBottom = object.ycoord + (if self.LCDC.two {16} else {8}); [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `object_bottom` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/gpu/gpu.rs:475:11 [INFO] [stdout] | [INFO] [stdout] 475 | texture_canvas.draw_point(Point::new(lx.into(),ly.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 475 | let _ = texture_canvas.draw_point(Point::new(lx.into(),ly.into())); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/gpu/gpu.rs:481:5 [INFO] [stdout] | [INFO] [stdout] 481 | self.canvas.copy(&texture, None, None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 481 | let _ = self.canvas.copy(&texture, None, None); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `setIndex` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:560:9 [INFO] [stdout] | [INFO] [stdout] 560 | let setIndex = index / 4; [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `set_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.47s [INFO] running `Command { std: "docker" "inspect" "81b8b2a829e0124699807cd4660a4ca72bec26ae1fe41747726ec5298ef4c92a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "81b8b2a829e0124699807cd4660a4ca72bec26ae1fe41747726ec5298ef4c92a", kill_on_drop: false }` [INFO] [stdout] 81b8b2a829e0124699807cd4660a4ca72bec26ae1fe41747726ec5298ef4c92a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] fa23cd44b7d28b6b4179bf75f290ea6d5ee04981c6e87a7ed98d9c3cabab9b29 [INFO] running `Command { std: "docker" "start" "-a" "fa23cd44b7d28b6b4179bf75f290ea6d5ee04981c6e87a7ed98d9c3cabab9b29", kill_on_drop: false }` [INFO] [stderr] Compiling gbemu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:89:64 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 89 - VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] 89 + VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b1)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:90:61 [INFO] [stdout] | [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 90 - LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] 90 + LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b10)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:91:63 [INFO] [stdout] | [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 91 - Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] 91 + Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b100)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:92:64 [INFO] [stdout] | [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 92 - Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] 92 + Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b1000)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu/cpu.rs:93:64 [INFO] [stdout] | [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 93 - Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] 93 + Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b10000)}, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:633:25 [INFO] [stdout] | [INFO] [stdout] 633 | flags.carry = ((0b1 & (*register >> 7)) != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 633 - flags.carry = ((0b1 & (*register >> 7)) != 0); [INFO] [stdout] 633 + flags.carry = (0b1 & (*register >> 7)) != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:635:24 [INFO] [stdout] | [INFO] [stdout] 635 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 635 - flags.zero = (*register == 0); [INFO] [stdout] 635 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:653:25 [INFO] [stdout] | [INFO] [stdout] 653 | flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 653 - flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] 653 + flags.carry = (0b1 & *register) != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:654:20 [INFO] [stdout] | [INFO] [stdout] 654 | let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 654 - let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] 654 + let b7 = 0b1 & (*register >> 7); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/cpu/cpu.rs:656:14 [INFO] [stdout] | [INFO] [stdout] 656 | if (b7 != 0) {*register += 0b10000000;} [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 656 - if (b7 != 0) {*register += 0b10000000;} [INFO] [stdout] 656 + if b7 != 0 {*register += 0b10000000;} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:657:24 [INFO] [stdout] | [INFO] [stdout] 657 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 657 - flags.zero = (*register == 0); [INFO] [stdout] 657 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:675:25 [INFO] [stdout] | [INFO] [stdout] 675 | flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 675 - flags.carry = ((0b1 & *register) != 0); [INFO] [stdout] 675 + flags.carry = (0b1 & *register) != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:677:24 [INFO] [stdout] | [INFO] [stdout] 677 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 677 - flags.zero = (*register == 0); [INFO] [stdout] 677 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:750:24 [INFO] [stdout] | [INFO] [stdout] 750 | flags.zero = ( 0 == match testbit { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 759 | } ); [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 750 ~ flags.zero = 0 == match testbit { [INFO] [stdout] 751 | TestBit::Zero => 0b1 & *register, [INFO] [stdout] ... [INFO] [stdout] 758 | TestBit::Seven => 0b1 & (*register >> 7), [INFO] [stdout] 759 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:907:30 [INFO] [stdout] | [INFO] [stdout] 907 | self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 907 - self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] 907 + self.registers.f.carry = did_overflow | did_overflow2; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:934:30 [INFO] [stdout] | [INFO] [stdout] 934 | self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 934 - self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stdout] 934 + self.registers.f.carry = did_overflow | did_overflow2; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:939:14 [INFO] [stdout] | [INFO] [stdout] 939 | let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 939 - let b7 = (0b1 & (*register >> 7)); [INFO] [stdout] 939 + let b7 = 0b1 & (*register >> 7); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:941:19 [INFO] [stdout] | [INFO] [stdout] 941 | flags.carry = (b7 != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 941 - flags.carry = (b7 != 0); [INFO] [stdout] 941 + flags.carry = b7 != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:950:14 [INFO] [stdout] | [INFO] [stdout] 950 | let b0 = (0b1 & *register); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 950 - let b0 = (0b1 & *register); [INFO] [stdout] 950 + let b0 = 0b1 & *register; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:952:19 [INFO] [stdout] | [INFO] [stdout] 952 | flags.carry = (b0 != 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 952 - flags.carry = (b0 != 0); [INFO] [stdout] 952 + flags.carry = b0 != 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/cpu/cpu.rs:954:8 [INFO] [stdout] | [INFO] [stdout] 954 | if (b7 != 0) {*register += 0b10000000} [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 954 - if (b7 != 0) {*register += 0b10000000} [INFO] [stdout] 954 + if b7 != 0 {*register += 0b10000000} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu/cpu.rs:955:18 [INFO] [stdout] | [INFO] [stdout] 955 | flags.zero = (*register == 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 955 - flags.zero = (*register == 0); [INFO] [stdout] 955 + flags.zero = *register == 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::rect::Rect` [INFO] [stdout] --> src/gpu/gpu.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use sdl2::rect::Rect; [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: `sdl2::render::Canvas` [INFO] [stdout] --> src/gpu/gpu.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::render::Canvas; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/gpu/gpu.rs:212:12 [INFO] [stdout] | [INFO] [stdout] 212 | if ((self.LY >= objectTop) & (self.LY < objectBottom)) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 212 - if ((self.LY >= objectTop) & (self.LY < objectBottom)) { [INFO] [stdout] 212 + if (self.LY >= objectTop) & (self.LY < objectBottom) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/gpu/gpu.rs:359:30 [INFO] [stdout] | [INFO] [stdout] 359 | let mapstart: usize = if (self.LCDC.three) {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 359 - let mapstart: usize = if (self.LCDC.three) {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stdout] 359 + let mapstart: usize = if self.LCDC.three {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::pixels::Color` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use sdl2::pixels::Color; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::rect::Point` [INFO] [stdout] --> src/main.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use sdl2::rect::Point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/main.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ------ matches any value [INFO] [stdout] ... [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `VBlank` [INFO] [stdout] --> src/cpu/cpu.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_VBlank` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `LCD` [INFO] [stdout] --> src/cpu/cpu.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_LCD` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Timer` [INFO] [stdout] --> src/cpu/cpu.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Serial` [INFO] [stdout] --> src/cpu/cpu.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Serial` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `Joypad` [INFO] [stdout] --> src/cpu/cpu.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Joypad` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/cpu.rs:885:7 [INFO] [stdout] | [INFO] [stdout] 885 | _ => { panic!("todo: Instruction: {:?} not yet implemented", instruction) } [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/cpu.rs:885:7 [INFO] [stdout] | [INFO] [stdout] 138 | Instruction::ADD(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 177 | Instruction::ADC(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 191 | Instruction::SUB(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 205 | Instruction::SBC(target, source) => { [INFO] [stdout] | -------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 885 | _ => { panic!("todo: Instruction: {:?} not yet implemented", instruction) } [INFO] [stdout] | ^ ...and 40 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `did_overflow` [INFO] [stdout] --> src/cpu/cpu.rs:167:29 [INFO] [stdout] | [INFO] [stdout] 167 | let (new_value, did_overflow) = self.sp.overflowing_add_signed(value); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:177:24 [INFO] [stdout] | [INFO] [stdout] 177 | Instruction::ADC(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:191:24 [INFO] [stdout] | [INFO] [stdout] 191 | Instruction::SUB(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:205:24 [INFO] [stdout] | [INFO] [stdout] 205 | Instruction::SBC(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:219:24 [INFO] [stdout] | [INFO] [stdout] 219 | Instruction::AND(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:250:24 [INFO] [stdout] | [INFO] [stdout] 250 | Instruction::XOR(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:281:23 [INFO] [stdout] | [INFO] [stdout] 281 | Instruction::OR(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:312:23 [INFO] [stdout] | [INFO] [stdout] 312 | Instruction::CP(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:314:39 [INFO] [stdout] | [INFO] [stdout] 314 | ArithmeticSource::A => {let val = self.subtract(self.registers.a); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:315:39 [INFO] [stdout] | [INFO] [stdout] 315 | ArithmeticSource::B => {let val = self.subtract(self.registers.b); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:316:39 [INFO] [stdout] | [INFO] [stdout] 316 | ArithmeticSource::C => {let val = self.subtract(self.registers.c); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:317:39 [INFO] [stdout] | [INFO] [stdout] 317 | ArithmeticSource::D => {let val = self.subtract(self.registers.d); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:318:39 [INFO] [stdout] | [INFO] [stdout] 318 | ArithmeticSource::E => {let val = self.subtract(self.registers.e); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:319:39 [INFO] [stdout] | [INFO] [stdout] 319 | ArithmeticSource::H => {let val = self.subtract(self.registers.h); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:320:39 [INFO] [stdout] | [INFO] [stdout] 320 | ArithmeticSource::L => {let val = self.subtract(self.registers.l); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:321:40 [INFO] [stdout] | [INFO] [stdout] 321 | ArithmeticSource::HL => {let val = self.subtract(self.bus.read_byte(self.registers.get_hl())); self.pc.wrapping_add(1)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `val` [INFO] [stdout] --> src/cpu/cpu.rs:322:40 [INFO] [stdout] | [INFO] [stdout] 322 | ArithmeticSource::D8 => {let val = self.subtract(self.read_next_byte()); self.pc.wrapping_add(2)}, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:344:29 [INFO] [stdout] | [INFO] [stdout] 344 | Instruction::JR(test, target) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `source` [INFO] [stdout] --> src/cpu/cpu.rs:482:34 [INFO] [stdout] | [INFO] [stdout] 482 | LoadType::Byte(target, source) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/cpu/cpu.rs:825:31 [INFO] [stdout] | [INFO] [stdout] 825 | Instruction::CALL(test, target) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu/instructions.rs:385:7 [INFO] [stdout] | [INFO] [stdout] 385 | _ => /*todo: add mapping for rest of instructions*/ None [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/instructions.rs:385:7 [INFO] [stdout] | [INFO] [stdout] 129 | 0x00 => Some(Instruction::RLC(RotateTarget::B)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 130 | 0x01 => Some(Instruction::RLC(RotateTarget::C)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 131 | 0x02 => Some(Instruction::RLC(RotateTarget::D)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 132 | 0x03 => Some(Instruction::RLC(RotateTarget::E)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 385 | _ => /*todo: add mapping for rest of instructions*/ None [INFO] [stdout] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `result` [INFO] [stdout] --> src/gpu/gpu.rs:469:9 [INFO] [stdout] | [INFO] [stdout] 469 | let result = self.canvas.with_texture_canvas(&mut texture, |texture_canvas| { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mcycles` [INFO] [stdout] --> src/main.rs:65:11 [INFO] [stdout] | [INFO] [stdout] 65 | for mcycles in 0..17556 { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mcycles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_SIZE` is never used [INFO] [stdout] --> src/memory/membus.rs:10:7 [INFO] [stdout] | [INFO] [stdout] 10 | const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Three` is never constructed [INFO] [stdout] --> src/gpu/gpu.rs:46:3 [INFO] [stdout] | [INFO] [stdout] 42 | enum PPUMode { [INFO] [stdout] | ------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 46 | Three, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `None` is never constructed [INFO] [stdout] --> src/gpu/gpu.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 50 | enum TilePixelValue { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | None, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TilePixelValue` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `empty_tile` is never used [INFO] [stdout] --> src/gpu/gpu.rs:62:4 [INFO] [stdout] | [INFO] [stdout] 62 | fn empty_tile() -> Tile { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `color`, `palette`, `sprite_priority`, and `background_priority` are never read [INFO] [stdout] --> src/gpu/gpu.rs:88:3 [INFO] [stdout] | [INFO] [stdout] 87 | struct FIFOPixel { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 88 | color: TilePixelValue, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 89 | palette: u8, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 90 | sprite_priority: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 91 | background_priority: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `STAT` is never constructed [INFO] [stdout] --> src/gpu/gpu.rs:141:8 [INFO] [stdout] | [INFO] [stdout] 141 | struct STAT { //LCD STATus, io register 0xFF41 [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `background_FIFO`, `object_FIFO`, and `i` are never read [INFO] [stdout] --> src/gpu/gpu.rs:161:5 [INFO] [stdout] | [INFO] [stdout] 145 | pub struct GPU<'a>{ [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 161 | background_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 162 | object_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 163 | i: u8, [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/cpu/cpu.rs:31:25 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> CPU { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 31 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> CPU<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/cpu/cpu.rs:77:7 [INFO] [stdout] | [INFO] [stdout] 77 | writeln!(self.logfile, "{}", cpustate); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 77 | let _ = writeln!(self.logfile, "{}", cpustate); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `VBlank` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `vblank` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `LCD` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `lcd` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Timer` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `timer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Serial` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `serial` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Joypad` should have a snake case name [INFO] [stdout] --> src/cpu/cpu.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `joypad` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/memory/membus.rs:37:25 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> MemoryBus { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> MemoryBus<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LCDC` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | pub LCDC: LCDC, //io register 0xFF40 [INFO] [stdout] | ^^^^ help: convert the identifier to snake case: `lcdc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `SCY` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | pub SCY: u8, //background viewport y position, io register 0xFF42 [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `scy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `SCX` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | pub SCX: u8, //background viewport x position, io register 0xFF43 [INFO] [stdout] | ^^^ help: convert the identifier to snake case (notice the capitalization): `scx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LY` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | pub LY: u8, //LCD Y coordinate, io register 0xFF44 (read-only for cpu) [INFO] [stdout] | ^^ help: convert the identifier to snake case: `ly` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LYC` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | pub LYC: u8, //LY Compare, io register 0xFF45, constantly compared to LY, when equal sets related flag in STAT and (if enabled)... [INFO] [stdout] | ^^^ help: convert the identifier to snake case: `lyc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `LX` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:156:5 [INFO] [stdout] | [INFO] [stdout] 156 | LX : u8, [INFO] [stdout] | ^^ help: convert the identifier to snake case: `lx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `WY` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 157 | pub WY: u8, //window Y coordinate, io register 0xFF4A [INFO] [stdout] | ^^ help: convert the identifier to snake case (notice the capitalization): `wy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `WX` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:158:9 [INFO] [stdout] | [INFO] [stdout] 158 | pub WX: u8, //window X coordinate + 7, io register 0xFF4B [INFO] [stdout] | ^^ help: convert the identifier to snake case (notice the capitalization): `wx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `background_FIFO` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:161:5 [INFO] [stdout] | [INFO] [stdout] 161 | background_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `background_fifo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `object_FIFO` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:162:5 [INFO] [stdout] | [INFO] [stdout] 162 | object_FIFO: VecDeque, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `object_fifo` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/gpu/gpu.rs:167:25 [INFO] [stdout] | [INFO] [stdout] 167 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> GPU { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 167 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> GPU<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `objectTop` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:210:13 [INFO] [stdout] | [INFO] [stdout] 210 | let objectTop = object.ycoord; [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `object_top` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `objectBottom` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:211:13 [INFO] [stdout] | [INFO] [stdout] 211 | let objectBottom = object.ycoord + (if self.LCDC.two {16} else {8}); [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `object_bottom` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/gpu/gpu.rs:475:11 [INFO] [stdout] | [INFO] [stdout] 475 | texture_canvas.draw_point(Point::new(lx.into(),ly.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 475 | let _ = texture_canvas.draw_point(Point::new(lx.into(),ly.into())); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/gpu/gpu.rs:481:5 [INFO] [stdout] | [INFO] [stdout] 481 | self.canvas.copy(&texture, None, None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 481 | let _ = self.canvas.copy(&texture, None, None); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `setIndex` should have a snake case name [INFO] [stdout] --> src/gpu/gpu.rs:560:9 [INFO] [stdout] | [INFO] [stdout] 560 | let setIndex = index / 4; [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `set_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.72s [INFO] running `Command { std: "docker" "inspect" "fa23cd44b7d28b6b4179bf75f290ea6d5ee04981c6e87a7ed98d9c3cabab9b29", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fa23cd44b7d28b6b4179bf75f290ea6d5ee04981c6e87a7ed98d9c3cabab9b29", kill_on_drop: false }` [INFO] [stdout] fa23cd44b7d28b6b4179bf75f290ea6d5ee04981c6e87a7ed98d9c3cabab9b29 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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" "+ec6f9a5b4413f74386267ef8efc93712c2ce6db6" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6da1a05594bc1ea0ac64be89db4c130b87ab18d641f07b01e3108be5d5a3f6cc [INFO] running `Command { std: "docker" "start" "-a" "6da1a05594bc1ea0ac64be89db4c130b87ab18d641f07b01e3108be5d5a3f6cc", kill_on_drop: false }` [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/cpu/cpu.rs:89:64 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 89 - VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] 89 + VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b1)}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/cpu/cpu.rs:90:61 [INFO] [stderr] | [INFO] [stderr] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 90 - LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stderr] 90 + LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b10)}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/cpu/cpu.rs:91:63 [INFO] [stderr] | [INFO] [stderr] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 91 - Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stderr] 91 + Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b100)}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/cpu/cpu.rs:92:64 [INFO] [stderr] | [INFO] [stderr] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 92 - Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stderr] 92 + Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b1000)}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/cpu/cpu.rs:93:64 [INFO] [stderr] | [INFO] [stderr] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 93 - Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stderr] 93 + Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, self.bus.read_byte(0xFF0F) - 0b10000)}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:633:25 [INFO] [stderr] | [INFO] [stderr] 633 | flags.carry = ((0b1 & (*register >> 7)) != 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 633 - flags.carry = ((0b1 & (*register >> 7)) != 0); [INFO] [stderr] 633 + flags.carry = (0b1 & (*register >> 7)) != 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:635:24 [INFO] [stderr] | [INFO] [stderr] 635 | flags.zero = (*register == 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 635 - flags.zero = (*register == 0); [INFO] [stderr] 635 + flags.zero = *register == 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:653:25 [INFO] [stderr] | [INFO] [stderr] 653 | flags.carry = ((0b1 & *register) != 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 653 - flags.carry = ((0b1 & *register) != 0); [INFO] [stderr] 653 + flags.carry = (0b1 & *register) != 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:654:20 [INFO] [stderr] | [INFO] [stderr] 654 | let b7 = (0b1 & (*register >> 7)); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 654 - let b7 = (0b1 & (*register >> 7)); [INFO] [stderr] 654 + let b7 = 0b1 & (*register >> 7); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/cpu/cpu.rs:656:14 [INFO] [stderr] | [INFO] [stderr] 656 | if (b7 != 0) {*register += 0b10000000;} [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 656 - if (b7 != 0) {*register += 0b10000000;} [INFO] [stderr] 656 + if b7 != 0 {*register += 0b10000000;} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:657:24 [INFO] [stderr] | [INFO] [stderr] 657 | flags.zero = (*register == 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 657 - flags.zero = (*register == 0); [INFO] [stderr] 657 + flags.zero = *register == 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:675:25 [INFO] [stderr] | [INFO] [stderr] 675 | flags.carry = ((0b1 & *register) != 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 675 - flags.carry = ((0b1 & *register) != 0); [INFO] [stderr] 675 + flags.carry = (0b1 & *register) != 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:677:24 [INFO] [stderr] | [INFO] [stderr] 677 | flags.zero = (*register == 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 677 - flags.zero = (*register == 0); [INFO] [stderr] 677 + flags.zero = *register == 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:750:24 [INFO] [stderr] | [INFO] [stderr] 750 | flags.zero = ( 0 == match testbit { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 759 | } ); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 750 ~ flags.zero = 0 == match testbit { [INFO] [stderr] 751 | TestBit::Zero => 0b1 & *register, [INFO] [stderr] ... [INFO] [stderr] 758 | TestBit::Seven => 0b1 & (*register >> 7), [INFO] [stderr] 759 ~ }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:907:30 [INFO] [stderr] | [INFO] [stderr] 907 | self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 907 - self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stderr] 907 + self.registers.f.carry = did_overflow | did_overflow2; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:934:30 [INFO] [stderr] | [INFO] [stderr] 934 | self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 934 - self.registers.f.carry = (did_overflow | did_overflow2); [INFO] [stderr] 934 + self.registers.f.carry = did_overflow | did_overflow2; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:939:14 [INFO] [stderr] | [INFO] [stderr] 939 | let b7 = (0b1 & (*register >> 7)); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 939 - let b7 = (0b1 & (*register >> 7)); [INFO] [stderr] 939 + let b7 = 0b1 & (*register >> 7); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:941:19 [INFO] [stderr] | [INFO] [stderr] 941 | flags.carry = (b7 != 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 941 - flags.carry = (b7 != 0); [INFO] [stderr] 941 + flags.carry = b7 != 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:950:14 [INFO] [stderr] | [INFO] [stderr] 950 | let b0 = (0b1 & *register); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 950 - let b0 = (0b1 & *register); [INFO] [stderr] 950 + let b0 = 0b1 & *register; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:952:19 [INFO] [stderr] | [INFO] [stderr] 952 | flags.carry = (b0 != 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 952 - flags.carry = (b0 != 0); [INFO] [stderr] 952 + flags.carry = b0 != 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/cpu/cpu.rs:954:8 [INFO] [stderr] | [INFO] [stderr] 954 | if (b7 != 0) {*register += 0b10000000} [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 954 - if (b7 != 0) {*register += 0b10000000} [INFO] [stderr] 954 + if b7 != 0 {*register += 0b10000000} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu/cpu.rs:955:18 [INFO] [stderr] | [INFO] [stderr] 955 | flags.zero = (*register == 0); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 955 - flags.zero = (*register == 0); [INFO] [stderr] 955 + flags.zero = *register == 0; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::rect::Rect` [INFO] [stderr] --> src/gpu/gpu.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use sdl2::rect::Rect; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::render::Canvas` [INFO] [stderr] --> src/gpu/gpu.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use sdl2::render::Canvas; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/gpu/gpu.rs:212:12 [INFO] [stderr] | [INFO] [stderr] 212 | if ((self.LY >= objectTop) & (self.LY < objectBottom)) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 212 - if ((self.LY >= objectTop) & (self.LY < objectBottom)) { [INFO] [stderr] 212 + if (self.LY >= objectTop) & (self.LY < objectBottom) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/gpu/gpu.rs:359:30 [INFO] [stderr] | [INFO] [stderr] 359 | let mapstart: usize = if (self.LCDC.three) {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 359 - let mapstart: usize = if (self.LCDC.three) {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stderr] 359 + let mapstart: usize = if self.LCDC.three {0x9C00 - VRAM_BEGIN} else {0x9800 - VRAM_BEGIN}; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::pixels::Color` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use sdl2::pixels::Color; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::rect::Point` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use sdl2::rect::Point; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu/cpu.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ------ matches any value [INFO] [stderr] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stderr] | ^^^ no value can reach this [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu/cpu.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ------ matches any value [INFO] [stderr] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stderr] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stderr] | ^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu/cpu.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ------ matches any value [INFO] [stderr] ... [INFO] [stderr] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stderr] | ^^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu/cpu.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ------ matches any value [INFO] [stderr] ... [INFO] [stderr] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stderr] | ^^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unused variable: `VBlank` [INFO] [stderr] --> src/cpu/cpu.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_VBlank` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `LCD` [INFO] [stderr] --> src/cpu/cpu.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_LCD` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Timer` [INFO] [stderr] --> src/cpu/cpu.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_Timer` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Serial` [INFO] [stderr] --> src/cpu/cpu.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Serial` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `Joypad` [INFO] [stderr] --> src/cpu/cpu.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_Joypad` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu/cpu.rs:885:7 [INFO] [stderr] | [INFO] [stderr] 885 | _ => { panic!("todo: Instruction: {:?} not yet implemented", instruction) } [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/cpu.rs:885:7 [INFO] [stderr] | [INFO] [stderr] 138 | Instruction::ADD(target, source) => { [INFO] [stderr] | -------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 177 | Instruction::ADC(target, source) => { [INFO] [stderr] | -------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 191 | Instruction::SUB(target, source) => { [INFO] [stderr] | -------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 205 | Instruction::SBC(target, source) => { [INFO] [stderr] | -------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 885 | _ => { panic!("todo: Instruction: {:?} not yet implemented", instruction) } [INFO] [stderr] | ^ ...and 40 other patterns collectively make this unreachable [INFO] [stderr] [INFO] [stderr] warning: unused variable: `did_overflow` [INFO] [stderr] --> src/cpu/cpu.rs:167:29 [INFO] [stderr] | [INFO] [stderr] 167 | let (new_value, did_overflow) = self.sp.overflowing_add_signed(value); [INFO] [stderr] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_did_overflow` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:177:24 [INFO] [stderr] | [INFO] [stderr] 177 | Instruction::ADC(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:191:24 [INFO] [stderr] | [INFO] [stderr] 191 | Instruction::SUB(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:205:24 [INFO] [stderr] | [INFO] [stderr] 205 | Instruction::SBC(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:219:24 [INFO] [stderr] | [INFO] [stderr] 219 | Instruction::AND(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:250:24 [INFO] [stderr] | [INFO] [stderr] 250 | Instruction::XOR(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:281:23 [INFO] [stderr] | [INFO] [stderr] 281 | Instruction::OR(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:312:23 [INFO] [stderr] | [INFO] [stderr] 312 | Instruction::CP(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:314:39 [INFO] [stderr] | [INFO] [stderr] 314 | ArithmeticSource::A => {let val = self.subtract(self.registers.a); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:315:39 [INFO] [stderr] | [INFO] [stderr] 315 | ArithmeticSource::B => {let val = self.subtract(self.registers.b); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:316:39 [INFO] [stderr] | [INFO] [stderr] 316 | ArithmeticSource::C => {let val = self.subtract(self.registers.c); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:317:39 [INFO] [stderr] | [INFO] [stderr] 317 | ArithmeticSource::D => {let val = self.subtract(self.registers.d); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:318:39 [INFO] [stderr] | [INFO] [stderr] 318 | ArithmeticSource::E => {let val = self.subtract(self.registers.e); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:319:39 [INFO] [stderr] | [INFO] [stderr] 319 | ArithmeticSource::H => {let val = self.subtract(self.registers.h); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:320:39 [INFO] [stderr] | [INFO] [stderr] 320 | ArithmeticSource::L => {let val = self.subtract(self.registers.l); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:321:40 [INFO] [stderr] | [INFO] [stderr] 321 | ArithmeticSource::HL => {let val = self.subtract(self.bus.read_byte(self.registers.get_hl())); self.pc.wrapping_add(1)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `val` [INFO] [stderr] --> src/cpu/cpu.rs:322:40 [INFO] [stderr] | [INFO] [stderr] 322 | ArithmeticSource::D8 => {let val = self.subtract(self.read_next_byte()); self.pc.wrapping_add(2)}, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_val` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:344:29 [INFO] [stderr] | [INFO] [stderr] 344 | Instruction::JR(test, target) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `source` [INFO] [stderr] --> src/cpu/cpu.rs:482:34 [INFO] [stderr] | [INFO] [stderr] 482 | LoadType::Byte(target, source) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target` [INFO] [stderr] --> src/cpu/cpu.rs:825:31 [INFO] [stderr] | [INFO] [stderr] 825 | Instruction::CALL(test, target) => { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu/instructions.rs:385:7 [INFO] [stderr] | [INFO] [stderr] 385 | _ => /*todo: add mapping for rest of instructions*/ None [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/instructions.rs:385:7 [INFO] [stderr] | [INFO] [stderr] 129 | 0x00 => Some(Instruction::RLC(RotateTarget::B)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] 130 | 0x01 => Some(Instruction::RLC(RotateTarget::C)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] 131 | 0x02 => Some(Instruction::RLC(RotateTarget::D)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] 132 | 0x03 => Some(Instruction::RLC(RotateTarget::E)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 385 | _ => /*todo: add mapping for rest of instructions*/ None [INFO] [stderr] | ^ ...and 252 other patterns collectively make this unreachable [INFO] [stderr] [INFO] [stderr] warning: unused variable: `result` [INFO] [stderr] --> src/gpu/gpu.rs:469:9 [INFO] [stderr] | [INFO] [stderr] 469 | let result = self.canvas.with_texture_canvas(&mut texture, |texture_canvas| { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mcycles` [INFO] [stderr] --> src/main.rs:65:11 [INFO] [stderr] | [INFO] [stderr] 65 | for mcycles in 0..17556 { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mcycles` [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_SIZE` is never used [INFO] [stderr] --> src/memory/membus.rs:10:7 [INFO] [stderr] | [INFO] [stderr] 10 | const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variant `Three` is never constructed [INFO] [stderr] --> src/gpu/gpu.rs:46:3 [INFO] [stderr] | [INFO] [stderr] 42 | enum PPUMode { [INFO] [stderr] | ------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 46 | Three, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `None` is never constructed [INFO] [stderr] --> src/gpu/gpu.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 50 | enum TilePixelValue { [INFO] [stderr] | -------------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 55 | None, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `TilePixelValue` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: function `empty_tile` is never used [INFO] [stderr] --> src/gpu/gpu.rs:62:4 [INFO] [stderr] | [INFO] [stderr] 62 | fn empty_tile() -> Tile { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `color`, `palette`, `sprite_priority`, and `background_priority` are never read [INFO] [stderr] --> src/gpu/gpu.rs:88:3 [INFO] [stderr] | [INFO] [stderr] 87 | struct FIFOPixel { [INFO] [stderr] | --------- fields in this struct [INFO] [stderr] 88 | color: TilePixelValue, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 89 | palette: u8, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 90 | sprite_priority: u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 91 | background_priority: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `STAT` is never constructed [INFO] [stderr] --> src/gpu/gpu.rs:141:8 [INFO] [stderr] | [INFO] [stderr] 141 | struct STAT { //LCD STATus, io register 0xFF41 [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `background_FIFO`, `object_FIFO`, and `i` are never read [INFO] [stderr] --> src/gpu/gpu.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 145 | pub struct GPU<'a>{ [INFO] [stderr] | --- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 161 | background_FIFO: VecDeque, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 162 | object_FIFO: VecDeque, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 163 | i: u8, [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/cpu/cpu.rs:31:25 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> CPU { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> CPU<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/cpu/cpu.rs:77:7 [INFO] [stderr] | [INFO] [stderr] 77 | writeln!(self.logfile, "{}", cpustate); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 77 | let _ = writeln!(self.logfile, "{}", cpustate); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: variable `VBlank` should have a snake case name [INFO] [stderr] --> src/cpu/cpu.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | VBlank => {self.pc = 0x40; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1))}, [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `vblank` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable `LCD` should have a snake case name [INFO] [stderr] --> src/cpu/cpu.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | LCD => {self.pc = 0x48; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10))}, [INFO] [stderr] | ^^^ help: convert the identifier to snake case: `lcd` [INFO] [stderr] [INFO] [stderr] warning: variable `Timer` should have a snake case name [INFO] [stderr] --> src/cpu/cpu.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | Timer => {self.pc = 0x50; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b100))}, [INFO] [stderr] | ^^^^^ help: convert the identifier to snake case: `timer` [INFO] [stderr] [INFO] [stderr] warning: variable `Serial` should have a snake case name [INFO] [stderr] --> src/cpu/cpu.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | Serial => {self.pc = 0x58; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b1000))}, [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `serial` [INFO] [stderr] [INFO] [stderr] warning: variable `Joypad` should have a snake case name [INFO] [stderr] --> src/cpu/cpu.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | Joypad => {self.pc = 0x60; self.bus.write_byte(0xFF0F, (self.bus.read_byte(0xFF0F) - 0b10000))}, [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case: `joypad` [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/memory/membus.rs:37:25 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> MemoryBus { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 37 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> MemoryBus<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: structure field `LCDC` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | pub LCDC: LCDC, //io register 0xFF40 [INFO] [stderr] | ^^^^ help: convert the identifier to snake case: `lcdc` [INFO] [stderr] [INFO] [stderr] warning: structure field `SCY` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | pub SCY: u8, //background viewport y position, io register 0xFF42 [INFO] [stderr] | ^^^ help: convert the identifier to snake case (notice the capitalization): `scy` [INFO] [stderr] [INFO] [stderr] warning: structure field `SCX` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | pub SCX: u8, //background viewport x position, io register 0xFF43 [INFO] [stderr] | ^^^ help: convert the identifier to snake case (notice the capitalization): `scx` [INFO] [stderr] [INFO] [stderr] warning: structure field `LY` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | pub LY: u8, //LCD Y coordinate, io register 0xFF44 (read-only for cpu) [INFO] [stderr] | ^^ help: convert the identifier to snake case: `ly` [INFO] [stderr] [INFO] [stderr] warning: structure field `LYC` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | pub LYC: u8, //LY Compare, io register 0xFF45, constantly compared to LY, when equal sets related flag in STAT and (if enabled)... [INFO] [stderr] | ^^^ help: convert the identifier to snake case: `lyc` [INFO] [stderr] [INFO] [stderr] warning: structure field `LX` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:156:5 [INFO] [stderr] | [INFO] [stderr] 156 | LX : u8, [INFO] [stderr] | ^^ help: convert the identifier to snake case: `lx` [INFO] [stderr] [INFO] [stderr] warning: structure field `WY` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | pub WY: u8, //window Y coordinate, io register 0xFF4A [INFO] [stderr] | ^^ help: convert the identifier to snake case (notice the capitalization): `wy` [INFO] [stderr] [INFO] [stderr] warning: structure field `WX` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | pub WX: u8, //window X coordinate + 7, io register 0xFF4B [INFO] [stderr] | ^^ help: convert the identifier to snake case (notice the capitalization): `wx` [INFO] [stderr] [INFO] [stderr] warning: structure field `background_FIFO` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | background_FIFO: VecDeque, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `background_fifo` [INFO] [stderr] [INFO] [stderr] warning: structure field `object_FIFO` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | object_FIFO: VecDeque, [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `object_fifo` [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/gpu/gpu.rs:167:25 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> GPU { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 167 | pub fn new(sdlcanvas: &mut sdl2::render::WindowCanvas) -> GPU<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: variable `objectTop` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:210:13 [INFO] [stderr] | [INFO] [stderr] 210 | let objectTop = object.ycoord; [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `object_top` [INFO] [stderr] [INFO] [stderr] warning: variable `objectBottom` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:211:13 [INFO] [stderr] | [INFO] [stderr] 211 | let objectBottom = object.ycoord + (if self.LCDC.two {16} else {8}); [INFO] [stderr] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `object_bottom` [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/gpu/gpu.rs:475:11 [INFO] [stderr] | [INFO] [stderr] 475 | texture_canvas.draw_point(Point::new(lx.into(),ly.into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 475 | let _ = texture_canvas.draw_point(Point::new(lx.into(),ly.into())); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> src/gpu/gpu.rs:481:5 [INFO] [stderr] | [INFO] [stderr] 481 | self.canvas.copy(&texture, None, None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] help: use `let _ = ...` to ignore the resulting value [INFO] [stderr] | [INFO] [stderr] 481 | let _ = self.canvas.copy(&texture, None, None); [INFO] [stderr] | +++++++ [INFO] [stderr] [INFO] [stderr] warning: variable `setIndex` should have a snake case name [INFO] [stderr] --> src/gpu/gpu.rs:560:9 [INFO] [stderr] | [INFO] [stderr] 560 | let setIndex = index / 4; [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `set_index` [INFO] [stderr] [INFO] [stderr] warning: `gbemu` (bin "gbemu" test) generated 93 warnings (run `cargo fix --bin "gbemu" -p gbemu --tests` to apply 59 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/gbemu-64800b4f797811b8) [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" "6da1a05594bc1ea0ac64be89db4c130b87ab18d641f07b01e3108be5d5a3f6cc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6da1a05594bc1ea0ac64be89db4c130b87ab18d641f07b01e3108be5d5a3f6cc", kill_on_drop: false }` [INFO] [stdout] 6da1a05594bc1ea0ac64be89db4c130b87ab18d641f07b01e3108be5d5a3f6cc