[INFO] cloning repository https://github.com/nick-gl/gb_emulator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nick-gl/gb_emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick-gl%2Fgb_emulator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick-gl%2Fgb_emulator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 8af2156b49920e423146a433ee86e85db71d09f5 [INFO] testing nick-gl/gb_emulator against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146098-7 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnick-gl%2Fgb_emulator" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/nick-gl/gb_emulator [INFO] finished tweaking git repo https://github.com/nick-gl/gb_emulator [INFO] tweaked toml for git repo https://github.com/nick-gl/gb_emulator written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/nick-gl/gb_emulator on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/nick-gl/gb_emulator 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" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9db2a3e3b53553923f108fdc35061ef8877a7f634c906d4240f733634073da90 [INFO] running `Command { std: "docker" "start" "-a" "9db2a3e3b53553923f108fdc35061ef8877a7f634c906d4240f733634073da90", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9db2a3e3b53553923f108fdc35061ef8877a7f634c906d4240f733634073da90", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9db2a3e3b53553923f108fdc35061ef8877a7f634c906d4240f733634073da90", kill_on_drop: false }` [INFO] [stdout] 9db2a3e3b53553923f108fdc35061ef8877a7f634c906d4240f733634073da90 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 80420ca6b523bdaed85404d685ab13eda9d8b8e27583d7e9c6e54d692920d9d1 [INFO] running `Command { std: "docker" "start" "-a" "80420ca6b523bdaed85404d685ab13eda9d8b8e27583d7e9c6e54d692920d9d1", kill_on_drop: false }` [INFO] [stderr] Compiling gb_emu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::hash_map::Values` [INFO] [stdout] --> src/cpu.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::hash_map::Values; [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: `ADDHLTarget` [INFO] [stdout] --> src/cpu.rs:2:39 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::instruction::{Instruction, ADDHLTarget, ArithmeticTarget, IncTarget, ByteAddressFromA, AFromByteAddress, IndirectFromA, AF... [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu.rs:1280:25 [INFO] [stdout] | [INFO] [stdout] 1280 | let new_value = (values >> 1); [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] 1280 - let new_value = (values >> 1); [INFO] [stdout] 1280 + let new_value = values >> 1 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu.rs:1290:29 [INFO] [stdout] | [INFO] [stdout] 1290 | let mut new_value = (values >> 1); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 1290 - let mut new_value = (values >> 1); [INFO] [stdout] 1290 + let mut new_value = values >> 1 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu.rs:106:29 [INFO] [stdout] | [INFO] [stdout] 105 | ... WordByteSource::U16 | WordByteSource::SP => 3, [INFO] [stdout] | ---------------------------------------- matches all the relevant values [INFO] [stdout] 106 | ... _=> 1 [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: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:772:29 [INFO] [stdout] | [INFO] [stdout] 772 | let new_value = self.or(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1011:29 [INFO] [stdout] | [INFO] [stdout] 1011 | let new_value = self.sub(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1021:29 [INFO] [stdout] | [INFO] [stdout] 1021 | let new_value = self.sub(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1026:29 [INFO] [stdout] | [INFO] [stdout] 1026 | let new_value = self.sub(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1031:29 [INFO] [stdout] | [INFO] [stdout] 1031 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1035:29 [INFO] [stdout] | [INFO] [stdout] 1035 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1039:29 [INFO] [stdout] | [INFO] [stdout] 1039 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1043:29 [INFO] [stdout] | [INFO] [stdout] 1043 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1047:29 [INFO] [stdout] | [INFO] [stdout] 1047 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/cpu.rs:1451:26 [INFO] [stdout] | [INFO] [stdout] 1451 | fn set_af(&mut self, value: u16) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/instruction.rs:369:13 [INFO] [stdout] | [INFO] [stdout] 369 | _ => 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/instruction.rs:369:13 [INFO] [stdout] | [INFO] [stdout] 269 | 0x00 => Some(Instruction::RLC(B)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 270 | 0x01 => Some(Instruction::RLC(C)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 271 | 0x02 => Some(Instruction::RLC(D)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 272 | 0x03 => Some(Instruction::RLC(E)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 369 | _ => None, [INFO] [stdout] | ^ ...and 63 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `filename` [INFO] [stdout] --> src/cartride.rs:22:24 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn load(&self, filename: &str) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Frequency` is more private than the item `Timer::new` [INFO] [stdout] --> src/timer.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn new(frequency: Frequency) -> Timer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `Timer::new` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Frequency` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/timer.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | enum Frequency { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CPU` is never constructed [INFO] [stdout] --> src/cpu.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct CPU { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Register` is never constructed [INFO] [stdout] --> src/cpu.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | struct Register { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/cpu.rs:33:11 [INFO] [stdout] | [INFO] [stdout] 32 | impl CPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] 33 | pub fn step(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | fn execute(&mut self, instruction: Instruction) -> u16 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1121 | fn add_hl(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1131 | fn pop(&mut self) -> u16 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1140 | fn push(&mut self, value: u16) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1147 | fn and(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1155 | fn jump(&self, jump: bool) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1164 | fn ccf(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1167 | fn scf(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1170 | fn rra(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1182 | fn rr(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 1195 | fn rla(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1207 | fn rl(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 1220 | fn rrca(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1229 | fn rrc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1239 | fn rrla(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1249 | fn rlc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1260 | fn cpl(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1265 | fn bit(&mut self, bit: u8, value: u8) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1272 | fn reset(&mut self, bit: u8, value: u8) -> u8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1275 | fn set(&mut self, bit: u8, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1278 | fn srl(&mut self, values: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1287 | fn sra(&mut self, values: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1298 | fn sla(&mut self, values: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1309 | fn dec16(&mut self, values: u16) -> u16 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1312 | fn inc16(&mut self, values: u16) -> u16 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1316 | fn or(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 1324 | fn xor(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1332 | fn dec8(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1340 | fn inc8(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1348 | fn adc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1360 | fn sbc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1370 | fn sub(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1378 | fn add(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1387 | fn swap(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/cpu.rs:1423:8 [INFO] [stdout] | [INFO] [stdout] 1422 | impl Register { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 1423 | fn get_hl(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1427 | fn set_hl(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1431 | fn get_bc(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1435 | fn set_bc(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1439 | fn get_de(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1443 | fn set_de(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1447 | fn get_af(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1451 | fn set_af(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | pub const VRAM_BEGIN: usize = 0x8000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_END` is never used [INFO] [stdout] --> src/bus.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | pub const VRAM_END: usize = 0x9FFF; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:6:11 [INFO] [stdout] | [INFO] [stdout] 6 | pub const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WRAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const WRAM_BEGIN: usize = 0xC000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WRAM_END` is never used [INFO] [stdout] --> src/bus.rs:9:11 [INFO] [stdout] | [INFO] [stdout] 9 | pub const WRAM_END: usize = 0xCFFF; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WRAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const WRAM_SIZE: usize = WRAM_END - WRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SWITCH_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const SWITCH_BEGIN: usize = 0xA000; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SWITCH_END` is never used [INFO] [stdout] --> src/bus.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub const SWITCH_END: usize = 0xBFFF; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SWITCH_SIZE` is never used [INFO] [stdout] --> src/bus.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const SWITCH_SIZE: usize = SWITCH_END - SWITCH_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:16:11 [INFO] [stdout] | [INFO] [stdout] 16 | pub const OAM_BEGIN: usize = 0xFE00; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_END` is never used [INFO] [stdout] --> src/bus.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | pub const OAM_END: usize = 0xFE9F; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const OAM_SIZE: usize = OAM_END - OAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IO_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub const IO_BEGIN: usize = 0xFF00; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IO_END` is never used [INFO] [stdout] --> src/bus.rs:21:11 [INFO] [stdout] | [INFO] [stdout] 21 | pub const IO_END: usize = 0xFF7F; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IO_SIZE` is never used [INFO] [stdout] --> src/bus.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const IO_SIZE: usize = IO_END - IO_BEGIN + 1; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HRAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:24:11 [INFO] [stdout] | [INFO] [stdout] 24 | pub const HRAM_BEGIN: usize = 0xFF80; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HRAM_END` is never used [INFO] [stdout] --> src/bus.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | pub const HRAM_END: usize = 0xFFFE; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HRAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const HRAM_SIZE: usize = HRAM_END - HRAM_BEGIN + 1; //test [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MemoryBus` is never constructed [INFO] [stdout] --> src/bus.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct MemoryBus { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `read_byte`, and `write_byte` are never used [INFO] [stdout] --> src/bus.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl MemoryBus { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn update(&mut self, cycle: u8) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn read_byte(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn write_byte(&mut self, address: u16, value: u8) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `from_byte`, `from_byte_not_prefixed`, `from_byte_prefixed`, and `decode_prefix_target` are never used [INFO] [stdout] --> src/instruction.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 1 | impl Instruction { [INFO] [stdout] | ---------------- associated functions in this implementation [INFO] [stdout] 2 | pub fn from_byte(byte: u8, prefix: bool) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 9 | pub fn from_byte_not_prefixed(byte: u8) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn from_byte_prefixed(byte: u8) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 373 | fn decode_prefix_target(code: u8) -> PrefixTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Instruction` is never used [INFO] [stdout] --> src/instruction.rs:388:10 [INFO] [stdout] | [INFO] [stdout] 388 | pub enum Instruction { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `StackTarget` is never used [INFO] [stdout] --> src/instruction.rs:429:10 [INFO] [stdout] | [INFO] [stdout] 429 | pub enum StackTarget { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ArithmeticTarget` is never used [INFO] [stdout] --> src/instruction.rs:436:10 [INFO] [stdout] | [INFO] [stdout] 436 | pub enum ArithmeticTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PrefixTarget` is never used [INFO] [stdout] --> src/instruction.rs:448:10 [INFO] [stdout] | [INFO] [stdout] 448 | pub enum PrefixTarget { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `IncTarget` is never used [INFO] [stdout] --> src/instruction.rs:458:10 [INFO] [stdout] | [INFO] [stdout] 458 | pub enum IncTarget { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ADDHLTarget` is never used [INFO] [stdout] --> src/instruction.rs:471:10 [INFO] [stdout] | [INFO] [stdout] 471 | pub enum ADDHLTarget { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `JumpTest` is never used [INFO] [stdout] --> src/instruction.rs:477:10 [INFO] [stdout] | [INFO] [stdout] 477 | pub enum JumpTest { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WordByteTarget` is never used [INFO] [stdout] --> src/instruction.rs:484:10 [INFO] [stdout] | [INFO] [stdout] 484 | pub enum WordByteTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WordByteSource` is never used [INFO] [stdout] --> src/instruction.rs:488:10 [INFO] [stdout] | [INFO] [stdout] 488 | pub enum WordByteSource { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AFromIndirect` is never used [INFO] [stdout] --> src/instruction.rs:492:10 [INFO] [stdout] | [INFO] [stdout] 492 | pub enum AFromIndirect { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `IndirectFromA` is never used [INFO] [stdout] --> src/instruction.rs:496:10 [INFO] [stdout] | [INFO] [stdout] 496 | pub enum IndirectFromA { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AFromByteAddress` is never used [INFO] [stdout] --> src/instruction.rs:499:10 [INFO] [stdout] | [INFO] [stdout] 499 | pub enum AFromByteAddress { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ByteAddressFromA` is never used [INFO] [stdout] --> src/instruction.rs:505:10 [INFO] [stdout] | [INFO] [stdout] 505 | pub enum ByteAddressFromA { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `LoadByteTarget` is never used [INFO] [stdout] --> src/instruction.rs:511:10 [INFO] [stdout] | [INFO] [stdout] 511 | pub enum LoadByteTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `LoadByteSource` is never used [INFO] [stdout] --> src/instruction.rs:514:10 [INFO] [stdout] | [INFO] [stdout] 514 | pub enum LoadByteSource { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `LoadType` is never used [INFO] [stdout] --> src/instruction.rs:517:10 [INFO] [stdout] | [INFO] [stdout] 517 | pub enum LoadType { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Cartridge` is never constructed [INFO] [stdout] --> src/cartride.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Cartridge { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MbcType` is never used [INFO] [stdout] --> src/cartride.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum MbcType { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load` is never used [INFO] [stdout] --> src/cartride.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl Cartridge { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 22 | pub fn load(&self, filename: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Frequency` is never used [INFO] [stdout] --> src/timer.rs:2:6 [INFO] [stdout] | [INFO] [stdout] 2 | enum Frequency { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `find_cycle` is never used [INFO] [stdout] --> src/timer.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 8 | impl Frequency { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 9 | fn find_cycle(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Timer` is never constructed [INFO] [stdout] --> src/timer.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Timer { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `update` are never used [INFO] [stdout] --> src/timer.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Timer { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 26 | [INFO] [stdout] 27 | pub fn new(frequency: Frequency) -> Timer { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn update(&mut self, cycles: u8) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.20s [INFO] running `Command { std: "docker" "inspect" "80420ca6b523bdaed85404d685ab13eda9d8b8e27583d7e9c6e54d692920d9d1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "80420ca6b523bdaed85404d685ab13eda9d8b8e27583d7e9c6e54d692920d9d1", kill_on_drop: false }` [INFO] [stdout] 80420ca6b523bdaed85404d685ab13eda9d8b8e27583d7e9c6e54d692920d9d1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f6ec0c86a4ff82357580b80f2c86f11ab11bc92f03f99191fea94511e0ebf117 [INFO] running `Command { std: "docker" "start" "-a" "f6ec0c86a4ff82357580b80f2c86f11ab11bc92f03f99191fea94511e0ebf117", kill_on_drop: false }` [INFO] [stderr] Compiling gb_emu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::collections::hash_map::Values` [INFO] [stdout] --> src/cpu.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::collections::hash_map::Values; [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: `ADDHLTarget` [INFO] [stdout] --> src/cpu.rs:2:39 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::instruction::{Instruction, ADDHLTarget, ArithmeticTarget, IncTarget, ByteAddressFromA, AFromByteAddress, IndirectFromA, AF... [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu.rs:1280:25 [INFO] [stdout] | [INFO] [stdout] 1280 | let new_value = (values >> 1); [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] 1280 - let new_value = (values >> 1); [INFO] [stdout] 1280 + let new_value = values >> 1 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/cpu.rs:1290:29 [INFO] [stdout] | [INFO] [stdout] 1290 | let mut new_value = (values >> 1); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 1290 - let mut new_value = (values >> 1); [INFO] [stdout] 1290 + let mut new_value = values >> 1 ; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/cpu.rs:106:29 [INFO] [stdout] | [INFO] [stdout] 105 | ... WordByteSource::U16 | WordByteSource::SP => 3, [INFO] [stdout] | ---------------------------------------- matches all the relevant values [INFO] [stdout] 106 | ... _=> 1 [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: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:772:29 [INFO] [stdout] | [INFO] [stdout] 772 | let new_value = self.or(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1011:29 [INFO] [stdout] | [INFO] [stdout] 1011 | let new_value = self.sub(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1021:29 [INFO] [stdout] | [INFO] [stdout] 1021 | let new_value = self.sub(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1026:29 [INFO] [stdout] | [INFO] [stdout] 1026 | let new_value = self.sub(value); [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1031:29 [INFO] [stdout] | [INFO] [stdout] 1031 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1035:29 [INFO] [stdout] | [INFO] [stdout] 1035 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1039:29 [INFO] [stdout] | [INFO] [stdout] 1039 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1043:29 [INFO] [stdout] | [INFO] [stdout] 1043 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `new_value` [INFO] [stdout] --> src/cpu.rs:1047:29 [INFO] [stdout] | [INFO] [stdout] 1047 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/cpu.rs:1451:26 [INFO] [stdout] | [INFO] [stdout] 1451 | fn set_af(&mut self, value: u16) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/instruction.rs:369:13 [INFO] [stdout] | [INFO] [stdout] 369 | _ => 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/instruction.rs:369:13 [INFO] [stdout] | [INFO] [stdout] 269 | 0x00 => Some(Instruction::RLC(B)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 270 | 0x01 => Some(Instruction::RLC(C)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 271 | 0x02 => Some(Instruction::RLC(D)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] 272 | 0x03 => Some(Instruction::RLC(E)), [INFO] [stdout] | ---- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 369 | _ => None, [INFO] [stdout] | ^ ...and 63 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `filename` [INFO] [stdout] --> src/cartride.rs:22:24 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn load(&self, filename: &str) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Frequency` is more private than the item `Timer::new` [INFO] [stdout] --> src/timer.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | pub fn new(frequency: Frequency) -> Timer { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `Timer::new` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Frequency` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/timer.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | enum Frequency { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CPU` is never constructed [INFO] [stdout] --> src/cpu.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct CPU { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Register` is never constructed [INFO] [stdout] --> src/cpu.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | struct Register { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/cpu.rs:33:11 [INFO] [stdout] | [INFO] [stdout] 32 | impl CPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] 33 | pub fn step(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | fn execute(&mut self, instruction: Instruction) -> u16 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1121 | fn add_hl(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1131 | fn pop(&mut self) -> u16 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1140 | fn push(&mut self, value: u16) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1147 | fn and(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1155 | fn jump(&self, jump: bool) -> u16 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1164 | fn ccf(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1167 | fn scf(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1170 | fn rra(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1182 | fn rr(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 1195 | fn rla(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1207 | fn rl(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 1220 | fn rrca(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1229 | fn rrc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1239 | fn rrla(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1249 | fn rlc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1260 | fn cpl(&mut self) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1265 | fn bit(&mut self, bit: u8, value: u8) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1272 | fn reset(&mut self, bit: u8, value: u8) -> u8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1275 | fn set(&mut self, bit: u8, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1278 | fn srl(&mut self, values: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1287 | fn sra(&mut self, values: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1298 | fn sla(&mut self, values: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1309 | fn dec16(&mut self, values: u16) -> u16 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1312 | fn inc16(&mut self, values: u16) -> u16 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1316 | fn or(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 1324 | fn xor(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1332 | fn dec8(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1340 | fn inc8(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 1348 | fn adc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1360 | fn sbc(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1370 | fn sub(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1378 | fn add(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 1387 | fn swap(&mut self, value: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/cpu.rs:1423:8 [INFO] [stdout] | [INFO] [stdout] 1422 | impl Register { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 1423 | fn get_hl(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1427 | fn set_hl(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1431 | fn get_bc(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1435 | fn set_bc(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1439 | fn get_de(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1443 | fn set_de(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1447 | fn get_af(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1451 | fn set_af(&mut self, value: u16) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | pub const VRAM_BEGIN: usize = 0x8000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_END` is never used [INFO] [stdout] --> src/bus.rs:5:11 [INFO] [stdout] | [INFO] [stdout] 5 | pub const VRAM_END: usize = 0x9FFF; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VRAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:6:11 [INFO] [stdout] | [INFO] [stdout] 6 | pub const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WRAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:8:11 [INFO] [stdout] | [INFO] [stdout] 8 | pub const WRAM_BEGIN: usize = 0xC000; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WRAM_END` is never used [INFO] [stdout] --> src/bus.rs:9:11 [INFO] [stdout] | [INFO] [stdout] 9 | pub const WRAM_END: usize = 0xCFFF; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WRAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub const WRAM_SIZE: usize = WRAM_END - WRAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SWITCH_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const SWITCH_BEGIN: usize = 0xA000; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SWITCH_END` is never used [INFO] [stdout] --> src/bus.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub const SWITCH_END: usize = 0xBFFF; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SWITCH_SIZE` is never used [INFO] [stdout] --> src/bus.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const SWITCH_SIZE: usize = SWITCH_END - SWITCH_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:16:11 [INFO] [stdout] | [INFO] [stdout] 16 | pub const OAM_BEGIN: usize = 0xFE00; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_END` is never used [INFO] [stdout] --> src/bus.rs:17:11 [INFO] [stdout] | [INFO] [stdout] 17 | pub const OAM_END: usize = 0xFE9F; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const OAM_SIZE: usize = OAM_END - OAM_BEGIN + 1; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IO_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:20:11 [INFO] [stdout] | [INFO] [stdout] 20 | pub const IO_BEGIN: usize = 0xFF00; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IO_END` is never used [INFO] [stdout] --> src/bus.rs:21:11 [INFO] [stdout] | [INFO] [stdout] 21 | pub const IO_END: usize = 0xFF7F; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `IO_SIZE` is never used [INFO] [stdout] --> src/bus.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const IO_SIZE: usize = IO_END - IO_BEGIN + 1; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HRAM_BEGIN` is never used [INFO] [stdout] --> src/bus.rs:24:11 [INFO] [stdout] | [INFO] [stdout] 24 | pub const HRAM_BEGIN: usize = 0xFF80; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HRAM_END` is never used [INFO] [stdout] --> src/bus.rs:25:11 [INFO] [stdout] | [INFO] [stdout] 25 | pub const HRAM_END: usize = 0xFFFE; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HRAM_SIZE` is never used [INFO] [stdout] --> src/bus.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const HRAM_SIZE: usize = HRAM_END - HRAM_BEGIN + 1; //test [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MemoryBus` is never constructed [INFO] [stdout] --> src/bus.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct MemoryBus { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `read_byte`, and `write_byte` are never used [INFO] [stdout] --> src/bus.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl MemoryBus { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn update(&mut self, cycle: u8) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn read_byte(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn write_byte(&mut self, address: u16, value: u8) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `from_byte`, `from_byte_not_prefixed`, `from_byte_prefixed`, and `decode_prefix_target` are never used [INFO] [stdout] --> src/instruction.rs:2:12 [INFO] [stdout] | [INFO] [stdout] 1 | impl Instruction { [INFO] [stdout] | ---------------- associated functions in this implementation [INFO] [stdout] 2 | pub fn from_byte(byte: u8, prefix: bool) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 9 | pub fn from_byte_not_prefixed(byte: u8) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn from_byte_prefixed(byte: u8) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 373 | fn decode_prefix_target(code: u8) -> PrefixTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Instruction` is never used [INFO] [stdout] --> src/instruction.rs:388:10 [INFO] [stdout] | [INFO] [stdout] 388 | pub enum Instruction { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `StackTarget` is never used [INFO] [stdout] --> src/instruction.rs:429:10 [INFO] [stdout] | [INFO] [stdout] 429 | pub enum StackTarget { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ArithmeticTarget` is never used [INFO] [stdout] --> src/instruction.rs:436:10 [INFO] [stdout] | [INFO] [stdout] 436 | pub enum ArithmeticTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PrefixTarget` is never used [INFO] [stdout] --> src/instruction.rs:448:10 [INFO] [stdout] | [INFO] [stdout] 448 | pub enum PrefixTarget { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `IncTarget` is never used [INFO] [stdout] --> src/instruction.rs:458:10 [INFO] [stdout] | [INFO] [stdout] 458 | pub enum IncTarget { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ADDHLTarget` is never used [INFO] [stdout] --> src/instruction.rs:471:10 [INFO] [stdout] | [INFO] [stdout] 471 | pub enum ADDHLTarget { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `JumpTest` is never used [INFO] [stdout] --> src/instruction.rs:477:10 [INFO] [stdout] | [INFO] [stdout] 477 | pub enum JumpTest { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WordByteTarget` is never used [INFO] [stdout] --> src/instruction.rs:484:10 [INFO] [stdout] | [INFO] [stdout] 484 | pub enum WordByteTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WordByteSource` is never used [INFO] [stdout] --> src/instruction.rs:488:10 [INFO] [stdout] | [INFO] [stdout] 488 | pub enum WordByteSource { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AFromIndirect` is never used [INFO] [stdout] --> src/instruction.rs:492:10 [INFO] [stdout] | [INFO] [stdout] 492 | pub enum AFromIndirect { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `IndirectFromA` is never used [INFO] [stdout] --> src/instruction.rs:496:10 [INFO] [stdout] | [INFO] [stdout] 496 | pub enum IndirectFromA { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AFromByteAddress` is never used [INFO] [stdout] --> src/instruction.rs:499:10 [INFO] [stdout] | [INFO] [stdout] 499 | pub enum AFromByteAddress { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ByteAddressFromA` is never used [INFO] [stdout] --> src/instruction.rs:505:10 [INFO] [stdout] | [INFO] [stdout] 505 | pub enum ByteAddressFromA { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `LoadByteTarget` is never used [INFO] [stdout] --> src/instruction.rs:511:10 [INFO] [stdout] | [INFO] [stdout] 511 | pub enum LoadByteTarget { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `LoadByteSource` is never used [INFO] [stdout] --> src/instruction.rs:514:10 [INFO] [stdout] | [INFO] [stdout] 514 | pub enum LoadByteSource { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `LoadType` is never used [INFO] [stdout] --> src/instruction.rs:517:10 [INFO] [stdout] | [INFO] [stdout] 517 | pub enum LoadType { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Cartridge` is never constructed [INFO] [stdout] --> src/cartride.rs:1:12 [INFO] [stdout] | [INFO] [stdout] 1 | pub struct Cartridge { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MbcType` is never used [INFO] [stdout] --> src/cartride.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | pub enum MbcType { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `load` is never used [INFO] [stdout] --> src/cartride.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl Cartridge { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 22 | pub fn load(&self, filename: &str) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Frequency` is never used [INFO] [stdout] --> src/timer.rs:2:6 [INFO] [stdout] | [INFO] [stdout] 2 | enum Frequency { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `find_cycle` is never used [INFO] [stdout] --> src/timer.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 8 | impl Frequency { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 9 | fn find_cycle(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Timer` is never constructed [INFO] [stdout] --> src/timer.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct Timer { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `update` are never used [INFO] [stdout] --> src/timer.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 25 | impl Timer { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 26 | [INFO] [stdout] 27 | pub fn new(frequency: Frequency) -> Timer { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn update(&mut self, cycles: u8) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.31s [INFO] running `Command { std: "docker" "inspect" "f6ec0c86a4ff82357580b80f2c86f11ab11bc92f03f99191fea94511e0ebf117", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f6ec0c86a4ff82357580b80f2c86f11ab11bc92f03f99191fea94511e0ebf117", kill_on_drop: false }` [INFO] [stdout] f6ec0c86a4ff82357580b80f2c86f11ab11bc92f03f99191fea94511e0ebf117 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 505d966716cad36d58cda117f9d613fa2863c10cb26aecdd61ae27d3ff26717b [INFO] running `Command { std: "docker" "start" "-a" "505d966716cad36d58cda117f9d613fa2863c10cb26aecdd61ae27d3ff26717b", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::collections::hash_map::Values` [INFO] [stderr] --> src/cpu.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::collections::hash_map::Values; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `ADDHLTarget` [INFO] [stderr] --> src/cpu.rs:2:39 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::instruction::{Instruction, ADDHLTarget, ArithmeticTarget, IncTarget, ByteAddressFromA, AFromByteAddress, IndirectFromA, AF... [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu.rs:1280:25 [INFO] [stderr] | [INFO] [stderr] 1280 | let new_value = (values >> 1); [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] 1280 - let new_value = (values >> 1); [INFO] [stderr] 1280 + let new_value = values >> 1 ; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/cpu.rs:1290:29 [INFO] [stderr] | [INFO] [stderr] 1290 | let mut new_value = (values >> 1); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 1290 - let mut new_value = (values >> 1); [INFO] [stderr] 1290 + let mut new_value = values >> 1 ; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/cpu.rs:106:29 [INFO] [stderr] | [INFO] [stderr] 105 | ... WordByteSource::U16 | WordByteSource::SP => 3, [INFO] [stderr] | ---------------------------------------- matches all the relevant values [INFO] [stderr] 106 | ... _=> 1 [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: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:772:29 [INFO] [stderr] | [INFO] [stderr] 772 | let new_value = self.or(value); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1011:29 [INFO] [stderr] | [INFO] [stderr] 1011 | let new_value = self.sub(value); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1021:29 [INFO] [stderr] | [INFO] [stderr] 1021 | let new_value = self.sub(value); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1026:29 [INFO] [stderr] | [INFO] [stderr] 1026 | let new_value = self.sub(value); [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1031:29 [INFO] [stderr] | [INFO] [stderr] 1031 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1035:29 [INFO] [stderr] | [INFO] [stderr] 1035 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1039:29 [INFO] [stderr] | [INFO] [stderr] 1039 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1043:29 [INFO] [stderr] | [INFO] [stderr] 1043 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `new_value` [INFO] [stderr] --> src/cpu.rs:1047:29 [INFO] [stderr] | [INFO] [stderr] 1047 | let new_value = self.sub(value);self.pc.wrapping_add(1) [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_value` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/cpu.rs:1451:26 [INFO] [stderr] | [INFO] [stderr] 1451 | fn set_af(&mut self, value: u16) { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/instruction.rs:369:13 [INFO] [stderr] | [INFO] [stderr] 369 | _ => 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/instruction.rs:369:13 [INFO] [stderr] | [INFO] [stderr] 269 | 0x00 => Some(Instruction::RLC(B)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] 270 | 0x01 => Some(Instruction::RLC(C)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] 271 | 0x02 => Some(Instruction::RLC(D)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] 272 | 0x03 => Some(Instruction::RLC(E)), [INFO] [stderr] | ---- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 369 | _ => None, [INFO] [stderr] | ^ ...and 63 other patterns collectively make this unreachable [INFO] [stderr] [INFO] [stderr] warning: unused variable: `filename` [INFO] [stderr] --> src/cartride.rs:22:24 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn load(&self, filename: &str) { [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename` [INFO] [stderr] [INFO] [stderr] warning: type `Frequency` is more private than the item `Timer::new` [INFO] [stderr] --> src/timer.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn new(frequency: Frequency) -> Timer { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `Timer::new` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `Frequency` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/timer.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | enum Frequency { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = note: `#[warn(private_interfaces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: struct `CPU` is never constructed [INFO] [stderr] --> src/cpu.rs:8:12 [INFO] [stderr] | [INFO] [stderr] 8 | pub struct CPU { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: struct `Register` is never constructed [INFO] [stderr] --> src/cpu.rs:22:8 [INFO] [stderr] | [INFO] [stderr] 22 | struct Register { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/cpu.rs:33:11 [INFO] [stderr] | [INFO] [stderr] 32 | impl CPU { [INFO] [stderr] | -------- methods in this implementation [INFO] [stderr] 33 | pub fn step(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 47 | fn execute(&mut self, instruction: Instruction) -> u16 { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1121 | fn add_hl(&mut self, value: u16) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1131 | fn pop(&mut self) -> u16 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1140 | fn push(&mut self, value: u16) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 1147 | fn and(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1155 | fn jump(&self, jump: bool) -> u16 { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 1164 | fn ccf(&mut self) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1167 | fn scf(&mut self) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1170 | fn rra(&mut self) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1182 | fn rr(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 1195 | fn rla(&mut self) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1207 | fn rl(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 1220 | fn rrca(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 1229 | fn rrc(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1239 | fn rrla(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 1249 | fn rlc(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1260 | fn cpl(&mut self) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1265 | fn bit(&mut self, bit: u8, value: u8) { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1272 | fn reset(&mut self, bit: u8, value: u8) -> u8 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1275 | fn set(&mut self, bit: u8, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1278 | fn srl(&mut self, values: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1287 | fn sra(&mut self, values: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1298 | fn sla(&mut self, values: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1309 | fn dec16(&mut self, values: u16) -> u16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1312 | fn inc16(&mut self, values: u16) -> u16 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1316 | fn or(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^ [INFO] [stderr] ... [INFO] [stderr] 1324 | fn xor(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1332 | fn dec8(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 1340 | fn inc8(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 1348 | fn adc(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1360 | fn sbc(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1370 | fn sub(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1378 | fn add(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 1387 | fn swap(&mut self, value: u8) -> u8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/cpu.rs:1423:8 [INFO] [stderr] | [INFO] [stderr] 1422 | impl Register { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] 1423 | fn get_hl(&self) -> u16 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1427 | fn set_hl(&mut self, value: u16) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1431 | fn get_bc(&self) -> u16 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1435 | fn set_bc(&mut self, value: u16) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1439 | fn get_de(&self) -> u16 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1443 | fn set_de(&mut self, value: u16) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1447 | fn get_af(&self) -> u16 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1451 | fn set_af(&mut self, value: u16) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_BEGIN` is never used [INFO] [stderr] --> src/bus.rs:4:11 [INFO] [stderr] | [INFO] [stderr] 4 | pub const VRAM_BEGIN: usize = 0x8000; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_END` is never used [INFO] [stderr] --> src/bus.rs:5:11 [INFO] [stderr] | [INFO] [stderr] 5 | pub const VRAM_END: usize = 0x9FFF; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `VRAM_SIZE` is never used [INFO] [stderr] --> src/bus.rs:6:11 [INFO] [stderr] | [INFO] [stderr] 6 | pub const VRAM_SIZE: usize = VRAM_END - VRAM_BEGIN + 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `WRAM_BEGIN` is never used [INFO] [stderr] --> src/bus.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | pub const WRAM_BEGIN: usize = 0xC000; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `WRAM_END` is never used [INFO] [stderr] --> src/bus.rs:9:11 [INFO] [stderr] | [INFO] [stderr] 9 | pub const WRAM_END: usize = 0xCFFF; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `WRAM_SIZE` is never used [INFO] [stderr] --> src/bus.rs:10:11 [INFO] [stderr] | [INFO] [stderr] 10 | pub const WRAM_SIZE: usize = WRAM_END - WRAM_BEGIN + 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SWITCH_BEGIN` is never used [INFO] [stderr] --> src/bus.rs:12:11 [INFO] [stderr] | [INFO] [stderr] 12 | pub const SWITCH_BEGIN: usize = 0xA000; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SWITCH_END` is never used [INFO] [stderr] --> src/bus.rs:13:11 [INFO] [stderr] | [INFO] [stderr] 13 | pub const SWITCH_END: usize = 0xBFFF; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SWITCH_SIZE` is never used [INFO] [stderr] --> src/bus.rs:14:11 [INFO] [stderr] | [INFO] [stderr] 14 | pub const SWITCH_SIZE: usize = SWITCH_END - SWITCH_BEGIN + 1; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `OAM_BEGIN` is never used [INFO] [stderr] --> src/bus.rs:16:11 [INFO] [stderr] | [INFO] [stderr] 16 | pub const OAM_BEGIN: usize = 0xFE00; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `OAM_END` is never used [INFO] [stderr] --> src/bus.rs:17:11 [INFO] [stderr] | [INFO] [stderr] 17 | pub const OAM_END: usize = 0xFE9F; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `OAM_SIZE` is never used [INFO] [stderr] --> src/bus.rs:18:11 [INFO] [stderr] | [INFO] [stderr] 18 | pub const OAM_SIZE: usize = OAM_END - OAM_BEGIN + 1; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `IO_BEGIN` is never used [INFO] [stderr] --> src/bus.rs:20:11 [INFO] [stderr] | [INFO] [stderr] 20 | pub const IO_BEGIN: usize = 0xFF00; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `IO_END` is never used [INFO] [stderr] --> src/bus.rs:21:11 [INFO] [stderr] | [INFO] [stderr] 21 | pub const IO_END: usize = 0xFF7F; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `IO_SIZE` is never used [INFO] [stderr] --> src/bus.rs:22:11 [INFO] [stderr] | [INFO] [stderr] 22 | pub const IO_SIZE: usize = IO_END - IO_BEGIN + 1; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `HRAM_BEGIN` is never used [INFO] [stderr] --> src/bus.rs:24:11 [INFO] [stderr] | [INFO] [stderr] 24 | pub const HRAM_BEGIN: usize = 0xFF80; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `HRAM_END` is never used [INFO] [stderr] --> src/bus.rs:25:11 [INFO] [stderr] | [INFO] [stderr] 25 | pub const HRAM_END: usize = 0xFFFE; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `HRAM_SIZE` is never used [INFO] [stderr] --> src/bus.rs:26:11 [INFO] [stderr] | [INFO] [stderr] 26 | pub const HRAM_SIZE: usize = HRAM_END - HRAM_BEGIN + 1; //test [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `MemoryBus` is never constructed [INFO] [stderr] --> src/bus.rs:28:12 [INFO] [stderr] | [INFO] [stderr] 28 | pub struct MemoryBus { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `update`, `read_byte`, and `write_byte` are never used [INFO] [stderr] --> src/bus.rs:57:12 [INFO] [stderr] | [INFO] [stderr] 42 | impl MemoryBus { [INFO] [stderr] | -------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 57 | pub fn update(&mut self, cycle: u8) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 63 | pub fn read_byte(&self, address: u16) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 78 | pub fn write_byte(&mut self, address: u16, value: u8) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated functions `from_byte`, `from_byte_not_prefixed`, `from_byte_prefixed`, and `decode_prefix_target` are never used [INFO] [stderr] --> src/instruction.rs:2:12 [INFO] [stderr] | [INFO] [stderr] 1 | impl Instruction { [INFO] [stderr] | ---------------- associated functions in this implementation [INFO] [stderr] 2 | pub fn from_byte(byte: u8, prefix: bool) -> Option { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 9 | pub fn from_byte_not_prefixed(byte: u8) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 265 | pub fn from_byte_prefixed(byte: u8) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 373 | fn decode_prefix_target(code: u8) -> PrefixTarget { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `Instruction` is never used [INFO] [stderr] --> src/instruction.rs:388:10 [INFO] [stderr] | [INFO] [stderr] 388 | pub enum Instruction { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `StackTarget` is never used [INFO] [stderr] --> src/instruction.rs:429:10 [INFO] [stderr] | [INFO] [stderr] 429 | pub enum StackTarget { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `ArithmeticTarget` is never used [INFO] [stderr] --> src/instruction.rs:436:10 [INFO] [stderr] | [INFO] [stderr] 436 | pub enum ArithmeticTarget { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `PrefixTarget` is never used [INFO] [stderr] --> src/instruction.rs:448:10 [INFO] [stderr] | [INFO] [stderr] 448 | pub enum PrefixTarget { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `IncTarget` is never used [INFO] [stderr] --> src/instruction.rs:458:10 [INFO] [stderr] | [INFO] [stderr] 458 | pub enum IncTarget { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `ADDHLTarget` is never used [INFO] [stderr] --> src/instruction.rs:471:10 [INFO] [stderr] | [INFO] [stderr] 471 | pub enum ADDHLTarget { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `JumpTest` is never used [INFO] [stderr] --> src/instruction.rs:477:10 [INFO] [stderr] | [INFO] [stderr] 477 | pub enum JumpTest { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `WordByteTarget` is never used [INFO] [stderr] --> src/instruction.rs:484:10 [INFO] [stderr] | [INFO] [stderr] 484 | pub enum WordByteTarget { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `WordByteSource` is never used [INFO] [stderr] --> src/instruction.rs:488:10 [INFO] [stderr] | [INFO] [stderr] 488 | pub enum WordByteSource { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `AFromIndirect` is never used [INFO] [stderr] --> src/instruction.rs:492:10 [INFO] [stderr] | [INFO] [stderr] 492 | pub enum AFromIndirect { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `IndirectFromA` is never used [INFO] [stderr] --> src/instruction.rs:496:10 [INFO] [stderr] | [INFO] [stderr] 496 | pub enum IndirectFromA { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `AFromByteAddress` is never used [INFO] [stderr] --> src/instruction.rs:499:10 [INFO] [stderr] | [INFO] [stderr] 499 | pub enum AFromByteAddress { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `ByteAddressFromA` is never used [INFO] [stderr] --> src/instruction.rs:505:10 [INFO] [stderr] | [INFO] [stderr] 505 | pub enum ByteAddressFromA { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `LoadByteTarget` is never used [INFO] [stderr] --> src/instruction.rs:511:10 [INFO] [stderr] | [INFO] [stderr] 511 | pub enum LoadByteTarget { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `LoadByteSource` is never used [INFO] [stderr] --> src/instruction.rs:514:10 [INFO] [stderr] | [INFO] [stderr] 514 | pub enum LoadByteSource { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `LoadType` is never used [INFO] [stderr] --> src/instruction.rs:517:10 [INFO] [stderr] | [INFO] [stderr] 517 | pub enum LoadType { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Cartridge` is never constructed [INFO] [stderr] --> src/cartride.rs:1:12 [INFO] [stderr] | [INFO] [stderr] 1 | pub struct Cartridge { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `MbcType` is never used [INFO] [stderr] --> src/cartride.rs:13:10 [INFO] [stderr] | [INFO] [stderr] 13 | pub enum MbcType { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `load` is never used [INFO] [stderr] --> src/cartride.rs:22:12 [INFO] [stderr] | [INFO] [stderr] 21 | impl Cartridge { [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] 22 | pub fn load(&self, filename: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `Frequency` is never used [INFO] [stderr] --> src/timer.rs:2:6 [INFO] [stderr] | [INFO] [stderr] 2 | enum Frequency { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `find_cycle` is never used [INFO] [stderr] --> src/timer.rs:9:8 [INFO] [stderr] | [INFO] [stderr] 8 | impl Frequency { [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] 9 | fn find_cycle(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `Timer` is never constructed [INFO] [stderr] --> src/timer.rs:18:12 [INFO] [stderr] | [INFO] [stderr] 18 | pub struct Timer { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new` and `update` are never used [INFO] [stderr] --> src/timer.rs:27:12 [INFO] [stderr] | [INFO] [stderr] 25 | impl Timer { [INFO] [stderr] | ---------- associated items in this implementation [INFO] [stderr] 26 | [INFO] [stderr] 27 | pub fn new(frequency: Frequency) -> Timer { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 36 | pub fn update(&mut self, cycles: u8) -> bool { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `gb_emu` (bin "gb_emu" test) generated 66 warnings (run `cargo fix --bin "gb_emu" -p gb_emu --tests` to apply 15 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.65s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/gb_emu-62a41333adeec76f) [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" "505d966716cad36d58cda117f9d613fa2863c10cb26aecdd61ae27d3ff26717b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "505d966716cad36d58cda117f9d613fa2863c10cb26aecdd61ae27d3ff26717b", kill_on_drop: false }` [INFO] [stdout] 505d966716cad36d58cda117f9d613fa2863c10cb26aecdd61ae27d3ff26717b