[INFO] updating cached repository AprliRainkun/rua [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/AprliRainkun/rua [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/AprliRainkun/rua" "work/ex/clippy-test-run/sources/stable/gh/AprliRainkun/rua"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/AprliRainkun/rua'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/AprliRainkun/rua" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/AprliRainkun/rua"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/AprliRainkun/rua'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 181ed59c1d8bc7ada19c1bb490f9d2170397adeb [INFO] sha for GitHub repo AprliRainkun/rua: 181ed59c1d8bc7ada19c1bb490f9d2170397adeb [INFO] validating manifest of AprliRainkun/rua 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 AprliRainkun/rua 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 AprliRainkun/rua [INFO] finished frobbing AprliRainkun/rua [INFO] frobbed toml for AprliRainkun/rua written to work/ex/clippy-test-run/sources/stable/gh/AprliRainkun/rua/Cargo.toml [INFO] started frobbing AprliRainkun/rua [INFO] finished frobbing AprliRainkun/rua [INFO] frobbed toml for AprliRainkun/rua written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/AprliRainkun/rua/Cargo.toml [INFO] crate AprliRainkun/rua 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 AprliRainkun/rua against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/AprliRainkun/rua:/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 -Dclippy::into_iter_on_array" "-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] 6ebb4362af063d3b0ab8f14331efa6f7c07c0f022836d2a46cee5d5b83672cc4 [INFO] running `"docker" "start" "-a" "6ebb4362af063d3b0ab8f14331efa6f7c07c0f022836d2a46cee5d5b83672cc4"` [INFO] [stderr] Compiling winapi-build v0.1.1 [INFO] [stderr] Checking rua v0.1.0 (/opt/crater/workdir) [INFO] [stderr] error[E0602]: unknown lint: `clippy::into_iter_on_array` [INFO] [stderr] | [INFO] [stderr] = note: requested on the command line with `-D clippy::into_iter_on_array` [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser/types/mod.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | ret: ret, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ret` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0602`. [INFO] [stderr] error: Could not compile `winapi-build`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/mod.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | return Err(TokenizeError::Invalidoperator); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(TokenizeError::Invalidoperator)` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ir_generator/mod.rs:411:36 [INFO] [stderr] | [INFO] [stderr] 411 | } else { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 412 | | if is_temp { [INFO] [stderr] 413 | | (true, left_reg) [INFO] [stderr] 414 | | } else { [INFO] [stderr] 415 | | (true, res_alloc.reg_alloc.push(None)) [INFO] [stderr] 416 | | } [INFO] [stderr] 417 | | }; [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 411 | } else if is_temp { [INFO] [stderr] 412 | (true, left_reg) [INFO] [stderr] 413 | } else { [INFO] [stderr] 414 | (true, res_alloc.reg_alloc.push(None)) [INFO] [stderr] 415 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/ir_generator/mod.rs:890:13 [INFO] [stderr] | [INFO] [stderr] 890 | return Ok((varlist.clone(), exprlist.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((varlist.clone(), exprlist.clone()))` [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/ir_generator/mod.rs:898:13 [INFO] [stderr] | [INFO] [stderr] 898 | return Ok((varlist.clone(), truncated)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((varlist.clone(), truncated))` [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/ir_generator/mod.rs:928:13 [INFO] [stderr] | [INFO] [stderr] 928 | return Ok((varlist.clone(), extended)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok((varlist.clone(), extended))` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/compiler/mod.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | bytecode [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/compiler/mod.rs:24:24 [INFO] [stderr] | [INFO] [stderr] 24 | let bytecode = Assembler::assemble(ir_gen.get_chunk(source_name)) [INFO] [stderr] | ________________________^ [INFO] [stderr] 25 | | .expect("Assemble failed"); [INFO] [stderr] | |______________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/lexer/mod.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn tokenize<'a, Tit>(&'a self, text_it: Tit) -> TokenIterator<'a, Tit> [INFO] [stderr] 31 | | where [INFO] [stderr] 32 | | Tit: iter::Iterator + Clone, [INFO] [stderr] 33 | | { [INFO] [stderr] 34 | | TokenIterator::new(text_it, &self.keyword_table, &self.operator_table) [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lexer/mod.rs:84:42 [INFO] [stderr] | [INFO] [stderr] 84 | Some(keyword) => Token::Flag(keyword.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*keyword` [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] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/lexer/mod.rs:94:20 [INFO] [stderr] | [INFO] [stderr] 94 | for len in (1..(n_char_sym.len() + 1)).rev() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(1..=n_char_sym.len())` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/lexer/mod.rs:110:16 [INFO] [stderr] | [INFO] [stderr] 110 | if let Some(_) = self.buffer.next() { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 111 | | Ok(Token::Str(string)) [INFO] [stderr] 112 | | } else { [INFO] [stderr] 113 | | Err(TokenizeError::Error) [INFO] [stderr] 114 | | } [INFO] [stderr] | |_________- help: try this: `if self.buffer.next().is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/lexer/mod.rs:174:44 [INFO] [stderr] | [INFO] [stderr] 174 | if let Some(next_ch) = self.buffer.by_ref().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/lexer/mod.rs:186:40 [INFO] [stderr] | [INFO] [stderr] 186 | if let Some('-') = self.buffer.by_ref().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parser/mod.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn ast_from_text(text: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/parser/mod.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | self.token_iter.peek().map(|t| t.clone()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `self.token_iter.peek().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: redundant closure found [INFO] [stderr] --> src/parser/mod.rs:311:26 [INFO] [stderr] | [INFO] [stderr] 311 | self.block().map(|block| Node::Block(block)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Node::Block` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/parser/mod.rs:409:16 [INFO] [stderr] | [INFO] [stderr] 409 | if let Ok(_) = self.eat(FlagType::Assign) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 410 | | let mut exprlist = self.exprlist()?; [INFO] [stderr] 411 | | Ok(Stat::Assign(varlist, exprlist)) [INFO] [stderr] 412 | | } else { [INFO] [stderr] 413 | | Err(ParserError::ExpectationUnmeet) [INFO] [stderr] 414 | | } [INFO] [stderr] | |_________- help: try this: `if self.eat(FlagType::Assign).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/parser/mod.rs:421:16 [INFO] [stderr] | [INFO] [stderr] 421 | if let Ok(_) = self.eat(FlagType::Assign) { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 422 | | let exprlist = self.exprlist()?; [INFO] [stderr] 423 | | Ok(Stat::AssignLocal(namelist, exprlist)) [INFO] [stderr] 424 | | } else { [INFO] [stderr] 425 | | // just declaration [INFO] [stderr] 426 | | Ok(Stat::AssignLocal(namelist, vec![])) [INFO] [stderr] 427 | | } [INFO] [stderr] | |_________- help: try this: `if self.eat(FlagType::Assign).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/parser/mod.rs:433:25 [INFO] [stderr] | [INFO] [stderr] 433 | self.exprlist().or(Ok(vec![])).map(|r| { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try this: `or_else(|_| Ok(vec![]))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/parser/mod.rs:574:20 [INFO] [stderr] | [INFO] [stderr] 574 | if let Err(_) = self.eat(FlagType::End) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 575 | | Err(ParserError::SyntaxError) [INFO] [stderr] 576 | | } else { [INFO] [stderr] 577 | | Ok(result) [INFO] [stderr] 578 | | } [INFO] [stderr] | |_____________- help: try this: `if self.eat(FlagType::End).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/parser/mod.rs:615:27 [INFO] [stderr] | [INFO] [stderr] 615 | let step = if let Ok(_) = self.eat(FlagType::Comma) { [INFO] [stderr] | ____________________- ^^^^^ [INFO] [stderr] 616 | | self.expr()? [INFO] [stderr] 617 | | } else { [INFO] [stderr] 618 | | Expr::Num(1_f64) [INFO] [stderr] 619 | | }; [INFO] [stderr] | |_________- help: try this: `if self.eat(FlagType::Comma).is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/parser/mod.rs:686:36 [INFO] [stderr] | [INFO] [stderr] 686 | fn function_body(&mut self) -> Result<((Vec, bool), Box), ParserError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/ir_generator/symbol_table/mod.rs:91:20 [INFO] [stderr] | [INFO] [stderr] 91 | if let Some(_) = cursor.as_ref() { [INFO] [stderr] | _____________- ^^^^^^^ [INFO] [stderr] 92 | | if let Some(&pos) = (*cursor).symbols.get(name) { [INFO] [stderr] 93 | | return Some((SymbolScope::Local, pos)); [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [INFO] [stderr] | |_____________- help: try this: `if cursor.as_ref().is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ir_generator/symbol_table/mod.rs:104:21 [INFO] [stderr] | [INFO] [stderr] 104 | path_length = path_length + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `path_length += 1` [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: manual implementation of an assign operation [INFO] [stderr] --> src/ir_generator/resource_allocator/mod.rs:118:17 [INFO] [stderr] | [INFO] [stderr] 118 | self.counter = self.counter + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.counter += 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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/ir_generator/resource_allocator/mod.rs:130:24 [INFO] [stderr] | [INFO] [stderr] 130 | list.push((if depth > 1 { false } else { true }, pos_in_ul, pos_in_parent)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `!(depth > 1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/ir_generator/resource_allocator/mod.rs:142:43 [INFO] [stderr] | [INFO] [stderr] 142 | let &(depth, self_final_pos, _) = self.name_indexer.get(name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.name_indexer[name]` [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: length comparison to zero [INFO] [stderr] --> src/ir_generator/types/mod.rs:123:12 [INFO] [stderr] | [INFO] [stderr] 123 | if self.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ir_generator/types/mod.rs:146:88 [INFO] [stderr] | [INFO] [stderr] 146 | let mut residue_bits = byte_iter.fold(0_u32, |bytes, &byte| (bytes << 8) | byte as u32); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(byte)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/ir_generator/types/mod.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | residue_bits = residue_bits << (8 * (4 - residue)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `residue_bits <<= (8 * (4 - residue))` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ir_generator/mod.rs:63:16 [INFO] [stderr] | [INFO] [stderr] 63 | paras: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Name]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ir_generator/mod.rs:206:45 [INFO] [stderr] | [INFO] [stderr] 206 | for (expr, reg) in exprlist.into_iter().zip(reg_list.into_iter()) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ir_generator/mod.rs:223:17 [INFO] [stderr] | [INFO] [stderr] 223 | / if let &Some(ref else_block) = else_block { [INFO] [stderr] 224 | | let then_label = res_alloc.label_alloc.new_label(); [INFO] [stderr] 225 | | let else_label = res_alloc.label_alloc.new_label(); [INFO] [stderr] 226 | | let next_label = res_alloc.label_alloc.new_label(); [INFO] [stderr] ... | [INFO] [stderr] 258 | | instructions.append(&mut raw); [INFO] [stderr] 259 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 223 | if let Some(ref else_block) = *else_block { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ir_generator/mod.rs:403:34 [INFO] [stderr] | [INFO] [stderr] 403 | let op = self.flag_to_op [INFO] [stderr] | __________________________________^ [INFO] [stderr] 404 | | .get(&flag) [INFO] [stderr] 405 | | .expect("BinOp not defined") [INFO] [stderr] 406 | | .clone(); [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 403 | let op = *self.flag_to_op [INFO] [stderr] 404 | .get(&flag) [INFO] [stderr] 405 | .expect("BinOp not defined"); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/ir_generator/mod.rs:628:20 [INFO] [stderr] | [INFO] [stderr] 628 | if fall_through == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `fall_through` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [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/ir_generator/mod.rs:657:19 [INFO] [stderr] | [INFO] [stderr] 657 | exprlist: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Expr]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ir_generator/mod.rs:662:14 [INFO] [stderr] | [INFO] [stderr] 662 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/ir_generator/mod.rs:740:15 [INFO] [stderr] | [INFO] [stderr] 740 | args: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Expr]` [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/ir_generator/mod.rs:774:20 [INFO] [stderr] | [INFO] [stderr] 774 | func_name: &Name, [INFO] [stderr] | ^^^^^ help: change this to: `&str` [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/ir_generator/mod.rs:775:15 [INFO] [stderr] | [INFO] [stderr] 775 | args: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Expr]` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/ir_generator/mod.rs:771:5 [INFO] [stderr] | [INFO] [stderr] 771 | / fn visit_colon_call( [INFO] [stderr] 772 | | &mut self, [INFO] [stderr] 773 | | table_expr: &Expr, [INFO] [stderr] 774 | | func_name: &Name, [INFO] [stderr] ... | [INFO] [stderr] 815 | | Ok(func_pos) [INFO] [stderr] 816 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: the `i @ _` pattern can be written as just `i` [INFO] [stderr] --> src/ir_generator/mod.rs:812:13 [INFO] [stderr] | [INFO] [stderr] 812 | i @ _ => i + 1, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [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/ir_generator/mod.rs:820:15 [INFO] [stderr] | [INFO] [stderr] 820 | args: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Expr]` [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: the loop variable `i` is only used to index `args`. [INFO] [stderr] --> src/ir_generator/mod.rs:831:22 [INFO] [stderr] | [INFO] [stderr] 831 | for i in 0..(args.len() - 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 831 | for in args.iter().take((args.len() - 1)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `args`. [INFO] [stderr] --> src/ir_generator/mod.rs:852:22 [INFO] [stderr] | [INFO] [stderr] 852 | for i in 0..(args.len() - 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 852 | for in args.iter().take((args.len() - 1)) { [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/ir_generator/mod.rs:883:18 [INFO] [stderr] | [INFO] [stderr] 883 | varlist: &Vec, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 883 | varlist: &[T], [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `varlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 890 | return Ok((varlist.to_owned(), exprlist.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `varlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 898 | return Ok((varlist.to_owned(), truncated)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `varlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 915 | return Ok((varlist.to_owned(), expr_regs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `varlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 928 | return Ok((varlist.to_owned(), extended)); [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/ir_generator/mod.rs:884:19 [INFO] [stderr] | [INFO] [stderr] 884 | exprlist: &Vec, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 884 | exprlist: &[Expr], [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] help: change `exprlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 890 | return Ok((varlist.clone(), exprlist.to_owned())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `exprlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 896 | let mut truncated = exprlist.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `exprlist.clone()` to [INFO] [stderr] | [INFO] [stderr] 921 | let mut extended = exprlist.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ir_generator/mod.rs:957:9 [INFO] [stderr] | [INFO] [stderr] 957 | / match key { [INFO] [stderr] 958 | | &Expr::Var(Var::Name(ref name)) => { [INFO] [stderr] 959 | | Ok(0x100 | res_alloc.const_alloc.push(ConstType::Str(name.clone()))) [INFO] [stderr] 960 | | } [INFO] [stderr] ... | [INFO] [stderr] 964 | | } [INFO] [stderr] 965 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 957 | match *key { [INFO] [stderr] 958 | Expr::Var(Var::Name(ref name)) => { [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/ir_generator/mod.rs:970:17 [INFO] [stderr] | [INFO] [stderr] 970 | entrys: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[TableEntry]` [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/ir_generator/mod.rs:1097:35 [INFO] [stderr] | [INFO] [stderr] 1097 | fn split_table_entrys(entrys: &Vec) -> (Vec<(Expr, Expr)>, Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[TableEntry]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ir_generator/mod.rs:1101:13 [INFO] [stderr] | [INFO] [stderr] 1101 | / match key { [INFO] [stderr] 1102 | | &Some(ref k) => hash_part.push((k.clone(), value.clone())), [INFO] [stderr] 1103 | | &None => array_part.push(value.clone()), [INFO] [stderr] 1104 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1101 | match *key { [INFO] [stderr] 1102 | Some(ref k) => hash_part.push((k.clone(), value.clone())), [INFO] [stderr] 1103 | None => array_part.push(value.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ir_generator/mod.rs:1121:28 [INFO] [stderr] | [INFO] [stderr] 1121 | let reg_or_const = match expr { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 1122 | | &Expr::Num(num) => ( [INFO] [stderr] 1123 | | false, [INFO] [stderr] 1124 | | 0x100 | res_alloc.const_alloc.push(ConstType::Real(num)), [INFO] [stderr] ... | [INFO] [stderr] 1134 | | _ => self.visit_r_expr(expr, res_alloc, instructions, expect)?, [INFO] [stderr] 1135 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 1121 | let reg_or_const = match *expr { [INFO] [stderr] 1122 | Expr::Num(num) => ( [INFO] [stderr] 1123 | false, [INFO] [stderr] 1124 | 0x100 | res_alloc.const_alloc.push(ConstType::Real(num)), [INFO] [stderr] 1125 | ), [INFO] [stderr] 1126 | Expr::Boole(boolean) => ( [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/assembler/mod.rs:50:26 [INFO] [stderr] | [INFO] [stderr] 50 | fn asm_block(instrs: &Vec) -> ByteCodeVec { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[OpMode]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler/mod.rs:55:26 [INFO] [stderr] | [INFO] [stderr] 55 | let packed = match instr { [INFO] [stderr] | __________________________^ [INFO] [stderr] 56 | | &OpMode::iABC(op, A, B, C) => OpcodeBuilder::iABC(op, A, B, C), [INFO] [stderr] 57 | | &OpMode::iABx(op, A, Bx) => OpcodeBuilder::iABx(op, A, Bx), [INFO] [stderr] 58 | | &OpMode::iAsBx(op, A, sBx) => OpcodeBuilder::iAsBx(op, A, sBx), [INFO] [stderr] 59 | | _ => panic!("Can not encode instruction. Has all labels been removed?"), [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 55 | let packed = match *instr { [INFO] [stderr] 56 | OpMode::iABC(op, A, B, C) => OpcodeBuilder::iABC(op, A, B, C), [INFO] [stderr] 57 | OpMode::iABx(op, A, Bx) => OpcodeBuilder::iABx(op, A, Bx), [INFO] [stderr] 58 | OpMode::iAsBx(op, A, sBx) => OpcodeBuilder::iAsBx(op, A, sBx), [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/assembler/mod.rs:66:37 [INFO] [stderr] | [INFO] [stderr] 66 | fn asm_function_list(func_list: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[FunctionChunk]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler/mod.rs:83:24 [INFO] [stderr] | [INFO] [stderr] 83 | let u32_code = match src_name { [INFO] [stderr] | ________________________^ [INFO] [stderr] 84 | | &Some(ref name) => format!("@{}", name).to_bytecode(), [INFO] [stderr] 85 | | &None => vec![0], [INFO] [stderr] 86 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 83 | let u32_code = match *src_name { [INFO] [stderr] 84 | Some(ref name) => format!("@{}", name).to_bytecode(), [INFO] [stderr] 85 | None => vec![0], [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/assembler/mod.rs:106:32 [INFO] [stderr] | [INFO] [stderr] 106 | fn unpack_constant(consts: &Vec) -> ByteCodeVec { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[ConstType]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler/mod.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match val { [INFO] [stderr] 113 | | &ConstType::Nil => { [INFO] [stderr] 114 | | const_list.push(0); [INFO] [stderr] 115 | | } [INFO] [stderr] ... | [INFO] [stderr] 127 | | } [INFO] [stderr] 128 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 112 | match *val { [INFO] [stderr] 113 | ConstType::Nil => { [INFO] [stderr] 114 | const_list.push(0); [INFO] [stderr] 115 | } [INFO] [stderr] 116 | ConstType::Boole(b) => { [INFO] [stderr] 117 | const_list.push(1); [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/assembler/mod.rs:152:29 [INFO] [stderr] | [INFO] [stderr] 152 | fn remove_label(instrs: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[OpMode]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/assembler/mod.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | / match ins { [INFO] [stderr] 161 | | &OpMode::Label(label) => { [INFO] [stderr] 162 | | index.insert(label, pos_counter); [INFO] [stderr] 163 | | } [INFO] [stderr] ... | [INFO] [stderr] 167 | | } [INFO] [stderr] 168 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 160 | match *ins { [INFO] [stderr] 161 | OpMode::Label(label) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/compiler/mod.rs:17:30 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn from_string(text: &String, source_name: &str) -> ByteCodeVec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: identical conversion [INFO] [stderr] --> src/compiler/mod.rs:39:32 [INFO] [stderr] | [INFO] [stderr] 39 | &String::from(path.file_name() [INFO] [stderr] | ________________________________^ [INFO] [stderr] 40 | | .unwrap() [INFO] [stderr] 41 | | .to_str() [INFO] [stderr] 42 | | .unwrap() [INFO] [stderr] 43 | | .to_string())) [INFO] [stderr] | |_______________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 39 | &path.file_name() [INFO] [stderr] 40 | .unwrap() [INFO] [stderr] 41 | .to_str() [INFO] [stderr] 42 | .unwrap() [INFO] [stderr] 43 | .to_string()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "6ebb4362af063d3b0ab8f14331efa6f7c07c0f022836d2a46cee5d5b83672cc4"` [INFO] running `"docker" "rm" "-f" "6ebb4362af063d3b0ab8f14331efa6f7c07c0f022836d2a46cee5d5b83672cc4"` [INFO] [stdout] 6ebb4362af063d3b0ab8f14331efa6f7c07c0f022836d2a46cee5d5b83672cc4