[INFO] updating cached repository dcjohnson/libhackit-v2 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/dcjohnson/libhackit-v2 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/dcjohnson/libhackit-v2" "work/ex/clippy-test-run/sources/stable/gh/dcjohnson/libhackit-v2"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/dcjohnson/libhackit-v2'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/dcjohnson/libhackit-v2" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dcjohnson/libhackit-v2"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dcjohnson/libhackit-v2'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e741bfa12119592299ded59d09ed88280aebe626 [INFO] sha for GitHub repo dcjohnson/libhackit-v2: e741bfa12119592299ded59d09ed88280aebe626 [INFO] validating manifest of dcjohnson/libhackit-v2 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 dcjohnson/libhackit-v2 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 dcjohnson/libhackit-v2 [INFO] finished frobbing dcjohnson/libhackit-v2 [INFO] frobbed toml for dcjohnson/libhackit-v2 written to work/ex/clippy-test-run/sources/stable/gh/dcjohnson/libhackit-v2/Cargo.toml [INFO] started frobbing dcjohnson/libhackit-v2 [INFO] finished frobbing dcjohnson/libhackit-v2 [INFO] frobbed toml for dcjohnson/libhackit-v2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dcjohnson/libhackit-v2/Cargo.toml [INFO] crate dcjohnson/libhackit-v2 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 dcjohnson/libhackit-v2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/dcjohnson/libhackit-v2:/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] 8b3a4b5f2b4d0d4f07330c8799c1af74b800e3d291f24f20a0c2e439cd933e35 [INFO] running `"docker" "start" "-a" "8b3a4b5f2b4d0d4f07330c8799c1af74b800e3d291f24f20a0c2e439cd933e35"` [INFO] [stderr] Checking libhackit-v2 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | lexed: lexed, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexed` [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] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | tok_type: tok_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tok_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | ast: ast, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ast` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:379:13 [INFO] [stderr] | [INFO] [stderr] 379 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:380:13 [INFO] [stderr] | [INFO] [stderr] 380 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:381:13 [INFO] [stderr] | [INFO] [stderr] 381 | body: body [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | lexed: lexed, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexed` [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] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | tok_type: tok_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tok_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | ast: ast, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ast` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:379:13 [INFO] [stderr] | [INFO] [stderr] 379 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:380:13 [INFO] [stderr] | [INFO] [stderr] 380 | params: params, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/eval.rs:381:13 [INFO] [stderr] | [INFO] [stderr] 381 | body: body [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/parse.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match self.is_done() { [INFO] [stderr] 40 | | true => self.stack.pop(), [INFO] [stderr] 41 | | false => None [INFO] [stderr] 42 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.is_done() { self.stack.pop() } else { None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `parse::Parser` [INFO] [stderr] --> src/parse.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> Self { [INFO] [stderr] 48 | | Parser { [INFO] [stderr] 49 | | stack: vec![Ast::new_null()], [INFO] [stderr] 50 | | } [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/token.rs:18:30 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn is_matching_close(&self, matching: Type) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ast.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | / match self.child_nodes.len() > index { [INFO] [stderr] 30 | | true => Some(self.child_nodes.remove(index)), [INFO] [stderr] 31 | | false => None [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.child_nodes.len() > index { Some(self.child_nodes.remove(index)) } else { None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/ast.rs:74:24 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn is_function(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/eval.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | / match current.0.is_function() { [INFO] [stderr] 133 | | true => { [INFO] [stderr] 134 | | let mut child = current.0.get_child(0).unwrap(); [INFO] [stderr] 135 | | let node_val = child.node_val.unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 132 | if current.0.is_function() { [INFO] [stderr] 133 | let mut child = current.0.get_child(0).unwrap(); [INFO] [stderr] 134 | let node_val = child.node_val.unwrap(); [INFO] [stderr] 135 | match scope.find_func(&node_val.get_lexed()) { [INFO] [stderr] 136 | Some(func) => { [INFO] [stderr] 137 | if !self.inject_params(func, &mut current.0) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/eval.rs:353:42 [INFO] [stderr] | [INFO] [stderr] 353 | pub fn find_func(&mut self, tok_str: &String) -> Option<&mut Func> { [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 seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | ast.node_val = Some(match double == 0.0 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 146 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 147 | | false => Token::new_preset((double + int as f64).to_string(), Type::Number) [INFO] [stderr] 148 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if double == 0.0 { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset((double + int as f64).to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:185:29 [INFO] [stderr] | [INFO] [stderr] 185 | ast.node_val = Some(match double == 0.0 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 186 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 187 | | false => Token::new_preset((double + int as f64).to_string(), Type::Number) [INFO] [stderr] 188 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if double == 0.0 { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset((double + int as f64).to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:212:29 [INFO] [stderr] | [INFO] [stderr] 212 | ast.node_val = Some(match double == 1.0 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 213 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 214 | | false => Token::new_preset((double * int as f64).to_string(), Type::Number) [INFO] [stderr] 215 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if double == 1.0 { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset((double * int as f64).to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:212:35 [INFO] [stderr] | [INFO] [stderr] 212 | ast.node_val = Some(match double == 1.0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(double - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:212:35 [INFO] [stderr] | [INFO] [stderr] 212 | ast.node_val = Some(match double == 1.0 { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:267:29 [INFO] [stderr] | [INFO] [stderr] 267 | ast.node_val = Some(match is_int { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 268 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 269 | | false => Token::new_preset(double.to_string(), Type::Number) [INFO] [stderr] 270 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if is_int { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset(double.to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: omit braces around single expression condition [INFO] [stderr] --> src/builtins.rs:301:8 [INFO] [stderr] | [INFO] [stderr] 301 | if { [INFO] [stderr] | ________^ [INFO] [stderr] 302 | | match scope.find_func(&name) { [INFO] [stderr] 303 | | Some(func_option) => { [INFO] [stderr] 304 | | func_option.reset(children.remove(0).get_child(0).unwrap(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] ... | [INFO] [stderr] 308 | | } [INFO] [stderr] 309 | | } { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_expr)] on by default [INFO] [stderr] = help: try [INFO] [stderr] if match scope.find_func(&name) { [INFO] [stderr] Some(func_option) => { [INFO] [stderr] func_option.reset(children.remove(0).get_child(0).unwrap(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] false [INFO] [stderr] }, [INFO] [stderr] None => true [INFO] [stderr] } { [INFO] [stderr] scope.insert_func_no_search(Func::new(name, children.remove(0), children.remove(0))); [INFO] [stderr] } ... [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_expr [INFO] [stderr] [INFO] [stderr] warning: omit braces around single expression condition [INFO] [stderr] --> src/builtins.rs:318:8 [INFO] [stderr] | [INFO] [stderr] 318 | if { [INFO] [stderr] | ________^ [INFO] [stderr] 319 | | match scope.find_func(&name) { [INFO] [stderr] 320 | | Some(func_option) => { [INFO] [stderr] 321 | | func_option.reset(Ast::new_null(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] ... | [INFO] [stderr] 325 | | } [INFO] [stderr] 326 | | } { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: try [INFO] [stderr] if match scope.find_func(&name) { [INFO] [stderr] Some(func_option) => { [INFO] [stderr] func_option.reset(Ast::new_null(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] false [INFO] [stderr] }, [INFO] [stderr] None => true [INFO] [stderr] } { [INFO] [stderr] scope.insert_func_no_search(Func::new(name, Ast::new_null(), children.remove(0))); [INFO] [stderr] } ... [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_expr [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `libhackit-v2`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/parse.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / match self.is_done() { [INFO] [stderr] 40 | | true => self.stack.pop(), [INFO] [stderr] 41 | | false => None [INFO] [stderr] 42 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.is_done() { self.stack.pop() } else { None }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `parse::Parser` [INFO] [stderr] --> src/parse.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> Self { [INFO] [stderr] 48 | | Parser { [INFO] [stderr] 49 | | stack: vec![Ast::new_null()], [INFO] [stderr] 50 | | } [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/token.rs:18:30 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn is_matching_close(&self, matching: Type) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/ast.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | / match self.child_nodes.len() > index { [INFO] [stderr] 30 | | true => Some(self.child_nodes.remove(index)), [INFO] [stderr] 31 | | false => None [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.child_nodes.len() > index { Some(self.child_nodes.remove(index)) } else { None }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/ast.rs:74:24 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn is_function(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/eval.rs:132:17 [INFO] [stderr] | [INFO] [stderr] 132 | / match current.0.is_function() { [INFO] [stderr] 133 | | true => { [INFO] [stderr] 134 | | let mut child = current.0.get_child(0).unwrap(); [INFO] [stderr] 135 | | let node_val = child.node_val.unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 132 | if current.0.is_function() { [INFO] [stderr] 133 | let mut child = current.0.get_child(0).unwrap(); [INFO] [stderr] 134 | let node_val = child.node_val.unwrap(); [INFO] [stderr] 135 | match scope.find_func(&node_val.get_lexed()) { [INFO] [stderr] 136 | Some(func) => { [INFO] [stderr] 137 | if !self.inject_params(func, &mut current.0) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/eval.rs:353:42 [INFO] [stderr] | [INFO] [stderr] 353 | pub fn find_func(&mut self, tok_str: &String) -> Option<&mut Func> { [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 seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:145:29 [INFO] [stderr] | [INFO] [stderr] 145 | ast.node_val = Some(match double == 0.0 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 146 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 147 | | false => Token::new_preset((double + int as f64).to_string(), Type::Number) [INFO] [stderr] 148 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if double == 0.0 { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset((double + int as f64).to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:185:29 [INFO] [stderr] | [INFO] [stderr] 185 | ast.node_val = Some(match double == 0.0 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 186 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 187 | | false => Token::new_preset((double + int as f64).to_string(), Type::Number) [INFO] [stderr] 188 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if double == 0.0 { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset((double + int as f64).to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:212:29 [INFO] [stderr] | [INFO] [stderr] 212 | ast.node_val = Some(match double == 1.0 { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 213 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 214 | | false => Token::new_preset((double * int as f64).to_string(), Type::Number) [INFO] [stderr] 215 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if double == 1.0 { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset((double * int as f64).to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/builtins.rs:212:35 [INFO] [stderr] | [INFO] [stderr] 212 | ast.node_val = Some(match double == 1.0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(double - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/builtins.rs:212:35 [INFO] [stderr] | [INFO] [stderr] 212 | ast.node_val = Some(match double == 1.0 { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/builtins.rs:267:29 [INFO] [stderr] | [INFO] [stderr] 267 | ast.node_val = Some(match is_int { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 268 | | true => Token::new_preset(int.to_string(), Type::Number), [INFO] [stderr] 269 | | false => Token::new_preset(double.to_string(), Type::Number) [INFO] [stderr] 270 | | }); [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if is_int { Token::new_preset(int.to_string(), Type::Number) } else { Token::new_preset(double.to_string(), Type::Number) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: omit braces around single expression condition [INFO] [stderr] --> src/builtins.rs:301:8 [INFO] [stderr] | [INFO] [stderr] 301 | if { [INFO] [stderr] | ________^ [INFO] [stderr] 302 | | match scope.find_func(&name) { [INFO] [stderr] 303 | | Some(func_option) => { [INFO] [stderr] 304 | | func_option.reset(children.remove(0).get_child(0).unwrap(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] ... | [INFO] [stderr] 308 | | } [INFO] [stderr] 309 | | } { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_expr)] on by default [INFO] [stderr] = help: try [INFO] [stderr] if match scope.find_func(&name) { [INFO] [stderr] Some(func_option) => { [INFO] [stderr] func_option.reset(children.remove(0).get_child(0).unwrap(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] false [INFO] [stderr] }, [INFO] [stderr] None => true [INFO] [stderr] } { [INFO] [stderr] scope.insert_func_no_search(Func::new(name, children.remove(0), children.remove(0))); [INFO] [stderr] } ... [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_expr [INFO] [stderr] [INFO] [stderr] warning: omit braces around single expression condition [INFO] [stderr] --> src/builtins.rs:318:8 [INFO] [stderr] | [INFO] [stderr] 318 | if { [INFO] [stderr] | ________^ [INFO] [stderr] 319 | | match scope.find_func(&name) { [INFO] [stderr] 320 | | Some(func_option) => { [INFO] [stderr] 321 | | func_option.reset(Ast::new_null(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] ... | [INFO] [stderr] 325 | | } [INFO] [stderr] 326 | | } { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: try [INFO] [stderr] if match scope.find_func(&name) { [INFO] [stderr] Some(func_option) => { [INFO] [stderr] func_option.reset(Ast::new_null(), children.remove(0).get_child(0).unwrap()); [INFO] [stderr] false [INFO] [stderr] }, [INFO] [stderr] None => true [INFO] [stderr] } { [INFO] [stderr] scope.insert_func_no_search(Func::new(name, Ast::new_null(), children.remove(0))); [INFO] [stderr] } ... [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_expr [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `libhackit-v2`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "8b3a4b5f2b4d0d4f07330c8799c1af74b800e3d291f24f20a0c2e439cd933e35"` [INFO] running `"docker" "rm" "-f" "8b3a4b5f2b4d0d4f07330c8799c1af74b800e3d291f24f20a0c2e439cd933e35"` [INFO] [stdout] 8b3a4b5f2b4d0d4f07330c8799c1af74b800e3d291f24f20a0c2e439cd933e35