From 4d618efe42ed042771ed5eba3d4839b129a27787 Mon Sep 17 00:00:00 2001 From: Jur van den Berg Date: Mon, 1 Apr 2019 12:51:40 +0200 Subject: [PATCH] Make clippy happy --- Cargo.lock | 2 +- src/binread.rs | 3 ++- src/block.rs | 4 +++ src/disassembler.rs | 60 ++++++++++++++++++++++----------------------- src/heap.rs | 6 ++++- src/ijvmreader.rs | 4 +++ src/machine.rs | 12 ++++----- src/netstack.rs | 4 +-- 8 files changed, 54 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ff0dc3a..9c4f715 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,7 +16,7 @@ dependencies = [ [[package]] name = "rustijvm" -version = "0.1.0" +version = "1.0.0" dependencies = [ "serde 1.0.65 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.65 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/src/binread.rs b/src/binread.rs index 7315169..13121cd 100644 --- a/src/binread.rs +++ b/src/binread.rs @@ -2,12 +2,13 @@ use Result; use block::Block; use ops::{Operation,num_to_op}; -#[allow(unknown_lints,len_without_is_empty)] pub trait BinReadable { fn get(&mut self) -> Result; fn cur(&self) -> usize; fn len(&self) -> usize; fn slice(&mut self, len: usize) -> &[u8]; + + fn is_empty(&self) -> bool; } pub trait BinRead { diff --git a/src/block.rs b/src/block.rs index d30e166..b5e734f 100644 --- a/src/block.rs +++ b/src/block.rs @@ -78,4 +78,8 @@ impl BinReadable for Block { self.pointer += len; slice } + + fn is_empty(&self) -> bool { + self.source.is_empty() + } } diff --git a/src/disassembler.rs b/src/disassembler.rs index 7b06d42..c587919 100644 --- a/src/disassembler.rs +++ b/src/disassembler.rs @@ -24,11 +24,11 @@ pub struct Instruction { impl fmt::Display for Instruction { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { if self.label { - write!(f, "\nLBL_{}:\n", self.pos)?; + writeln!(f, "\nLBL_{}:", self.pos)?; } if self.wide { - write!(f, " WIDE\n")?; + writeln!(f, " WIDE")?; } write!(f, " {}", self.name)?; @@ -48,7 +48,7 @@ impl fmt::Display for Instruction { } } - write!(f, "\n")?; + writeln!(f)?; Ok(()) } @@ -82,12 +82,12 @@ pub struct Method { impl Method { pub fn new(i: i32, pos: usize, args: usize, vars: usize) -> Self { - let name; - if pos == 0 { - name = "main".to_string(); + let name = if pos == 0 { + "main".to_string() } else { - name = format!("func_{}", i); - } + format!("func_{}", i) + }; + Self { name, pos, @@ -129,10 +129,9 @@ impl Method { impl fmt::Display for Method { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - let mut main_var_off = 0; - if self.name == "main" { - write!(f, ".main\n")?; - main_var_off = 1; + let main_var_off = if self.name == "main" { + writeln!(f, ".main")?; + 1 } else { write!(f, ".method {}(", self.name)?; let mut comma = ""; @@ -140,18 +139,19 @@ impl fmt::Display for Method { write!(f, "{}var{}", comma, i)?; comma = ", "; } - write!(f,")\n")?; - } + writeln!(f,")")?; + 0 + }; if self.vars > 0 { - write!(f, "\n.var\n")?; + writeln!(f, "\n.var")?; for i in 1..=self.vars { - write!(f, " var{}\n", i + self.args - main_var_off)?; + writeln!(f, " var{}", i + self.args - main_var_off)?; } - write!(f, ".end-var\n")?; + writeln!(f, ".end-var")?; } - write!(f, "\n")?; + writeln!(f)?; for inst in &self.instructions { write!(f, "{}", inst)?; @@ -159,9 +159,9 @@ impl fmt::Display for Method { if self.name == "main" { - write!(f, "\n.end-main\n\n")?; + writeln!(f, "\n.end-main\n")?; } else { - write!(f, "\n.end-method\n\n")?; + writeln!(f, "\n.end-method\n")?; } Ok(()) @@ -214,25 +214,25 @@ impl Disassembler { for arg in args.clone() { let v = match arg { - ops::Args::Byte => self.text.read_i8()? as i32, - ops::Args::Short => self.text.read_i16()? as i32, + ops::Args::Byte => i32::from(self.text.read_i8()?), + ops::Args::Short => i32::from(self.text.read_i16()?), ops::Args::Var => { if wide { - self.text.read_u16()? as i32 + i32::from(self.text.read_u16()?) } else { - self.text.read_u8()? as i32 + i32::from(self.text.read_u8()?) } }, ops::Args::Label => { let offset = self.text.read_i16()?; - let target = pos as i64 + offset as i64; + let target = pos as i64 + i64::from(offset); if target < 0 { return Err("Invalid jump offset"); } method.labels.push(target as usize); target as i32 }, - ops::Args::Constant => self.text.read_u16()? as i32, + ops::Args::Constant => i32::from(self.text.read_u16()?), }; params.push(v); } @@ -372,14 +372,14 @@ impl Disassembly { impl fmt::Display for Disassembly { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - if self.constants.len() > 0 { - write!(f, ".constant\n")?; + if self.constants.is_empty() { + writeln!(f, ".constant")?; for (i, c) in self.constants.iter().enumerate() { if !c.method { - write!(f, " CONST_{:<6} {}\n", i, c.value)?; + writeln!(f, " CONST_{:<6} {}", i, c.value)?; } } - write!(f, ".end-constant\n\n")?; + writeln!(f, ".end-constant\n")?; } for method in &self.methods { diff --git a/src/heap.rs b/src/heap.rs index 3028903..5253294 100644 --- a/src/heap.rs +++ b/src/heap.rs @@ -1,4 +1,4 @@ -#[derive(Debug)] +#[derive(Debug,Default)] pub struct Heap { pub heaps: Vec> } @@ -22,4 +22,8 @@ impl Heap { self.heaps.push(vec![0; size]); self.len() - 1 } + + pub fn is_empty(&self) -> bool { + self.heaps.is_empty() + } } \ No newline at end of file diff --git a/src/ijvmreader.rs b/src/ijvmreader.rs index 39dc1b5..ae52e93 100644 --- a/src/ijvmreader.rs +++ b/src/ijvmreader.rs @@ -52,4 +52,8 @@ impl BinReadable for IJVMReader { self.pointer += len; slice } + + fn is_empty(&self) -> bool { + self.source.is_empty() + } } diff --git a/src/machine.rs b/src/machine.rs index cb77740..541cef1 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -155,17 +155,17 @@ impl Machine { for arg in &args { let v = match arg { - Args::Byte => self.block.read_i8()? as i32, - Args::Short => self.block.read_i16()? as i32, + Args::Byte => i32::from(self.block.read_i8()?), + Args::Short => i32::from(self.block.read_i16()?), Args::Var => { if wide { - self.block.read_u16()? as i32 + i32::from(self.block.read_u16()?) } else { - self.block.read_u8()? as i32 + i32::from(self.block.read_u8()?) } }, - Args::Label => self.block.read_i16()? as i32, - Args::Constant => self.block.read_u16()? as i32, + Args::Label => i32::from(self.block.read_i16()?), + Args::Constant => i32::from(self.block.read_u16()?), }; params.push(v); } diff --git a/src/netstack.rs b/src/netstack.rs index cc1a1cf..be2e581 100644 --- a/src/netstack.rs +++ b/src/netstack.rs @@ -4,7 +4,7 @@ use Result; use std::io::{Read, Write}; use std::net::TcpListener; -#[derive(Debug)] +#[derive(Debug, Default)] pub struct NetStack { pub stream: Option } @@ -28,7 +28,7 @@ impl NetStack { Ok(()) } Err(_) => Err("Could not accept connection") - } + } } pub fn connect(&mut self, host: u32, port: u16) -> Result<()> {