[INFO] cloning repository https://github.com/vilinet/gemboy
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/vilinet/gemboy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvilinet%2Fgemboy", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvilinet%2Fgemboy'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 127c27fe0282a4c776228a7a0d7ec204914b67d6
[INFO] checking vilinet/gemboy against try#e117153a45c546e883c1f91d82611775fcaeffe0 for pr-146470
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvilinet%2Fgemboy" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/vilinet/gemboy
[INFO] finished tweaking git repo https://github.com/vilinet/gemboy
[INFO] tweaked toml for git repo https://github.com/vilinet/gemboy written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/vilinet/gemboy on toolchain e117153a45c546e883c1f91d82611775fcaeffe0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+e117153a45c546e883c1f91d82611775fcaeffe0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/vilinet/gemboy 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" "+e117153a45c546e883c1f91d82611775fcaeffe0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded colog v1.3.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+e117153a45c546e883c1f91d82611775fcaeffe0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 888ba0bd72f1196b6e4f3df2014d2e1dca354d8f1296f766b29b4943ac685b7c
[INFO] running `Command { std: "docker" "start" "-a" "888ba0bd72f1196b6e4f3df2014d2e1dca354d8f1296f766b29b4943ac685b7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "888ba0bd72f1196b6e4f3df2014d2e1dca354d8f1296f766b29b4943ac685b7c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "888ba0bd72f1196b6e4f3df2014d2e1dca354d8f1296f766b29b4943ac685b7c", kill_on_drop: false }`
[INFO] [stdout] 888ba0bd72f1196b6e4f3df2014d2e1dca354d8f1296f766b29b4943ac685b7c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+e117153a45c546e883c1f91d82611775fcaeffe0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 366c732e7ff051ba12aacc448a326b15e8e4d9c1395947d5f4c5ae10b92a65a2
[INFO] running `Command { std: "docker" "start" "-a" "366c732e7ff051ba12aacc448a326b15e8e4d9c1395947d5f4c5ae10b92a65a2", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling unicode-ident v1.0.17
[INFO] [stderr]     Checking log v0.4.25
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]    Compiling serde v1.0.218
[INFO] [stderr]     Checking anstream v0.6.18
[INFO] [stderr]    Compiling serde_json v1.0.139
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking ryu v1.0.19
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]     Checking env_logger v0.11.6
[INFO] [stderr]     Checking colog v1.3.0
[INFO] [stderr]    Compiling serde_derive v1.0.218
[INFO] [stderr]     Checking gemboy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::engine::cpu::Cpu`
[INFO] [stdout]  --> src/engine/bus.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::engine::cpu::Cpu;
[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: `PPUInterruptRaised`
[INFO] [stdout]  --> src/engine/bus.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::engine::ppu::{PPUInterruptRaised, PPU};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]  --> src/engine/cpu.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{error, trace, warn};
[INFO] [stdout]   |                  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::interrupts::InterruptType::TIMER`
[INFO] [stdout]  --> src/engine/cpu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::engine::interrupts::InterruptType::TIMER;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::timer::TimerInterruptRaised`
[INFO] [stdout]  --> src/engine/cpu.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::engine::timer::TimerInterruptRaised;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/engine/cpu.rs:592:12
[INFO] [stdout]     |
[INFO] [stdout] 592 |         if (src.is_none()) {
[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] 592 -         if (src.is_none()) {
[INFO] [stdout] 592 +         if src.is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1314:12
[INFO] [stdout]      |
[INFO] [stdout] 1314 |         if (self.flag_half_carry() || (!self.flag_sub() && ((v & 0x0F) > 9))) {
[INFO] [stdout]      |            ^                                                                ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1314 -         if (self.flag_half_carry() || (!self.flag_sub() && ((v & 0x0F) > 9))) {
[INFO] [stdout] 1314 +         if self.flag_half_carry() || (!self.flag_sub() && ((v & 0x0F) > 9))  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1318:12
[INFO] [stdout]      |
[INFO] [stdout] 1318 |         if (self.flag_carry() || (!self.flag_sub() && (v > 0x99))) {
[INFO] [stdout]      |            ^                                                     ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1318 -         if (self.flag_carry() || (!self.flag_sub() && (v > 0x99))) {
[INFO] [stdout] 1318 +         if self.flag_carry() || (!self.flag_sub() && (v > 0x99))  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1322:12
[INFO] [stdout]      |
[INFO] [stdout] 1322 |         if (self.flag_sub()) {
[INFO] [stdout]      |            ^               ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1322 -         if (self.flag_sub()) {
[INFO] [stdout] 1322 +         if self.flag_sub()  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1328:12
[INFO] [stdout]      |
[INFO] [stdout] 1328 |         if (((correction << 2) & 0x100) != 0) {
[INFO] [stdout]      |            ^                                ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1328 -         if (((correction << 2) & 0x100) != 0) {
[INFO] [stdout] 1328 +         if ((correction << 2) & 0x100) != 0  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LCD_STAT` should have an upper camel case name
[INFO] [stdout]   --> src/engine/interrupts.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     LCD_STAT = 1,
[INFO] [stdout]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `LcdStat`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/engine/ppu.rs:37:16
[INFO] [stdout]    |
[INFO] [stdout] 37 |             if (self.cycles == 456) {
[INFO] [stdout]    |                ^                  ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 37 -             if (self.cycles == 456) {
[INFO] [stdout] 37 +             if self.cycles == 456 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::cpu::Cpu`
[INFO] [stdout]  --> src/engine/bus.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::engine::cpu::Cpu;
[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: `PPUInterruptRaised`
[INFO] [stdout]  --> src/engine/bus.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::engine::ppu::{PPUInterruptRaised, PPU};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `trace` and `warn`
[INFO] [stdout]  --> src/engine/cpu.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{error, trace, warn};
[INFO] [stdout]   |                  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::interrupts::InterruptType::TIMER`
[INFO] [stdout]  --> src/engine/cpu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::engine::interrupts::InterruptType::TIMER;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::timer::TimerInterruptRaised`
[INFO] [stdout]  --> src/engine/cpu.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::engine::timer::TimerInterruptRaised;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/engine/cpu.rs:592:12
[INFO] [stdout]     |
[INFO] [stdout] 592 |         if (src.is_none()) {
[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] 592 -         if (src.is_none()) {
[INFO] [stdout] 592 +         if src.is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1314:12
[INFO] [stdout]      |
[INFO] [stdout] 1314 |         if (self.flag_half_carry() || (!self.flag_sub() && ((v & 0x0F) > 9))) {
[INFO] [stdout]      |            ^                                                                ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1314 -         if (self.flag_half_carry() || (!self.flag_sub() && ((v & 0x0F) > 9))) {
[INFO] [stdout] 1314 +         if self.flag_half_carry() || (!self.flag_sub() && ((v & 0x0F) > 9))  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1318:12
[INFO] [stdout]      |
[INFO] [stdout] 1318 |         if (self.flag_carry() || (!self.flag_sub() && (v > 0x99))) {
[INFO] [stdout]      |            ^                                                     ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1318 -         if (self.flag_carry() || (!self.flag_sub() && (v > 0x99))) {
[INFO] [stdout] 1318 +         if self.flag_carry() || (!self.flag_sub() && (v > 0x99))  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1322:12
[INFO] [stdout]      |
[INFO] [stdout] 1322 |         if (self.flag_sub()) {
[INFO] [stdout]      |            ^               ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1322 -         if (self.flag_sub()) {
[INFO] [stdout] 1322 +         if self.flag_sub()  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/engine/cpu.rs:1328:12
[INFO] [stdout]      |
[INFO] [stdout] 1328 |         if (((correction << 2) & 0x100) != 0) {
[INFO] [stdout]      |            ^                                ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1328 -         if (((correction << 2) & 0x100) != 0) {
[INFO] [stdout] 1328 +         if ((correction << 2) & 0x100) != 0  {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LCD_STAT` should have an upper camel case name
[INFO] [stdout]   --> src/engine/interrupts.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     LCD_STAT = 1,
[INFO] [stdout]    |     ^^^^^^^^ help: convert the identifier to upper camel case: `LcdStat`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/engine/ppu.rs:37:16
[INFO] [stdout]    |
[INFO] [stdout] 37 |             if (self.cycles == 456) {
[INFO] [stdout]    |                ^                  ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 37 -             if (self.cycles == 456) {
[INFO] [stdout] 37 +             if self.cycles == 456 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Read`
[INFO] [stdout]  --> src/main.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::{fs::File, io::Read, io::Write};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/bus.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/engine/bus.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout]  78 |             0x0000..=0x7FFF => self.cartridge.read(addr),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout]  79 |             0x8000..=0x9FFF => self.vram[(addr - 0x8000) as usize],
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout]  80 |             0xA000..=0xBFFF => self.cartridge.read(addr),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout]  81 |             0xC000..=0xCFFF => self.ram0[(addr - 0xC000) as usize],
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 100 |             _ => {
[INFO] [stdout]     |             ^ ...and 15 other patterns collectively make this unreachable
[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/engine/bus.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/engine/bus.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |             0x0000..=0x7FFF => self.cartridge.write(addr, v),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 112 |             0x8000..=0x9FFF => self.vram[(addr - 0x8000) as usize] = v,
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 113 |             0xA000..=0xBFFF => self.cartridge.write(addr, v),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 114 |             0xC000..=0xCFFF => self.ram0[(addr - 0xC000) as usize] = v,
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 130 |             _ => {
[INFO] [stdout]     |             ^ ...and 15 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `took_cycles`
[INFO] [stdout]  --> src/main.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn write_state(took_cycles: u32, file: &mut File, cpu: &mut engine::cpu::Cpu) {
[INFO] [stdout]   |                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_took_cycles`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut log = File::create("cpu.log").unwrap();
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log`
[INFO] [stdout]   --> src/main.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut log = File::create("cpu.log").unwrap();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_CYCLES` is never used
[INFO] [stdout]  --> src/main.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const DEBUG_CYCLES: bool = false;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `viewport_pos_x`, `viewport_pos_y`, and `bg_palette` are never read
[INFO] [stdout]   --> src/engine/bus.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Bus {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     viewport_pos_x: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     viewport_pos_y: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 28 |     bg_palette: u8,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dump_registers` is never used
[INFO] [stdout]    --> src/engine/cpu.rs:908:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl Cpu {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 908 |     fn dump_registers(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keys_state` is never read
[INFO] [stdout]  --> src/engine/joypad.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct JoyPad {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 2 |     keys: u8,
[INFO] [stdout] 3 |     keys_state: u8,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write` is never used
[INFO] [stdout]   --> src/engine/joypad.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl JoyPad {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn write(&mut self, v: u8) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `vblank` and `cycles` are never read
[INFO] [stdout]  --> src/engine/ppu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct PPU {
[INFO] [stdout]   |            --- fields in this struct
[INFO] [stdout] 4 |     pub oam: [u8; 0xA0],
[INFO] [stdout] 5 |     vblank: bool,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     cycles: u32,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PPUInterruptRaised` is never used
[INFO] [stdout]   --> src/engine/ppu.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum PPUInterruptRaised {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `tick` is never used
[INFO] [stdout]   --> src/engine/ppu.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl PPU {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn tick(&mut self) -> PPUInterruptRaised {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `tick` is never used
[INFO] [stdout]   --> src/engine/serial.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Serial {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn tick(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `load_rom` found for struct `bus::Bus` in the current scope
[INFO] [stdout]     --> src/engine/cpu.rs:1397:17
[INFO] [stdout]      |
[INFO] [stdout] 1397 |         cpu.bus.load_rom(rom);
[INFO] [stdout]      |                 ^^^^^^^^ method not found in `bus::Bus`
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/engine/bus.rs:12:1
[INFO] [stdout]      |
[INFO] [stdout]   12 | pub struct Bus {
[INFO] [stdout]      | -------------- method `load_rom` not found for this struct
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Read`
[INFO] [stdout]  --> src/main.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::{fs::File, io::Read, io::Write};
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/bus.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/engine/bus.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout]  78 |             0x0000..=0x7FFF => self.cartridge.read(addr),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout]  79 |             0x8000..=0x9FFF => self.vram[(addr - 0x8000) as usize],
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout]  80 |             0xA000..=0xBFFF => self.cartridge.read(addr),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout]  81 |             0xC000..=0xCFFF => self.ram0[(addr - 0xC000) as usize],
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 100 |             _ => {
[INFO] [stdout]     |             ^ ...and 15 other patterns collectively make this unreachable
[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/engine/bus.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 130 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/engine/bus.rs:130:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |             0x0000..=0x7FFF => self.cartridge.write(addr, v),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 112 |             0x8000..=0x9FFF => self.vram[(addr - 0x8000) as usize] = v,
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 113 |             0xA000..=0xBFFF => self.cartridge.write(addr, v),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 114 |             0xC000..=0xCFFF => self.ram0[(addr - 0xC000) as usize] = v,
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 130 |             _ => {
[INFO] [stdout]     |             ^ ...and 15 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `took_cycles`
[INFO] [stdout]  --> src/main.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn write_state(took_cycles: u32, file: &mut File, cpu: &mut engine::cpu::Cpu) {
[INFO] [stdout]   |                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_took_cycles`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut log = File::create("cpu.log").unwrap();
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log`
[INFO] [stdout]   --> src/main.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |     let mut log = File::create("cpu.log").unwrap();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `gemboy` (bin "gemboy" test) due to 1 previous error; 18 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "366c732e7ff051ba12aacc448a326b15e8e4d9c1395947d5f4c5ae10b92a65a2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "366c732e7ff051ba12aacc448a326b15e8e4d9c1395947d5f4c5ae10b92a65a2", kill_on_drop: false }`
[INFO] [stdout] 366c732e7ff051ba12aacc448a326b15e8e4d9c1395947d5f4c5ae10b92a65a2
