[INFO] cloning repository https://github.com/enathang/Risc-V-Emulator [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/enathang/Risc-V-Emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenathang%2FRisc-V-Emulator", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenathang%2FRisc-V-Emulator'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] cee42650155107329d57e98f1156823e4463ad88 [INFO] checking enathang/Risc-V-Emulator against try#723ab942d877517caf445dafde0416803ef56501 for pr-143857 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenathang%2FRisc-V-Emulator" "/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/enathang/Risc-V-Emulator [INFO] finished tweaking git repo https://github.com/enathang/Risc-V-Emulator [INFO] tweaked toml for git repo https://github.com/enathang/Risc-V-Emulator written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/enathang/Risc-V-Emulator on toolchain 723ab942d877517caf445dafde0416803ef56501 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+723ab942d877517caf445dafde0416803ef56501" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/enathang/Risc-V-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" "+723ab942d877517caf445dafde0416803ef56501" "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] Locking 1 package to latest compatible version [INFO] [stderr] Adding asm_riscv v0.1.0 (available: v0.2.0) [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] checking enathang/Risc-V-Emulator against try#723ab942d877517caf445dafde0416803ef56501 for pr-143857 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fenathang%2FRisc-V-Emulator" "/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/enathang/Risc-V-Emulator [INFO] finished tweaking git repo https://github.com/enathang/Risc-V-Emulator [INFO] tweaked toml for git repo https://github.com/enathang/Risc-V-Emulator written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/enathang/Risc-V-Emulator on toolchain 723ab942d877517caf445dafde0416803ef56501 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+723ab942d877517caf445dafde0416803ef56501" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/enathang/Risc-V-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" "+723ab942d877517caf445dafde0416803ef56501" "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] Locking 1 package to latest compatible version [INFO] [stderr] Adding asm_riscv v0.1.0 (available: v0.2.0) [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded asm_riscv v0.1.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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+723ab942d877517caf445dafde0416803ef56501" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4c561b1614309cf52ed6ef34c5192a955242478ea1d214e22cbb7a2d57c009d4 [INFO] running `Command { std: "docker" "start" "-a" "4c561b1614309cf52ed6ef34c5192a955242478ea1d214e22cbb7a2d57c009d4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4c561b1614309cf52ed6ef34c5192a955242478ea1d214e22cbb7a2d57c009d4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4c561b1614309cf52ed6ef34c5192a955242478ea1d214e22cbb7a2d57c009d4", kill_on_drop: false }` [INFO] [stdout] 4c561b1614309cf52ed6ef34c5192a955242478ea1d214e22cbb7a2d57c009d4 [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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+723ab942d877517caf445dafde0416803ef56501" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9ef6f1689c65f245f95e816de2458c2d01aaf57b7a0b73ad2a2e9e5827971a29 [INFO] running `Command { std: "docker" "start" "-a" "9ef6f1689c65f245f95e816de2458c2d01aaf57b7a0b73ad2a2e9e5827971a29", kill_on_drop: false }` [INFO] [stderr] Checking asm_riscv v0.1.0 [INFO] [stderr] Checking Risc-V-Emulator v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/bus.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | match (addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 20 - match (addr) { [INFO] [stdout] 20 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/bus.rs:28:14 [INFO] [stdout] | [INFO] [stdout] 28 | match(addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 28 - match(addr) { [INFO] [stdout] 28 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator/dram.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 17 - if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] 17 + if ![8, 16, 32, 64].contains(&size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator/dram.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 33 - if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] 33 + if ![8, 16, 32, 64].contains(&size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/errors.rs:53:14 [INFO] [stdout] | [INFO] [stdout] 53 | match(self) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 53 - match(self) { [INFO] [stdout] 53 + match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/errors.rs:72:14 [INFO] [stdout] | [INFO] [stdout] 72 | match(self) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 72 - match(self) { [INFO] [stdout] 72 + match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `R_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct R_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `RInstr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `I_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct I_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `IInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `S_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct S_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `SInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `B_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 86 | pub struct B_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `BInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `U_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:115:12 [INFO] [stdout] | [INFO] [stdout] 115 | pub struct U_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `UInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `J_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct J_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `JInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/interrupt.rs:16:35 [INFO] [stdout] | [INFO] [stdout] 16 | let interrupt_code = match(self) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 16 - let interrupt_code = match(self) { [INFO] [stdout] 16 + let interrupt_code = match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/plic.rs:33:14 [INFO] [stdout] | [INFO] [stdout] 33 | match(addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 33 - match(addr) { [INFO] [stdout] 33 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/plic.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | match(addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 46 - match(addr) { [INFO] [stdout] 46 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/uart.rs:59:18 [INFO] [stdout] | [INFO] [stdout] 59 | match(read_io) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 59 - match(read_io) { [INFO] [stdout] 59 + match read_io { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `while` condition [INFO] [stdout] --> src/emulator/uart.rs:65:27 [INFO] [stdout] | [INFO] [stdout] 65 | while (array[UART_LSR_INDEX as usize] & UART_LSR_RHR_STATUS_FLAG == 1) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 65 - while (array[UART_LSR_INDEX as usize] & UART_LSR_RHR_STATUS_FLAG == 1) { [INFO] [stdout] 65 + while array[UART_LSR_INDEX as usize] & UART_LSR_RHR_STATUS_FLAG == 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/uart.rs:85:15 [INFO] [stdout] | [INFO] [stdout] 85 | match (index) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 85 - match (index) { [INFO] [stdout] 85 + match index { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/uart.rs:101:15 [INFO] [stdout] | [INFO] [stdout] 101 | match (index) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 101 - match (index) { [INFO] [stdout] 101 + match index { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `while` condition [INFO] [stdout] --> src/emulator.rs:49:15 [INFO] [stdout] | [INFO] [stdout] 49 | while (self.pc < self.bus.dram.dram.len() as u64) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 49 - while (self.pc < self.bus.dram.dram.len() as u64) { [INFO] [stdout] 49 + while self.pc < self.bus.dram.dram.len() as u64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/emulator.rs:77:35 [INFO] [stdout] | [INFO] [stdout] 77 | let instr = self.bus.load((index as u64), 32); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 77 - let instr = self.bus.load((index as u64), 32); [INFO] [stdout] 77 + let instr = self.bus.load(index as u64, 32); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression [INFO] [stdout] --> src/emulator.rs:99:18 [INFO] [stdout] | [INFO] [stdout] 99 | for i in (0..self.regs.len()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 99 - for i in (0..self.regs.len()) { [INFO] [stdout] 99 + for i in 0..self.regs.len() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 110 | if (delegate_to_s_mode) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 110 - if (delegate_to_s_mode) { [INFO] [stdout] 110 + if delegate_to_s_mode { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:113:16 [INFO] [stdout] | [INFO] [stdout] 113 | if (tvec & 0b11 == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 113 - if (tvec & 0b11 == 0) { [INFO] [stdout] 113 + if tvec & 0b11 == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | if (tvec & 0b11 == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 132 - if (tvec & 0b11 == 0) { [INFO] [stdout] 132 + if tvec & 0b11 == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:154:12 [INFO] [stdout] | [INFO] [stdout] 154 | if (error.is_fatal()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 154 - if (error.is_fatal()) { [INFO] [stdout] 154 + if error.is_fatal() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 167 | if (should_deleg_to_supervisor) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 167 - if (should_deleg_to_supervisor) { [INFO] [stdout] 167 + if should_deleg_to_supervisor { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:206:12 [INFO] [stdout] | [INFO] [stdout] 206 | if (self.mode == Machine && (self.csr.load(MSTATUS) & MASK_MIE) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 206 - if (self.mode == Machine && (self.csr.load(MSTATUS) & MASK_MIE) == 0) { [INFO] [stdout] 206 + if self.mode == Machine && (self.csr.load(MSTATUS) & MASK_MIE) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 211 | if ((self.mode == Supervisor) && (self.csr.load(MSTATUS) & MASK_SIE) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 211 - if ((self.mode == Supervisor) && (self.csr.load(MSTATUS) & MASK_SIE) == 0) { [INFO] [stdout] 211 + if (self.mode == Supervisor) && (self.csr.load(MSTATUS) & MASK_SIE) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:215:12 [INFO] [stdout] | [INFO] [stdout] 215 | if (self.bus.uart.is_interrupting()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 215 - if (self.bus.uart.is_interrupting()) { [INFO] [stdout] 215 + if self.bus.uart.is_interrupting() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:257:25 [INFO] [stdout] | [INFO] [stdout] 257 | let flag_mask = (1 << flag_index); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 257 - let flag_mask = (1 << flag_index); [INFO] [stdout] 257 + let flag_mask = 1 << flag_index; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `return` value [INFO] [stdout] --> src/emulator.rs:258:16 [INFO] [stdout] | [INFO] [stdout] 258 | return ((status & flag_mask) > 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 258 - return ((status & flag_mask) > 0); [INFO] [stdout] 258 + return (status & flag_mask) > 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:272:14 [INFO] [stdout] | [INFO] [stdout] 272 | match(inst.opcode) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 272 - match(inst.opcode) { [INFO] [stdout] 272 + match inst.opcode { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:274:23 [INFO] [stdout] | [INFO] [stdout] 274 | match (inst.funct3) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 274 - match (inst.funct3) { [INFO] [stdout] 274 + match inst.funct3 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:276:31 [INFO] [stdout] | [INFO] [stdout] 276 | match (inst.funct7) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 276 - match (inst.funct7) { [INFO] [stdout] 276 + match inst.funct7 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:290:22 [INFO] [stdout] | [INFO] [stdout] 290 | match(inst.funct3) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 290 - match(inst.funct3) { [INFO] [stdout] 290 + match inst.funct3 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:301:38 [INFO] [stdout] | [INFO] [stdout] 301 | let result = ((self.regs[inst.rs1] as i64) < imm as i64); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 301 - let result = ((self.regs[inst.rs1] as i64) < imm as i64); [INFO] [stdout] 301 + let result = (self.regs[inst.rs1] as i64) < imm as i64; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:305:38 [INFO] [stdout] | [INFO] [stdout] 305 | let result = ((self.regs[inst.rs1] as u64) < imm); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 305 - let result = ((self.regs[inst.rs1] as u64) < imm); [INFO] [stdout] 305 + let result = (self.regs[inst.rs1] as u64) < imm; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:312:30 [INFO] [stdout] | [INFO] [stdout] 312 | match(inst.funct7) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 312 - match(inst.funct7) { [INFO] [stdout] 312 + match inst.funct7 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:335:38 [INFO] [stdout] | [INFO] [stdout] 335 | self.regs[inst.rd] = (imm << 12); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 335 - self.regs[inst.rd] = (imm << 12); [INFO] [stdout] 335 + self.regs[inst.rd] = imm << 12; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:355:37 [INFO] [stdout] | [INFO] [stdout] 355 | self.mode = (updated_sstatus & (1 << SPP_FLAG_POS) >> SPP_FLAG_POS); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 355 - self.mode = (updated_sstatus & (1 << SPP_FLAG_POS) >> SPP_FLAG_POS); [INFO] [stdout] 355 + self.mode = updated_sstatus & (1 << SPP_FLAG_POS) >> SPP_FLAG_POS; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/bus.rs:20:15 [INFO] [stdout] | [INFO] [stdout] 20 | match (addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 20 - match (addr) { [INFO] [stdout] 20 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/bus.rs:28:14 [INFO] [stdout] | [INFO] [stdout] 28 | match(addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 28 - match(addr) { [INFO] [stdout] 28 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator/dram.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 17 - if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] 17 + if ![8, 16, 32, 64].contains(&size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator/dram.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 33 | if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 33 - if (![8, 16, 32, 64].contains(&size)) { [INFO] [stdout] 33 + if ![8, 16, 32, 64].contains(&size) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/errors.rs:53:14 [INFO] [stdout] | [INFO] [stdout] 53 | match(self) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 53 - match(self) { [INFO] [stdout] 53 + match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/errors.rs:72:14 [INFO] [stdout] | [INFO] [stdout] 72 | match(self) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 72 - match(self) { [INFO] [stdout] 72 + match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `R_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct R_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `RInstr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `I_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct I_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `IInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `S_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct S_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `SInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `B_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 86 | pub struct B_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `BInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `U_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:115:12 [INFO] [stdout] | [INFO] [stdout] 115 | pub struct U_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `UInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `J_Instr` should have an upper camel case name [INFO] [stdout] --> src/emulator/instructions.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct J_Instr { [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case: `JInstr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/interrupt.rs:16:35 [INFO] [stdout] | [INFO] [stdout] 16 | let interrupt_code = match(self) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 16 - let interrupt_code = match(self) { [INFO] [stdout] 16 + let interrupt_code = match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/plic.rs:33:14 [INFO] [stdout] | [INFO] [stdout] 33 | match(addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 33 - match(addr) { [INFO] [stdout] 33 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/plic.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | match(addr) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 46 - match(addr) { [INFO] [stdout] 46 + match addr { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/uart.rs:59:18 [INFO] [stdout] | [INFO] [stdout] 59 | match(read_io) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 59 - match(read_io) { [INFO] [stdout] 59 + match read_io { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `while` condition [INFO] [stdout] --> src/emulator/uart.rs:65:27 [INFO] [stdout] | [INFO] [stdout] 65 | while (array[UART_LSR_INDEX as usize] & UART_LSR_RHR_STATUS_FLAG == 1) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 65 - while (array[UART_LSR_INDEX as usize] & UART_LSR_RHR_STATUS_FLAG == 1) { [INFO] [stdout] 65 + while array[UART_LSR_INDEX as usize] & UART_LSR_RHR_STATUS_FLAG == 1 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/uart.rs:85:15 [INFO] [stdout] | [INFO] [stdout] 85 | match (index) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 85 - match (index) { [INFO] [stdout] 85 + match index { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator/uart.rs:101:15 [INFO] [stdout] | [INFO] [stdout] 101 | match (index) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 101 - match (index) { [INFO] [stdout] 101 + match index { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `while` condition [INFO] [stdout] --> src/emulator.rs:49:15 [INFO] [stdout] | [INFO] [stdout] 49 | while (self.pc < self.bus.dram.dram.len() as u64) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 49 - while (self.pc < self.bus.dram.dram.len() as u64) { [INFO] [stdout] 49 + while self.pc < self.bus.dram.dram.len() as u64 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/emulator.rs:77:35 [INFO] [stdout] | [INFO] [stdout] 77 | let instr = self.bus.load((index as u64), 32); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 77 - let instr = self.bus.load((index as u64), 32); [INFO] [stdout] 77 + let instr = self.bus.load(index as u64, 32); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression [INFO] [stdout] --> src/emulator.rs:99:18 [INFO] [stdout] | [INFO] [stdout] 99 | for i in (0..self.regs.len()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 99 - for i in (0..self.regs.len()) { [INFO] [stdout] 99 + for i in 0..self.regs.len() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 110 | if (delegate_to_s_mode) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 110 - if (delegate_to_s_mode) { [INFO] [stdout] 110 + if delegate_to_s_mode { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:113:16 [INFO] [stdout] | [INFO] [stdout] 113 | if (tvec & 0b11 == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 113 - if (tvec & 0b11 == 0) { [INFO] [stdout] 113 + if tvec & 0b11 == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | if (tvec & 0b11 == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 132 - if (tvec & 0b11 == 0) { [INFO] [stdout] 132 + if tvec & 0b11 == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:154:12 [INFO] [stdout] | [INFO] [stdout] 154 | if (error.is_fatal()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 154 - if (error.is_fatal()) { [INFO] [stdout] 154 + if error.is_fatal() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:167:12 [INFO] [stdout] | [INFO] [stdout] 167 | if (should_deleg_to_supervisor) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 167 - if (should_deleg_to_supervisor) { [INFO] [stdout] 167 + if should_deleg_to_supervisor { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:206:12 [INFO] [stdout] | [INFO] [stdout] 206 | if (self.mode == Machine && (self.csr.load(MSTATUS) & MASK_MIE) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 206 - if (self.mode == Machine && (self.csr.load(MSTATUS) & MASK_MIE) == 0) { [INFO] [stdout] 206 + if self.mode == Machine && (self.csr.load(MSTATUS) & MASK_MIE) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 211 | if ((self.mode == Supervisor) && (self.csr.load(MSTATUS) & MASK_SIE) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 211 - if ((self.mode == Supervisor) && (self.csr.load(MSTATUS) & MASK_SIE) == 0) { [INFO] [stdout] 211 + if (self.mode == Supervisor) && (self.csr.load(MSTATUS) & MASK_SIE) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/emulator.rs:215:12 [INFO] [stdout] | [INFO] [stdout] 215 | if (self.bus.uart.is_interrupting()) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 215 - if (self.bus.uart.is_interrupting()) { [INFO] [stdout] 215 + if self.bus.uart.is_interrupting() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:257:25 [INFO] [stdout] | [INFO] [stdout] 257 | let flag_mask = (1 << flag_index); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 257 - let flag_mask = (1 << flag_index); [INFO] [stdout] 257 + let flag_mask = 1 << flag_index; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `return` value [INFO] [stdout] --> src/emulator.rs:258:16 [INFO] [stdout] | [INFO] [stdout] 258 | return ((status & flag_mask) > 0); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 258 - return ((status & flag_mask) > 0); [INFO] [stdout] 258 + return (status & flag_mask) > 0; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:272:14 [INFO] [stdout] | [INFO] [stdout] 272 | match(inst.opcode) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 272 - match(inst.opcode) { [INFO] [stdout] 272 + match inst.opcode { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:274:23 [INFO] [stdout] | [INFO] [stdout] 274 | match (inst.funct3) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 274 - match (inst.funct3) { [INFO] [stdout] 274 + match inst.funct3 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:276:31 [INFO] [stdout] | [INFO] [stdout] 276 | match (inst.funct7) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 276 - match (inst.funct7) { [INFO] [stdout] 276 + match inst.funct7 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:290:22 [INFO] [stdout] | [INFO] [stdout] 290 | match(inst.funct3) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 290 - match(inst.funct3) { [INFO] [stdout] 290 + match inst.funct3 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:301:38 [INFO] [stdout] | [INFO] [stdout] 301 | let result = ((self.regs[inst.rs1] as i64) < imm as i64); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 301 - let result = ((self.regs[inst.rs1] as i64) < imm as i64); [INFO] [stdout] 301 + let result = (self.regs[inst.rs1] as i64) < imm as i64; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:305:38 [INFO] [stdout] | [INFO] [stdout] 305 | let result = ((self.regs[inst.rs1] as u64) < imm); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 305 - let result = ((self.regs[inst.rs1] as u64) < imm); [INFO] [stdout] 305 + let result = (self.regs[inst.rs1] as u64) < imm; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression [INFO] [stdout] --> src/emulator.rs:312:30 [INFO] [stdout] | [INFO] [stdout] 312 | match(inst.funct7) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 312 - match(inst.funct7) { [INFO] [stdout] 312 + match inst.funct7 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:335:38 [INFO] [stdout] | [INFO] [stdout] 335 | self.regs[inst.rd] = (imm << 12); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 335 - self.regs[inst.rd] = (imm << 12); [INFO] [stdout] 335 + self.regs[inst.rd] = imm << 12; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:355:37 [INFO] [stdout] | [INFO] [stdout] 355 | self.mode = (updated_sstatus & (1 << SPP_FLAG_POS) >> SPP_FLAG_POS); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 355 - self.mode = (updated_sstatus & (1 << SPP_FLAG_POS) >> SPP_FLAG_POS); [INFO] [stdout] 355 + self.mode = updated_sstatus & (1 << SPP_FLAG_POS) >> SPP_FLAG_POS; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:361:36 [INFO] [stdout] | [INFO] [stdout] 361 | let spie = (updated_sstatus & (1 << SPIE_FLAG_POS) >> SPIE_FLAG_POS); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 361 - let spie = (updated_sstatus & (1 << SPIE_FLAG_POS) >> SPIE_FLAG_POS); [INFO] [stdout] 361 + let spie = updated_sstatus & (1 << SPIE_FLAG_POS) >> SPIE_FLAG_POS; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:365:44 [INFO] [stdout] | [INFO] [stdout] 365 | updated_sstatus |= (1 << SPIE_FLAG_POS); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 365 - updated_sstatus |= (1 << SPIE_FLAG_POS); [INFO] [stdout] 365 + updated_sstatus |= 1 << SPIE_FLAG_POS; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/lib.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | if (args.len() != 2) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 14 - if (args.len() != 2) { [INFO] [stdout] 14 + if args.len() != 2 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:361:36 [INFO] [stdout] | [INFO] [stdout] 361 | let spie = (updated_sstatus & (1 << SPIE_FLAG_POS) >> SPIE_FLAG_POS); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 361 - let spie = (updated_sstatus & (1 << SPIE_FLAG_POS) >> SPIE_FLAG_POS); [INFO] [stdout] 361 + let spie = updated_sstatus & (1 << SPIE_FLAG_POS) >> SPIE_FLAG_POS; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/emulator.rs:365:44 [INFO] [stdout] | [INFO] [stdout] 365 | updated_sstatus |= (1 << SPIE_FLAG_POS); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 365 - updated_sstatus |= (1 << SPIE_FLAG_POS); [INFO] [stdout] 365 + updated_sstatus |= 1 << SPIE_FLAG_POS; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/lib.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | if (args.len() != 2) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 14 - if (args.len() != 2) { [INFO] [stdout] 14 + if args.len() != 2 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `SupervisorSoftwareInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::SupervisorSoftwareInterrupt` [INFO] [stdout] | [INFO] [stdout] = note: `#[deny(bindings_with_variant_name)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `MachineSoftwareInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::MachineSoftwareInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `SupervisorTimerInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::SupervisorTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `MachineTimerInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::MachineTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `SupervisorExternalInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::SupervisorExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `MachineExternalInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::MachineExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `SupervisorSoftwareInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_SupervisorSoftwareInterrupt` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MachineSoftwareInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_MachineSoftwareInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `SupervisorTimerInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_SupervisorTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MachineTimerInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_MachineTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `SupervisorExternalInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_SupervisorExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MachineExternalInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_MachineExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/emulator/uart.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let mut array = [0; UART_SIZE as usize]; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `size` [INFO] [stdout] --> src/emulator/uart.rs:80:35 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn load(&self, addr: u64, size: u64) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cvar` [INFO] [stdout] --> src/emulator/uart.rs:96:20 [INFO] [stdout] | [INFO] [stdout] 96 | let (uart, cvar) = &*self.uart; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_cvar` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `size` [INFO] [stdout] --> src/emulator/uart.rs:95:40 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn store(&mut self, addr: u64, size: u64, value: u64) -> Result<(), errors::Exception> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `SupervisorSoftwareInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::SupervisorSoftwareInterrupt` [INFO] [stdout] | [INFO] [stdout] = note: `#[deny(bindings_with_variant_name)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `MachineSoftwareInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::MachineSoftwareInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `SupervisorTimerInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::SupervisorTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `MachineTimerInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::MachineTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `SupervisorExternalInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::SupervisorExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0170]: pattern binding `MachineExternalInterrupt` is named the same as one of the variants of the type `emulator::interrupt::Interrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: to match on the variant, qualify the path: `emulator::interrupt::Interrupt::MachineExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `main` is never used [INFO] [stdout] --> src/lib.rs:8:4 [INFO] [stdout] | [INFO] [stdout] 8 | fn main() -> io::Result<()> { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `User` is never used [INFO] [stdout] --> src/emulator.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const User: Mode = 0; // 0b00 [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_status_flag` is never used [INFO] [stdout] --> src/emulator.rs:256:8 [INFO] [stdout] | [INFO] [stdout] 26 | impl Cpu { [INFO] [stdout] | -------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 256 | fn get_status_flag(status: &u64, flag_index: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MCOUNTEREN` is never used [INFO] [stdout] --> src/emulator/csr.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const MCOUNTEREN: usize = 0x306; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSCRATCH` is never used [INFO] [stdout] --> src/emulator/csr.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const MSCRATCH: usize = 0x340; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSCRATCH` is never used [INFO] [stdout] --> src/emulator/csr.rs:32:11 [INFO] [stdout] | [INFO] [stdout] 32 | pub const SSCRATCH: usize = 0x140; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SATP` is never used [INFO] [stdout] --> src/emulator/csr.rs:42:11 [INFO] [stdout] | [INFO] [stdout] 42 | pub const SATP: usize = 0x180; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_VS` is never used [INFO] [stdout] --> src/emulator/csr.rs:51:11 [INFO] [stdout] | [INFO] [stdout] 51 | pub const MASK_VS: u64 = 0b11 << 9; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_MPRV` is never used [INFO] [stdout] --> src/emulator/csr.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const MASK_MPRV: u64 = 1 << 17; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_TVM` is never used [INFO] [stdout] --> src/emulator/csr.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const MASK_TVM: u64 = 1 << 20; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_TW` is never used [INFO] [stdout] --> src/emulator/csr.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const MASK_TW: u64 = 1 << 21; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_TSR` is never used [INFO] [stdout] --> src/emulator/csr.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | pub const MASK_TSR: u64 = 1 << 22; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_SXL` is never used [INFO] [stdout] --> src/emulator/csr.rs:62:11 [INFO] [stdout] | [INFO] [stdout] 62 | pub const MASK_SXL: u64 = 0b11 << 34; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_SBE` is never used [INFO] [stdout] --> src/emulator/csr.rs:63:11 [INFO] [stdout] | [INFO] [stdout] 63 | pub const MASK_SBE: u64 = 1 << 36; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_MBE` is never used [INFO] [stdout] --> src/emulator/csr.rs:64:11 [INFO] [stdout] | [INFO] [stdout] 64 | pub const MASK_MBE: u64 = 1 << 37; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Thing` is never constructed [INFO] [stdout] --> src/emulator/errors.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Thing; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/emulator/instructions.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 28 | impl R_Instr { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 29 | pub fn from_u32(inst: u32) -> R_Instr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `I_Instr` is never constructed [INFO] [stdout] --> src/emulator/instructions.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct I_Instr { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/emulator/instructions.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl I_Instr { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 51 | pub fn from_u32(inst: u32) -> I_Instr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `S_Instr` is never constructed [INFO] [stdout] --> src/emulator/instructions.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct S_Instr { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/emulator/instructions.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 71 | impl S_Instr { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 72 | pub fn from_u32(inst: u32) -> S_Instr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `B_Instr` is never constructed [INFO] [stdout] --> src/emulator/instructions.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 86 | pub struct B_Instr { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/emulator/instructions.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 94 | impl B_Instr { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 95 | pub fn from_u32(inst: u32) -> B_Instr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `U_Instr` is never constructed [INFO] [stdout] --> src/emulator/instructions.rs:115:12 [INFO] [stdout] | [INFO] [stdout] 115 | pub struct U_Instr { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/emulator/instructions.rs:122:12 [INFO] [stdout] | [INFO] [stdout] 121 | impl U_Instr { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 122 | pub fn from_u32(inst: u32) -> U_Instr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `J_Instr` is never constructed [INFO] [stdout] --> src/emulator/instructions.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct J_Instr { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | --------------------------- matches any value [INFO] [stdout] ... [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `SupervisorSoftwareInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_SupervisorSoftwareInterrupt` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MachineSoftwareInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_MachineSoftwareInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `SupervisorTimerInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_SupervisorTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MachineTimerInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_MachineTimerInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `SupervisorExternalInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_SupervisorExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `MachineExternalInterrupt` [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_MachineExternalInterrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/emulator/uart.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let mut array = [0; UART_SIZE as usize]; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/emulator/instructions.rs:141:12 [INFO] [stdout] | [INFO] [stdout] 140 | impl J_Instr { [INFO] [stdout] | ------------ associated function in this implementation [INFO] [stdout] 141 | pub fn from_u32(inst: u32) -> J_Instr { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Plic` is never constructed [INFO] [stdout] --> src/emulator/plic.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Plic { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLIC_COMPLETED_ADDR` is never used [INFO] [stdout] --> src/emulator/plic.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const PLIC_COMPLETED_ADDR: u64 = PLIC_CLAIM_ADDR + 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLIC_END` is never used [INFO] [stdout] --> src/emulator/plic.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub const PLIC_END: u64 = PLIC_COMPLETED_ADDR; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `load`, and `store` are never used [INFO] [stdout] --> src/emulator/plic.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl Plic { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 22 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn load(&self, addr: u64) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn store(&mut self, addr: u64, value: u64) -> Result<(), errors::Exception> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_LSR_THR_STATUS_FLAG` is never used [INFO] [stdout] --> src/emulator/uart.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const UART_LSR_THR_STATUS_FLAG: u8 = 1 << 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: crate `Risc_V_Emulator` should have a snake case name [INFO] [stdout] | [INFO] [stdout] = help: convert the identifier to snake case: `risc_v_emulator` [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/lib.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | file.read_to_end(&mut code); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 20 | let _ = file.read_to_end(&mut code); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `size` [INFO] [stdout] --> src/emulator/uart.rs:80:35 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn load(&self, addr: u64, size: u64) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `User` should have an upper case name [INFO] [stdout] --> src/emulator.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const User: Mode = 0; // 0b00 [INFO] [stdout] | ^^^^ help: convert the identifier to upper case: `USER` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `Supervisor` should have an upper case name [INFO] [stdout] --> src/emulator.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const Supervisor: Mode = 1; // 0b01 [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 15 - const Supervisor: Mode = 1; // 0b01 [INFO] [stdout] 15 + const SUPERVISOR: Mode = 1; // 0b01 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `Machine` should have an upper case name [INFO] [stdout] --> src/emulator.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const Machine: Mode = 3; // 0b11 [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 16 - const Machine: Mode = 3; // 0b11 [INFO] [stdout] 16 + const MACHINE: Mode = 3; // 0b11 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MEMORY_SIZE` should have a snake case name [INFO] [stdout] --> src/emulator.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | let MEMORY_SIZE = 1024*1024*128; // Define 10MiB memory [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `memory_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SPP_FLAG_POS` should have a snake case name [INFO] [stdout] --> src/emulator.rs:354:29 [INFO] [stdout] | [INFO] [stdout] 354 | let SPP_FLAG_POS = 8; [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `spp_flag_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SPIE_FLAG_POS` should have a snake case name [INFO] [stdout] --> src/emulator.rs:359:29 [INFO] [stdout] | [INFO] [stdout] 359 | let SPIE_FLAG_POS = 5; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `spie_flag_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SIE_FLAG_POS` should have a snake case name [INFO] [stdout] --> src/emulator.rs:360:29 [INFO] [stdout] | [INFO] [stdout] 360 | let SIE_FLAG_POS = 1; [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `sie_flag_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SupervisorSoftwareInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `supervisor_software_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MachineSoftwareInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `machine_software_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SupervisorTimerInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `supervisor_timer_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cvar` [INFO] [stdout] --> src/emulator/uart.rs:96:20 [INFO] [stdout] | [INFO] [stdout] 96 | let (uart, cvar) = &*self.uart; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_cvar` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MachineTimerInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `machine_timer_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SupervisorExternalInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `supervisor_external_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MachineExternalInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `machine_external_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `size` [INFO] [stdout] --> src/emulator/uart.rs:95:40 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn store(&mut self, addr: u64, size: u64, value: u64) -> Result<(), errors::Exception> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0170`. [INFO] [stdout] [INFO] [stderr] error: could not compile `Risc-V-Emulator` (lib) due to 6 previous errors; 106 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: constant `User` is never used [INFO] [stdout] --> src/emulator.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const User: Mode = 0; // 0b00 [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_status_flag` is never used [INFO] [stdout] --> src/emulator.rs:256:8 [INFO] [stdout] | [INFO] [stdout] 26 | impl Cpu { [INFO] [stdout] | -------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 256 | fn get_status_flag(status: &u64, flag_index: u64) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MCOUNTEREN` is never used [INFO] [stdout] --> src/emulator/csr.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const MCOUNTEREN: usize = 0x306; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MSCRATCH` is never used [INFO] [stdout] --> src/emulator/csr.rs:14:11 [INFO] [stdout] | [INFO] [stdout] 14 | pub const MSCRATCH: usize = 0x340; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSCRATCH` is never used [INFO] [stdout] --> src/emulator/csr.rs:32:11 [INFO] [stdout] | [INFO] [stdout] 32 | pub const SSCRATCH: usize = 0x140; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SATP` is never used [INFO] [stdout] --> src/emulator/csr.rs:42:11 [INFO] [stdout] | [INFO] [stdout] 42 | pub const SATP: usize = 0x180; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_VS` is never used [INFO] [stdout] --> src/emulator/csr.rs:51:11 [INFO] [stdout] | [INFO] [stdout] 51 | pub const MASK_VS: u64 = 0b11 << 9; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_MPRV` is never used [INFO] [stdout] --> src/emulator/csr.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const MASK_MPRV: u64 = 1 << 17; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_TVM` is never used [INFO] [stdout] --> src/emulator/csr.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const MASK_TVM: u64 = 1 << 20; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_TW` is never used [INFO] [stdout] --> src/emulator/csr.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const MASK_TW: u64 = 1 << 21; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_TSR` is never used [INFO] [stdout] --> src/emulator/csr.rs:60:11 [INFO] [stdout] | [INFO] [stdout] 60 | pub const MASK_TSR: u64 = 1 << 22; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_SXL` is never used [INFO] [stdout] --> src/emulator/csr.rs:62:11 [INFO] [stdout] | [INFO] [stdout] 62 | pub const MASK_SXL: u64 = 0b11 << 34; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_SBE` is never used [INFO] [stdout] --> src/emulator/csr.rs:63:11 [INFO] [stdout] | [INFO] [stdout] 63 | pub const MASK_SBE: u64 = 1 << 36; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MASK_MBE` is never used [INFO] [stdout] --> src/emulator/csr.rs:64:11 [INFO] [stdout] | [INFO] [stdout] 64 | pub const MASK_MBE: u64 = 1 << 37; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Thing` is never constructed [INFO] [stdout] --> src/emulator/errors.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Thing; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Plic` is never constructed [INFO] [stdout] --> src/emulator/plic.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Plic { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLIC_COMPLETED_ADDR` is never used [INFO] [stdout] --> src/emulator/plic.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const PLIC_COMPLETED_ADDR: u64 = PLIC_CLAIM_ADDR + 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLIC_END` is never used [INFO] [stdout] --> src/emulator/plic.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub const PLIC_END: u64 = PLIC_COMPLETED_ADDR; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `load`, and `store` are never used [INFO] [stdout] --> src/emulator/plic.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl Plic { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 22 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn load(&self, addr: u64) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub fn store(&mut self, addr: u64, value: u64) -> Result<(), errors::Exception> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `UART_LSR_THR_STATUS_FLAG` is never used [INFO] [stdout] --> src/emulator/uart.rs:26:11 [INFO] [stdout] | [INFO] [stdout] 26 | pub const UART_LSR_THR_STATUS_FLAG: u8 = 1 << 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/lib.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | file.read_to_end(&mut code); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 20 | let _ = file.read_to_end(&mut code); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `User` should have an upper case name [INFO] [stdout] --> src/emulator.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const User: Mode = 0; // 0b00 [INFO] [stdout] | ^^^^ help: convert the identifier to upper case: `USER` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_upper_case_globals)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `Supervisor` should have an upper case name [INFO] [stdout] --> src/emulator.rs:15:7 [INFO] [stdout] | [INFO] [stdout] 15 | const Supervisor: Mode = 1; // 0b01 [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 15 - const Supervisor: Mode = 1; // 0b01 [INFO] [stdout] 15 + const SUPERVISOR: Mode = 1; // 0b01 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `Machine` should have an upper case name [INFO] [stdout] --> src/emulator.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const Machine: Mode = 3; // 0b11 [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: convert the identifier to upper case [INFO] [stdout] | [INFO] [stdout] 16 - const Machine: Mode = 3; // 0b11 [INFO] [stdout] 16 + const MACHINE: Mode = 3; // 0b11 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MEMORY_SIZE` should have a snake case name [INFO] [stdout] --> src/emulator.rs:41:13 [INFO] [stdout] | [INFO] [stdout] 41 | let MEMORY_SIZE = 1024*1024*128; // Define 10MiB memory [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `memory_size` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SPP_FLAG_POS` should have a snake case name [INFO] [stdout] --> src/emulator.rs:354:29 [INFO] [stdout] | [INFO] [stdout] 354 | let SPP_FLAG_POS = 8; [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `spp_flag_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SPIE_FLAG_POS` should have a snake case name [INFO] [stdout] --> src/emulator.rs:359:29 [INFO] [stdout] | [INFO] [stdout] 359 | let SPIE_FLAG_POS = 5; [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `spie_flag_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SIE_FLAG_POS` should have a snake case name [INFO] [stdout] --> src/emulator.rs:360:29 [INFO] [stdout] | [INFO] [stdout] 360 | let SIE_FLAG_POS = 1; [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `sie_flag_pos` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_R_instr_decode` should have a snake case name [INFO] [stdout] --> src/emulator/instructions.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 158 | fn test_R_instr_decode() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_r_instr_decode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_I_instr_decode` should have a snake case name [INFO] [stdout] --> src/emulator/instructions.rs:172:8 [INFO] [stdout] | [INFO] [stdout] 172 | fn test_I_instr_decode() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_i_instr_decode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_S_instr_decode` should have a snake case name [INFO] [stdout] --> src/emulator/instructions.rs:186:8 [INFO] [stdout] | [INFO] [stdout] 186 | fn test_S_instr_decode() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_s_instr_decode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_B_instr_decode` should have a snake case name [INFO] [stdout] --> src/emulator/instructions.rs:200:8 [INFO] [stdout] | [INFO] [stdout] 200 | fn test_B_instr_decode() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_b_instr_decode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_U_instr_decode` should have a snake case name [INFO] [stdout] --> src/emulator/instructions.rs:215:8 [INFO] [stdout] | [INFO] [stdout] 215 | fn test_U_instr_decode() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_u_instr_decode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_J_instr_decode` should have a snake case name [INFO] [stdout] --> src/emulator/instructions.rs:229:8 [INFO] [stdout] | [INFO] [stdout] 229 | fn test_J_instr_decode() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `test_j_instr_decode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SupervisorSoftwareInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | SupervisorSoftwareInterrupt => 1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `supervisor_software_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MachineSoftwareInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | MachineSoftwareInterrupt => 3, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `machine_software_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SupervisorTimerInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:19:13 [INFO] [stdout] | [INFO] [stdout] 19 | SupervisorTimerInterrupt => 5, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `supervisor_timer_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MachineTimerInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:20:13 [INFO] [stdout] | [INFO] [stdout] 20 | MachineTimerInterrupt => 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `machine_timer_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `SupervisorExternalInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | SupervisorExternalInterrupt => 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `supervisor_external_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `MachineExternalInterrupt` should have a snake case name [INFO] [stdout] --> src/emulator/interrupt.rs:22:13 [INFO] [stdout] | [INFO] [stdout] 22 | MachineExternalInterrupt => 11, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `machine_external_interrupt` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/emulator.rs:402:13 [INFO] [stdout] | [INFO] [stdout] 402 | cpu.execute(d); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 402 | let _ = cpu.execute(d); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/emulator.rs:516:9 [INFO] [stdout] | [INFO] [stdout] 516 | cpu.execute(inst_obj); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 516 | let _ = cpu.execute(inst_obj); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0170`. [INFO] [stdout] [INFO] [stderr] error: could not compile `Risc-V-Emulator` (lib test) due to 6 previous errors; 101 warnings emitted [INFO] running `Command { std: "docker" "inspect" "9ef6f1689c65f245f95e816de2458c2d01aaf57b7a0b73ad2a2e9e5827971a29", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9ef6f1689c65f245f95e816de2458c2d01aaf57b7a0b73ad2a2e9e5827971a29", kill_on_drop: false }` [INFO] [stdout] 9ef6f1689c65f245f95e816de2458c2d01aaf57b7a0b73ad2a2e9e5827971a29