[INFO] updating cached repository themasch/rust-jvm [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/themasch/rust-jvm [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/themasch/rust-jvm" "work/ex/clippy-test-run/sources/stable/gh/themasch/rust-jvm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/themasch/rust-jvm'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/themasch/rust-jvm" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/themasch/rust-jvm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/themasch/rust-jvm'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2d7418c568670d8bcc52ef7e64cc0704f9c34eb1 [INFO] sha for GitHub repo themasch/rust-jvm: 2d7418c568670d8bcc52ef7e64cc0704f9c34eb1 [INFO] validating manifest of themasch/rust-jvm on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of themasch/rust-jvm on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing themasch/rust-jvm [INFO] finished frobbing themasch/rust-jvm [INFO] frobbed toml for themasch/rust-jvm written to work/ex/clippy-test-run/sources/stable/gh/themasch/rust-jvm/Cargo.toml [INFO] started frobbing themasch/rust-jvm [INFO] finished frobbing themasch/rust-jvm [INFO] frobbed toml for themasch/rust-jvm written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/themasch/rust-jvm/Cargo.toml [INFO] crate themasch/rust-jvm has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting themasch/rust-jvm against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/themasch/rust-jvm:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 3e28f67ccc05568f9934d5529be837ba734866acce07c835fe0991898c2df9c0 [INFO] running `"docker" "start" "-a" "3e28f67ccc05568f9934d5529be837ba734866acce07c835fe0991898c2df9c0"` [INFO] [stderr] Checking memchr v2.0.1 [INFO] [stderr] Checking backtrace-sys v0.1.23 [INFO] [stderr] Checking backtrace v0.3.9 [INFO] [stderr] Checking nom v4.0.0 [INFO] [stderr] Checking failure v0.1.1 [INFO] [stderr] Checking rjvm v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:172:29 [INFO] [stderr] | [INFO] [stderr] 172 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:188:29 [INFO] [stderr] | [INFO] [stderr] 188 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:197:29 [INFO] [stderr] | [INFO] [stderr] 197 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:216:21 [INFO] [stderr] | [INFO] [stderr] 216 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/java/class_file/mod.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::slice::Iter` [INFO] [stderr] --> src/java/class_file/mod.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | use std::slice::Iter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/mod.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | return set; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `set` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | return rt; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `rt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | return map; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `map` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:438:9 [INFO] [stderr] | [INFO] [stderr] 438 | / return match return_type { [INFO] [stderr] 439 | | ValueType::Void => if return_value.is_some() { [INFO] [stderr] 440 | | Err(RuntimeError::GenericError { message: format!("invalid return type. expected void.") }) [INFO] [stderr] 441 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 449 | | _ => Ok(()), [INFO] [stderr] 450 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 438 | match return_type { [INFO] [stderr] 439 | ValueType::Void => if return_value.is_some() { [INFO] [stderr] 440 | Err(RuntimeError::GenericError { message: format!("invalid return type. expected void.") }) [INFO] [stderr] 441 | } else { [INFO] [stderr] 442 | Ok(()) [INFO] [stderr] 443 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `java::class_file::Attribute` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use java::class_file::Attribute; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `java::class_file::CodeBlock` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use java::class_file::CodeBlock; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:172:29 [INFO] [stderr] | [INFO] [stderr] 172 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:188:29 [INFO] [stderr] | [INFO] [stderr] 188 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:197:29 [INFO] [stderr] | [INFO] [stderr] 197 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/parser.rs:216:21 [INFO] [stderr] | [INFO] [stderr] 216 | Err(err) => return Err(err) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(err)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/java/class_file/parser.rs:286:23 [INFO] [stderr] | [INFO] [stderr] 286 | const CLASSFILE: &'static [u8] = include_bytes!("../../../sample/HelloWorld.class"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/java/class_file/parser.rs:287:23 [INFO] [stderr] | [INFO] [stderr] 287 | const DEMOCLASS: &'static [u8] = include_bytes!("../../../sample/DemoClass.class"); [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::*` [INFO] [stderr] --> src/java/class_file/parser.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | use nom::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `nom::IResult` [INFO] [stderr] --> src/java/class_file/mod.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | use nom::IResult; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::slice::Iter` [INFO] [stderr] --> src/java/class_file/mod.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | use std::slice::Iter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/class_file/mod.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | return set; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `set` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | return rt; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `rt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | return map; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `map` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | return self.run_method(method.unwrap(), class.clone(), vec![]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.run_method(method.unwrap(), class.clone(), vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/java/runtime/mod.rs:438:9 [INFO] [stderr] | [INFO] [stderr] 438 | / return match return_type { [INFO] [stderr] 439 | | ValueType::Void => if return_value.is_some() { [INFO] [stderr] 440 | | Err(RuntimeError::GenericError { message: format!("invalid return type. expected void.") }) [INFO] [stderr] 441 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 449 | | _ => Ok(()), [INFO] [stderr] 450 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 438 | match return_type { [INFO] [stderr] 439 | ValueType::Void => if return_value.is_some() { [INFO] [stderr] 440 | Err(RuntimeError::GenericError { message: format!("invalid return type. expected void.") }) [INFO] [stderr] 441 | } else { [INFO] [stderr] 442 | Ok(()) [INFO] [stderr] 443 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `java::class_file::ClassFile` [INFO] [stderr] --> src/java/runtime/mod.rs:456:9 [INFO] [stderr] | [INFO] [stderr] 456 | use java::class_file::ClassFile; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `java::class_file::Method` [INFO] [stderr] --> src/java/runtime/mod.rs:457:9 [INFO] [stderr] | [INFO] [stderr] 457 | use java::class_file::Method; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `java::class_file::Attribute` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use java::class_file::Attribute; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `java::class_file::CodeBlock` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use java::class_file::CodeBlock; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/java/class_file/parser.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / loop { [INFO] [stderr] 27 | | if input[0] == b')' { [INFO] [stderr] 28 | | return Ok((&input[1..], vec)); [INFO] [stderr] 29 | | } [INFO] [stderr] ... | [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | }.clone() [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/java/class_file/parser.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / loop { [INFO] [stderr] 27 | | if input[0] == b')' { [INFO] [stderr] 28 | | return Ok((&input[1..], vec)); [INFO] [stderr] 29 | | } [INFO] [stderr] ... | [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | }.clone() [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `exception_table` [INFO] [stderr] --> src/java/class_file/parser.rs:181:21 [INFO] [stderr] | [INFO] [stderr] 181 | exception_table: length_count!( be_u16, exception_table ) >> [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_exception_table` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length` [INFO] [stderr] --> src/java/class_file/parser.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | length: be_u32 >> [INFO] [stderr] | ^^^^^^ help: consider using `_length` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rem` [INFO] [stderr] --> src/java/class_file/mod.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | Ok((rem, (args, ret))) => Ok(MethodDescriptor { arguments: args, return_type: ret }), [INFO] [stderr] | ^^^ help: consider using `_rem` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/java/runtime/mod.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | for i in 0..size { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arg_type` [INFO] [stderr] --> src/java/runtime/mod.rs:347:89 [INFO] [stderr] | [INFO] [stderr] 347 | let mut args = method.get_signature().arguments.iter().map(|arg_type| { [INFO] [stderr] | ^^^^^^^^ help: consider using `_arg_type` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/java/runtime/mod.rs:290:40 [INFO] [stderr] | [INFO] [stderr] 290 | Instruction::IInc((offset, value)) => match stack_frame.get_variable_mut(usize::from(*offset)) { [INFO] [stderr] | ^^^^^ help: consider using `_value` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `return_value` [INFO] [stderr] --> src/java/runtime/mod.rs:390:17 [INFO] [stderr] | [INFO] [stderr] 390 | let mut return_value: Option = None; [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_return_value` instead [INFO] [stderr] [INFO] [stderr] warning: private type `java::runtime::StackValue` in public interface (error E0446) [INFO] [stderr] --> src/java/runtime/mod.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | / pub fn exec_method_on_main(&mut self, method_name: &str) -> Result, RuntimeError> { [INFO] [stderr] 200 | | let class = self.classes.get(&self.main_class).expect("no main class loaded").clone(); [INFO] [stderr] 201 | | let method = class.methods.iter().find(|method| method.name.eq(method_name)); [INFO] [stderr] 202 | | if method.is_none() { [INFO] [stderr] ... | [INFO] [stderr] 206 | | return self.run_method(method.unwrap(), class.clone(), vec![]); [INFO] [stderr] 207 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(private_in_public)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #34537 [INFO] [stderr] [INFO] [stderr] warning: unused variable: `exception_table` [INFO] [stderr] --> src/java/class_file/parser.rs:181:21 [INFO] [stderr] | [INFO] [stderr] 181 | exception_table: length_count!( be_u16, exception_table ) >> [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_exception_table` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length` [INFO] [stderr] --> src/java/class_file/parser.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | length: be_u32 >> [INFO] [stderr] | ^^^^^^ help: consider using `_length` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `input` [INFO] [stderr] --> src/java/class_file/parser.rs:342:13 [INFO] [stderr] | [INFO] [stderr] 342 | let input = b"()V"; [INFO] [stderr] | ^^^^^ help: consider using `_input` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rem` [INFO] [stderr] --> src/java/class_file/mod.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | Ok((rem, (args, ret))) => Ok(MethodDescriptor { arguments: args, return_type: ret }), [INFO] [stderr] | ^^^ help: consider using `_rem` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/java/runtime/mod.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | for i in 0..size { [INFO] [stderr] | ^ help: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arg_type` [INFO] [stderr] --> src/java/runtime/mod.rs:347:89 [INFO] [stderr] | [INFO] [stderr] 347 | let mut args = method.get_signature().arguments.iter().map(|arg_type| { [INFO] [stderr] | ^^^^^^^^ help: consider using `_arg_type` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/java/runtime/mod.rs:290:40 [INFO] [stderr] | [INFO] [stderr] 290 | Instruction::IInc((offset, value)) => match stack_frame.get_variable_mut(usize::from(*offset)) { [INFO] [stderr] | ^^^^^ help: consider using `_value` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `return_value` [INFO] [stderr] --> src/java/runtime/mod.rs:390:17 [INFO] [stderr] | [INFO] [stderr] 390 | let mut return_value: Option = None; [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_return_value` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/java/runtime/mod.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | let mut return_value: Option = None; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `disassemble` [INFO] [stderr] --> src/java/class_file/dissasm.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn disassemble<'a>(method: &Method<'a>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Public` [INFO] [stderr] --> src/java/class_file/mod.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | Public, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Private` [INFO] [stderr] --> src/java/class_file/mod.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | Private, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Protected` [INFO] [stderr] --> src/java/class_file/mod.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | Protected, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Static` [INFO] [stderr] --> src/java/class_file/mod.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | Static, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Final` [INFO] [stderr] --> src/java/class_file/mod.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | Final, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Synchronized` [INFO] [stderr] --> src/java/class_file/mod.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | Synchronized, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Native` [INFO] [stderr] --> src/java/class_file/mod.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | Native, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Abstract` [INFO] [stderr] --> src/java/class_file/mod.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | Abstract, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Strict` [INFO] [stderr] --> src/java/class_file/mod.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | Strict, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_access` [INFO] [stderr] --> src/java/class_file/mod.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | pub fn get_access(&self) -> HashSet { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_line_numbers` [INFO] [stderr] --> src/java/class_file/mod.rs:260:5 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn get_line_numbers(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `None` [INFO] [stderr] --> src/java/runtime/mod.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | None, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Null` [INFO] [stderr] --> src/java/runtime/mod.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | Null, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `GotoAbsolute` [INFO] [stderr] --> src/java/runtime/mod.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | GotoAbsolute(usize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `classpath` [INFO] [stderr] --> src/java/runtime/mod.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | classpath: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/java/runtime/mod.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | let mut return_value: Option = None; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/java/class_file/parser.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / loop { [INFO] [stderr] 27 | | if input[0] == b')' { [INFO] [stderr] 28 | | return Ok((&input[1..], vec)); [INFO] [stderr] 29 | | } [INFO] [stderr] ... | [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | }.clone() [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] help: try removing the `clone` call [INFO] [stderr] | [INFO] [stderr] 26 | loop { [INFO] [stderr] 27 | if input[0] == b')' { [INFO] [stderr] 28 | return Ok((&input[1..], vec)); [INFO] [stderr] 29 | } [INFO] [stderr] 30 | [INFO] [stderr] 31 | match parse_type(input) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:165:69 [INFO] [stderr] | [INFO] [stderr] 165 | fn select_attribute<'t, 'a>(input: &'t [u8], name: &str, constants: &'a Vec>) -> IResult<&'t [u8], Attribute<'t>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'a>]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:203:50 [INFO] [stderr] | [INFO] [stderr] 203 | fn attribute<'t, 'a>(input: &'t [u8], constants: &'a Vec>) -> IResult<&'t [u8], Attribute<'t>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'a>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:221:26 [INFO] [stderr] | [INFO] [stderr] 221 | field<'a>(constants: &'a Vec>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'this_is_probably_unique_i_hope_please>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:234:27 [INFO] [stderr] | [INFO] [stderr] 234 | method<'a>(constants: &'a Vec>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'this_is_probably_unique_i_hope_please>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/java/class_file/parser.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | name: match constants.get(usize::from(name_index - 1)).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `constants[usize::from(name_index - 1)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/java/class_file/parser.rs:247:31 [INFO] [stderr] | [INFO] [stderr] 247 | descriptor: match constants.get(usize::from(descriptor_index - 1)).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `constants[usize::from(descriptor_index - 1)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `DEMOCLASS` [INFO] [stderr] --> src/java/class_file/parser.rs:287:5 [INFO] [stderr] | [INFO] [stderr] 287 | const DEMOCLASS: &'static [u8] = include_bytes!("../../../sample/DemoClass.class"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `disassemble` [INFO] [stderr] --> src/java/class_file/dissasm.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub fn disassemble<'a>(method: &Method<'a>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Public` [INFO] [stderr] --> src/java/class_file/mod.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | Public, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Private` [INFO] [stderr] --> src/java/class_file/mod.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | Private, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Protected` [INFO] [stderr] --> src/java/class_file/mod.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | Protected, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Static` [INFO] [stderr] --> src/java/class_file/mod.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | Static, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Final` [INFO] [stderr] --> src/java/class_file/mod.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | Final, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Synchronized` [INFO] [stderr] --> src/java/class_file/mod.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | Synchronized, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Native` [INFO] [stderr] --> src/java/class_file/mod.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | Native, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Abstract` [INFO] [stderr] --> src/java/class_file/mod.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | Abstract, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Strict` [INFO] [stderr] --> src/java/class_file/mod.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | Strict, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_access` [INFO] [stderr] --> src/java/class_file/mod.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | pub fn get_access(&self) -> HashSet { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_line_numbers` [INFO] [stderr] --> src/java/class_file/mod.rs:260:5 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn get_line_numbers(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `None` [INFO] [stderr] --> src/java/runtime/mod.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | None, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Null` [INFO] [stderr] --> src/java/runtime/mod.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | Null, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `GotoAbsolute` [INFO] [stderr] --> src/java/runtime/mod.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | GotoAbsolute(usize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `classpath` [INFO] [stderr] --> src/java/runtime/mod.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | classpath: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/java/class_file/parser.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / loop { [INFO] [stderr] 27 | | if input[0] == b')' { [INFO] [stderr] 28 | | return Ok((&input[1..], vec)); [INFO] [stderr] 29 | | } [INFO] [stderr] ... | [INFO] [stderr] 37 | | } [INFO] [stderr] 38 | | }.clone() [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] help: try removing the `clone` call [INFO] [stderr] | [INFO] [stderr] 26 | loop { [INFO] [stderr] 27 | if input[0] == b')' { [INFO] [stderr] 28 | return Ok((&input[1..], vec)); [INFO] [stderr] 29 | } [INFO] [stderr] 30 | [INFO] [stderr] 31 | match parse_type(input) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/java/class_file/mod.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | Err(_) => panic!("asdf"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/java/class_file/mod.rs:144:20 [INFO] [stderr] | [INFO] [stderr] 144 | return self.index.get(&offset).map(|value| *value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.index.get(&offset).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: the variable `curr_index` is used as a loop counter. Consider using `for (curr_index, item) in self.instructions.iter().enumerate()` or similar iterators [INFO] [stderr] --> src/java/class_file/mod.rs:149:28 [INFO] [stderr] | [INFO] [stderr] 149 | for instruction in self.instructions.iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/java/class_file/mod.rs:151:13 [INFO] [stderr] | [INFO] [stderr] 151 | / if !self.index.contains_key(&curr_offset) { [INFO] [stderr] 152 | | self.index.insert(curr_offset, curr_index); [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____________^ help: consider using: `self.index.entry(curr_offset).or_insert(curr_index)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/java/class_file/mod.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | curr_offset = curr_offset + size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `curr_offset += size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/java/class_file/mod.rs:186:9 [INFO] [stderr] | [INFO] [stderr] 186 | item.map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `item.cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/java/class_file/mod.rs:186:22 [INFO] [stderr] | [INFO] [stderr] 186 | item.map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/java/class_file/mod.rs:196:9 [INFO] [stderr] | [INFO] [stderr] 196 | / self.attributes.iter() [INFO] [stderr] 197 | | .filter_map( [INFO] [stderr] 198 | | |attr| match attr { [INFO] [stderr] 199 | | Attribute::CodeAttribute(code) => Some(code), [INFO] [stderr] ... | [INFO] [stderr] 204 | | .first() [INFO] [stderr] 205 | | .map(|x| *x) [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 196 | self.attributes.iter() [INFO] [stderr] 197 | .filter_map( [INFO] [stderr] 198 | |attr| match attr { [INFO] [stderr] 199 | Attribute::CodeAttribute(code) => Some(code), [INFO] [stderr] 200 | _ => None [INFO] [stderr] 201 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/java/class_file/mod.rs:274:18 [INFO] [stderr] | [INFO] [stderr] 274 | for x in 0..(max.0 + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=max.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:165:69 [INFO] [stderr] | [INFO] [stderr] 165 | fn select_attribute<'t, 'a>(input: &'t [u8], name: &str, constants: &'a Vec>) -> IResult<&'t [u8], Attribute<'t>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'a>]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:203:50 [INFO] [stderr] | [INFO] [stderr] 203 | fn attribute<'t, 'a>(input: &'t [u8], constants: &'a Vec>) -> IResult<&'t [u8], Attribute<'t>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'a>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:221:26 [INFO] [stderr] | [INFO] [stderr] 221 | field<'a>(constants: &'a Vec>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'this_is_probably_unique_i_hope_please>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/java/class_file/parser.rs:234:27 [INFO] [stderr] | [INFO] [stderr] 234 | method<'a>(constants: &'a Vec>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ConstantType<'this_is_probably_unique_i_hope_please>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/java/class_file/parser.rs:243:25 [INFO] [stderr] | [INFO] [stderr] 243 | name: match constants.get(usize::from(name_index - 1)).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `constants[usize::from(name_index - 1)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/java/class_file/parser.rs:247:31 [INFO] [stderr] | [INFO] [stderr] 247 | descriptor: match constants.get(usize::from(descriptor_index - 1)).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `constants[usize::from(descriptor_index - 1)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/java/class_file/mod.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | Err(_) => panic!("asdf"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/java/class_file/mod.rs:144:20 [INFO] [stderr] | [INFO] [stderr] 144 | return self.index.get(&offset).map(|value| *value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.index.get(&offset).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: the variable `curr_index` is used as a loop counter. Consider using `for (curr_index, item) in self.instructions.iter().enumerate()` or similar iterators [INFO] [stderr] --> src/java/class_file/mod.rs:149:28 [INFO] [stderr] | [INFO] [stderr] 149 | for instruction in self.instructions.iter() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/java/class_file/mod.rs:151:13 [INFO] [stderr] | [INFO] [stderr] 151 | / if !self.index.contains_key(&curr_offset) { [INFO] [stderr] 152 | | self.index.insert(curr_offset, curr_index); [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____________^ help: consider using: `self.index.entry(curr_offset).or_insert(curr_index)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/java/class_file/mod.rs:159:13 [INFO] [stderr] | [INFO] [stderr] 159 | curr_offset = curr_offset + size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `curr_offset += size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/java/class_file/mod.rs:186:9 [INFO] [stderr] | [INFO] [stderr] 186 | item.map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `item.cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/java/class_file/mod.rs:186:22 [INFO] [stderr] | [INFO] [stderr] 186 | item.map(|x| x.clone()) [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/java/class_file/mod.rs:196:9 [INFO] [stderr] | [INFO] [stderr] 196 | / self.attributes.iter() [INFO] [stderr] 197 | | .filter_map( [INFO] [stderr] 198 | | |attr| match attr { [INFO] [stderr] 199 | | Attribute::CodeAttribute(code) => Some(code), [INFO] [stderr] ... | [INFO] [stderr] 204 | | .first() [INFO] [stderr] 205 | | .map(|x| *x) [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 196 | self.attributes.iter() [INFO] [stderr] 197 | .filter_map( [INFO] [stderr] 198 | |attr| match attr { [INFO] [stderr] 199 | Attribute::CodeAttribute(code) => Some(code), [INFO] [stderr] 200 | _ => None [INFO] [stderr] 201 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/java/class_file/mod.rs:274:18 [INFO] [stderr] | [INFO] [stderr] 274 | for x in 0..(max.0 + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `0..=max.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/java/runtime/mod.rs:164:78 [INFO] [stderr] | [INFO] [stderr] 164 | Some(ConstantType::Utf8 { value }) => Some((class_index, value.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 164 | Some(ConstantType::Utf8 { value }) => Some((class_index, &(*value).clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 164 | Some(ConstantType::Utf8 { value }) => Some((class_index, &str::clone(value))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:283:68 [INFO] [stderr] | [INFO] [stderr] 283 | return Err(RuntimeError::StackType { expected: format!("integer") }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:287:70 [INFO] [stderr] | [INFO] [stderr] 287 | return Err(RuntimeError::GenericError { message: format!("IAdd") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"IAdd".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/java/runtime/mod.rs:291:59 [INFO] [stderr] | [INFO] [stderr] 291 | Some(LocalVariable::Integer(intvalue)) => *intvalue = *intvalue + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*intvalue += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:292:78 [INFO] [stderr] | [INFO] [stderr] 292 | Some(_) => return Err(RuntimeError::VariableType { expected: format!("integer"), offset: usize::from(*offset) }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:308:72 [INFO] [stderr] | [INFO] [stderr] 308 | return Err(RuntimeError::StackType { expected: format!("integer") }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:312:74 [INFO] [stderr] | [INFO] [stderr] 312 | return Err(RuntimeError::GenericError { message: format!("IfICmpGE") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"IfICmpGE".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:322:68 [INFO] [stderr] | [INFO] [stderr] 322 | Some(_) => Err(RuntimeError::StackType { expected: format!("Integer") }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/java/runtime/mod.rs:333:47 [INFO] [stderr] | [INFO] [stderr] 333 | let other_class = self.class_index_map.get(class.get_class_name()).unwrap().get(&(*class_index as usize)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.class_index_map[class.get_class_name()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:381:67 [INFO] [stderr] | [INFO] [stderr] 381 | _ => return Err(RuntimeError::GenericError { message: format!("unknown instruction") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"unknown instruction".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/java/runtime/mod.rs:413:60 [INFO] [stderr] | [INFO] [stderr] 413 | let tmp = instruction_counter as i64 + offset as i64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(offset)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:417:74 [INFO] [stderr] | [INFO] [stderr] 417 | return Err(RuntimeError::GenericError { message: format!("instruction index would be negative") }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"instruction index would be negative".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/java/runtime/mod.rs:423:21 [INFO] [stderr] | [INFO] [stderr] 423 | self.check_return_type(method.get_signature().return_type, &return_value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:431:51 [INFO] [stderr] | [INFO] [stderr] 431 | Err(RuntimeError::GenericError { message: format!("reached end of method with no return") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of method with no return".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:440:59 [INFO] [stderr] | [INFO] [stderr] 440 | Err(RuntimeError::GenericError { message: format!("invalid return type. expected void.") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid return type. expected void.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:447:64 [INFO] [stderr] | [INFO] [stderr] 447 | _ => Err(RuntimeError::GenericError { message: format!("invalid return type. expected integer.") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid return type. expected integer.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rjvm`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/java/runtime/mod.rs:164:78 [INFO] [stderr] | [INFO] [stderr] 164 | Some(ConstantType::Utf8 { value }) => Some((class_index, value.clone())), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 164 | Some(ConstantType::Utf8 { value }) => Some((class_index, &(*value).clone())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 164 | Some(ConstantType::Utf8 { value }) => Some((class_index, &str::clone(value))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:283:68 [INFO] [stderr] | [INFO] [stderr] 283 | return Err(RuntimeError::StackType { expected: format!("integer") }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:287:70 [INFO] [stderr] | [INFO] [stderr] 287 | return Err(RuntimeError::GenericError { message: format!("IAdd") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"IAdd".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/java/runtime/mod.rs:291:59 [INFO] [stderr] | [INFO] [stderr] 291 | Some(LocalVariable::Integer(intvalue)) => *intvalue = *intvalue + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `*intvalue += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:292:78 [INFO] [stderr] | [INFO] [stderr] 292 | Some(_) => return Err(RuntimeError::VariableType { expected: format!("integer"), offset: usize::from(*offset) }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:308:72 [INFO] [stderr] | [INFO] [stderr] 308 | return Err(RuntimeError::StackType { expected: format!("integer") }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:312:74 [INFO] [stderr] | [INFO] [stderr] 312 | return Err(RuntimeError::GenericError { message: format!("IfICmpGE") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"IfICmpGE".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:322:68 [INFO] [stderr] | [INFO] [stderr] 322 | Some(_) => Err(RuntimeError::StackType { expected: format!("Integer") }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Integer".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/java/runtime/mod.rs:333:47 [INFO] [stderr] | [INFO] [stderr] 333 | let other_class = self.class_index_map.get(class.get_class_name()).unwrap().get(&(*class_index as usize)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.class_index_map[class.get_class_name()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:381:67 [INFO] [stderr] | [INFO] [stderr] 381 | _ => return Err(RuntimeError::GenericError { message: format!("unknown instruction") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"unknown instruction".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/java/runtime/mod.rs:413:60 [INFO] [stderr] | [INFO] [stderr] 413 | let tmp = instruction_counter as i64 + offset as i64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i64::from(offset)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:417:74 [INFO] [stderr] | [INFO] [stderr] 417 | return Err(RuntimeError::GenericError { message: format!("instruction index would be negative") }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"instruction index would be negative".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/java/runtime/mod.rs:423:21 [INFO] [stderr] | [INFO] [stderr] 423 | self.check_return_type(method.get_signature().return_type, &return_value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:431:51 [INFO] [stderr] | [INFO] [stderr] 431 | Err(RuntimeError::GenericError { message: format!("reached end of method with no return") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"reached end of method with no return".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:440:59 [INFO] [stderr] | [INFO] [stderr] 440 | Err(RuntimeError::GenericError { message: format!("invalid return type. expected void.") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid return type. expected void.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/java/runtime/mod.rs:447:64 [INFO] [stderr] | [INFO] [stderr] 447 | _ => Err(RuntimeError::GenericError { message: format!("invalid return type. expected integer.") }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid return type. expected integer.".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rjvm`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3e28f67ccc05568f9934d5529be837ba734866acce07c835fe0991898c2df9c0"` [INFO] running `"docker" "rm" "-f" "3e28f67ccc05568f9934d5529be837ba734866acce07c835fe0991898c2df9c0"` [INFO] [stdout] 3e28f67ccc05568f9934d5529be837ba734866acce07c835fe0991898c2df9c0