[INFO] updating cached repository matthieugouel/bjorn [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/matthieugouel/bjorn [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/matthieugouel/bjorn" "work/ex/clippy-test-run/sources/stable/gh/matthieugouel/bjorn"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/matthieugouel/bjorn'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/matthieugouel/bjorn" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/matthieugouel/bjorn"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/matthieugouel/bjorn'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 28dd3ecd26410edc75150bf4c11dec69f7a6cc34 [INFO] sha for GitHub repo matthieugouel/bjorn: 28dd3ecd26410edc75150bf4c11dec69f7a6cc34 [INFO] validating manifest of matthieugouel/bjorn 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 matthieugouel/bjorn 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 matthieugouel/bjorn [INFO] finished frobbing matthieugouel/bjorn [INFO] frobbed toml for matthieugouel/bjorn written to work/ex/clippy-test-run/sources/stable/gh/matthieugouel/bjorn/Cargo.toml [INFO] started frobbing matthieugouel/bjorn [INFO] finished frobbing matthieugouel/bjorn [INFO] frobbed toml for matthieugouel/bjorn written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/matthieugouel/bjorn/Cargo.toml [INFO] crate matthieugouel/bjorn 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 matthieugouel/bjorn against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/matthieugouel/bjorn:/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] 1793ecae3bdbeed5a6846d3172520676be1b81d358b58cd4fafd747e986a48a2 [INFO] running `"docker" "start" "-a" "1793ecae3bdbeed5a6846d3172520676be1b81d358b58cd4fafd747e986a48a2"` [INFO] [stderr] Checking bjorn v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:48:23 [INFO] [stderr] | [INFO] [stderr] 48 | AST::Program {children: children} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/parser.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | else_if_compounds: else_if_compounds, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_if_compounds` [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/parser.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | else_compound: else_compound, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_compound` [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/parser.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | identifier: identifier, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `identifier` [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/parser.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [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/parser.rs:166:20 [INFO] [stderr] | [INFO] [stderr] 166 | AST::Bloc {children:children} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/parser.rs:212:21 [INFO] [stderr] | [INFO] [stderr] 212 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:231:21 [INFO] [stderr] | [INFO] [stderr] 231 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:48:23 [INFO] [stderr] | [INFO] [stderr] 48 | AST::Program {children: children} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `children` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:247:34 [INFO] [stderr] | [INFO] [stderr] 247 | AST::UnaryOperation {op: op, right: Box::new(right)} [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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] = 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/parser.rs:276:17 [INFO] [stderr] | [INFO] [stderr] 276 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:298:17 [INFO] [stderr] | [INFO] [stderr] 298 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | else_if_compounds: else_if_compounds, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_if_compounds` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:320:17 [INFO] [stderr] | [INFO] [stderr] 320 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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] [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/parser.rs:338:46 [INFO] [stderr] | [INFO] [stderr] 338 | Token::INT(_) => AST::IntNumber {token: token}, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | else_compound: else_compound, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `else_compound` [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] | [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/parser.rs:339:50 [INFO] [stderr] | [INFO] [stderr] 339 | Token::FLOAT(_) => AST::FloatNumber {token: token}, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | identifier: identifier, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `identifier` [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] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | parameters: parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parameters` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:355:59 [INFO] [stderr] | [INFO] [stderr] 355 | AST::FunctionCall {identifier: token, arguments: arguments} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [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] | [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/parser.rs:166:20 [INFO] [stderr] | [INFO] [stderr] 166 | AST::Bloc {children:children} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/parser.rs:212:21 [INFO] [stderr] | [INFO] [stderr] 212 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/interpreter.rs:20:23 [INFO] [stderr] | [INFO] [stderr] 20 | Interpreter { parser: parser, memory: Memory::new(HashMap::new()) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parser` [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] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parser.rs:231:21 [INFO] [stderr] | [INFO] [stderr] 231 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:247:34 [INFO] [stderr] | [INFO] [stderr] 247 | AST::UnaryOperation {op: op, right: Box::new(right)} [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:276:17 [INFO] [stderr] | [INFO] [stderr] 276 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:298:17 [INFO] [stderr] | [INFO] [stderr] 298 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:320:17 [INFO] [stderr] | [INFO] [stderr] 320 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:338:46 [INFO] [stderr] | [INFO] [stderr] 338 | Token::INT(_) => AST::IntNumber {token: token}, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [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/parser.rs:339:50 [INFO] [stderr] | [INFO] [stderr] 339 | Token::FLOAT(_) => AST::FloatNumber {token: token}, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [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/parser.rs:355:59 [INFO] [stderr] | [INFO] [stderr] 355 | AST::FunctionCall {identifier: token, arguments: arguments} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [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/interpreter.rs:20:23 [INFO] [stderr] | [INFO] [stderr] 20 | Interpreter { parser: parser, memory: Memory::new(HashMap::new()) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parser` [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 matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:63:39 [INFO] [stderr] | [INFO] [stderr] 63 | AST::FunctionDeclaration {identifier: _, parameters, body} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `FunctionDeclaration { parameters, body, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:261:47 [INFO] [stderr] | [INFO] [stderr] 261 | AST::FunctionDeclaration {identifier: _, ref parameters, ..} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `FunctionDeclaration { ref parameters, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:63:39 [INFO] [stderr] | [INFO] [stderr] 63 | AST::FunctionDeclaration {identifier: _, parameters, body} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `FunctionDeclaration { parameters, body, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/interpreter.rs:261:47 [INFO] [stderr] | [INFO] [stderr] 261 | AST::FunctionDeclaration {identifier: _, ref parameters, ..} => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `FunctionDeclaration { ref parameters, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/parser.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 171 | / let node; [INFO] [stderr] 172 | | if *self.peek() == Token::RETURN { [INFO] [stderr] 173 | | node = self.return_statement(); [INFO] [stderr] 174 | | } else { [INFO] [stderr] 175 | | node = self.expression_statement(); [INFO] [stderr] 176 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let node = if *self.peek() == Token::RETURN { self.return_statement() } else { self.expression_statement() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 45 [INFO] [stderr] --> src/interpreter.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | / fn visit(&mut self, tree: AST) -> Value { [INFO] [stderr] 47 | | match tree { [INFO] [stderr] 48 | | AST::Program {children} => { [INFO] [stderr] 49 | | // Return the value the last child mostly for testing purposes. [INFO] [stderr] ... | [INFO] [stderr] 292 | | } [INFO] [stderr] 293 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/interpreter.rs:244:74 [INFO] [stderr] | [INFO] [stderr] 244 | Some(Value::BuiltinFunction(builtin)) => builtin.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*builtin` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:62:62 [INFO] [stderr] | [INFO] [stderr] 62 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 + b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:63:66 [INFO] [stderr] | [INFO] [stderr] 63 | (Value::Float(a), Value::Int(b)) => Value::Float(a + b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:76:62 [INFO] [stderr] | [INFO] [stderr] 76 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 - b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:77:66 [INFO] [stderr] | [INFO] [stderr] 77 | (Value::Float(a), Value::Int(b)) => Value::Float(a - b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:90:62 [INFO] [stderr] | [INFO] [stderr] 90 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 * b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:91:66 [INFO] [stderr] | [INFO] [stderr] 91 | (Value::Float(a), Value::Int(b)) => Value::Float(a * b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:102:60 [INFO] [stderr] | [INFO] [stderr] 102 | (Value::Int(a), Value::Int(b)) => Value::Float(a as f64 / b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:102:71 [INFO] [stderr] | [INFO] [stderr] 102 | (Value::Int(a), Value::Int(b)) => Value::Float(a as f64 / b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:104:62 [INFO] [stderr] | [INFO] [stderr] 104 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 / b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:105:66 [INFO] [stderr] | [INFO] [stderr] 105 | (Value::Float(a), Value::Int(b)) => Value::Float(a / b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:128:50 [INFO] [stderr] | [INFO] [stderr] 128 | (Value::Int(a), Value::Float(b)) => &(*a as f64) == b, [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:129:55 [INFO] [stderr] | [INFO] [stderr] 129 | (Value::Float(a), Value::Int(b)) => a == &(*b as f64), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:142:49 [INFO] [stderr] | [INFO] [stderr] 142 | (Value::Int(a), Value::Float(b)) => (*a as f64).partial_cmp(b), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:143:64 [INFO] [stderr] | [INFO] [stderr] 143 | (Value::Float(a), Value::Int(b)) => a.partial_cmp(&(*b as f64)), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `builtins::BuiltinsHandler` [INFO] [stderr] --> src/builtins.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> BuiltinsHandler { [INFO] [stderr] 20 | | BuiltinsHandler {builtins: HashMap::new()} [INFO] [stderr] 21 | | } [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/parser.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 171 | / let node; [INFO] [stderr] 172 | | if *self.peek() == Token::RETURN { [INFO] [stderr] 173 | | node = self.return_statement(); [INFO] [stderr] 174 | | } else { [INFO] [stderr] 175 | | node = self.expression_statement(); [INFO] [stderr] 176 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let node = if *self.peek() == Token::RETURN { self.return_statement() } else { self.expression_statement() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 45 [INFO] [stderr] --> src/interpreter.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | / fn visit(&mut self, tree: AST) -> Value { [INFO] [stderr] 47 | | match tree { [INFO] [stderr] 48 | | AST::Program {children} => { [INFO] [stderr] 49 | | // Return the value the last child mostly for testing purposes. [INFO] [stderr] ... | [INFO] [stderr] 292 | | } [INFO] [stderr] 293 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/interpreter.rs:244:74 [INFO] [stderr] | [INFO] [stderr] 244 | Some(Value::BuiltinFunction(builtin)) => builtin.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*builtin` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:62:62 [INFO] [stderr] | [INFO] [stderr] 62 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 + b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:63:66 [INFO] [stderr] | [INFO] [stderr] 63 | (Value::Float(a), Value::Int(b)) => Value::Float(a + b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:76:62 [INFO] [stderr] | [INFO] [stderr] 76 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 - b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:77:66 [INFO] [stderr] | [INFO] [stderr] 77 | (Value::Float(a), Value::Int(b)) => Value::Float(a - b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:90:62 [INFO] [stderr] | [INFO] [stderr] 90 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 * b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:91:66 [INFO] [stderr] | [INFO] [stderr] 91 | (Value::Float(a), Value::Int(b)) => Value::Float(a * b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:102:60 [INFO] [stderr] | [INFO] [stderr] 102 | (Value::Int(a), Value::Int(b)) => Value::Float(a as f64 / b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:102:71 [INFO] [stderr] | [INFO] [stderr] 102 | (Value::Int(a), Value::Int(b)) => Value::Float(a as f64 / b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:104:62 [INFO] [stderr] | [INFO] [stderr] 104 | (Value::Int(a), Value::Float(b)) => Value::Float(a as f64 / b), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:105:66 [INFO] [stderr] | [INFO] [stderr] 105 | (Value::Float(a), Value::Int(b)) => Value::Float(a / b as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:128:50 [INFO] [stderr] | [INFO] [stderr] 128 | (Value::Int(a), Value::Float(b)) => &(*a as f64) == b, [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:129:55 [INFO] [stderr] | [INFO] [stderr] 129 | (Value::Float(a), Value::Int(b)) => a == &(*b as f64), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:142:49 [INFO] [stderr] | [INFO] [stderr] 142 | (Value::Int(a), Value::Float(b)) => (*a as f64).partial_cmp(b), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/value.rs:143:64 [INFO] [stderr] | [INFO] [stderr] 143 | (Value::Float(a), Value::Int(b)) => a.partial_cmp(&(*b as f64)), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(*b)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `builtins::BuiltinsHandler` [INFO] [stderr] --> src/builtins.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> BuiltinsHandler { [INFO] [stderr] 20 | | BuiltinsHandler {builtins: HashMap::new()} [INFO] [stderr] 21 | | } [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 69 [INFO] [stderr] --> tests/comparisons.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / fn valid_comparisons() { [INFO] [stderr] 5 | | // Equal [INFO] [stderr] 6 | | assert_eq!(bjorn::interpret("1 == 1"), String::from("true")); [INFO] [stderr] 7 | | assert_eq!(bjorn::interpret("1 == 2"), String::from("false")); [INFO] [stderr] ... | [INFO] [stderr] 85 | | assert_eq!(bjorn::interpret("2.0 > 1.0"), String::from("true")); [INFO] [stderr] 86 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.92s [INFO] running `"docker" "inspect" "1793ecae3bdbeed5a6846d3172520676be1b81d358b58cd4fafd747e986a48a2"` [INFO] running `"docker" "rm" "-f" "1793ecae3bdbeed5a6846d3172520676be1b81d358b58cd4fafd747e986a48a2"` [INFO] [stdout] 1793ecae3bdbeed5a6846d3172520676be1b81d358b58cd4fafd747e986a48a2