[INFO] updating cached repository zacharyhamm/stupid_calc [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/zacharyhamm/stupid_calc [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/zacharyhamm/stupid_calc" "work/ex/clippy-test-run/sources/stable/gh/zacharyhamm/stupid_calc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/zacharyhamm/stupid_calc'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/zacharyhamm/stupid_calc" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zacharyhamm/stupid_calc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zacharyhamm/stupid_calc'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 4248f4633b6a344639fa1684198efcafb6ba2ac5 [INFO] sha for GitHub repo zacharyhamm/stupid_calc: 4248f4633b6a344639fa1684198efcafb6ba2ac5 [INFO] validating manifest of zacharyhamm/stupid_calc 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 zacharyhamm/stupid_calc 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 zacharyhamm/stupid_calc [INFO] finished frobbing zacharyhamm/stupid_calc [INFO] frobbed toml for zacharyhamm/stupid_calc written to work/ex/clippy-test-run/sources/stable/gh/zacharyhamm/stupid_calc/Cargo.toml [INFO] started frobbing zacharyhamm/stupid_calc [INFO] finished frobbing zacharyhamm/stupid_calc [INFO] frobbed toml for zacharyhamm/stupid_calc written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zacharyhamm/stupid_calc/Cargo.toml [INFO] crate zacharyhamm/stupid_calc 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 zacharyhamm/stupid_calc 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-2/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/zacharyhamm/stupid_calc:/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] caa188838be605307e51b5f0574ef6e640490989a3d835848909659ec4c998e0 [INFO] running `"docker" "start" "-a" "caa188838be605307e51b5f0574ef6e640490989a3d835848909659ec4c998e0"` [INFO] [stderr] Checking calc v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | ts: ts, [INFO] [stderr] | ^^^^^^ help: replace it with: `ts` [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/main.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/main.rs:370:13 [INFO] [stderr] | [INFO] [stderr] 370 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/main.rs:371:13 [INFO] [stderr] | [INFO] [stderr] 371 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/main.rs:372:13 [INFO] [stderr] | [INFO] [stderr] 372 | 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/main.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | ts: ts, [INFO] [stderr] | ^^^^^^ help: replace it with: `ts` [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/main.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/main.rs:370:13 [INFO] [stderr] | [INFO] [stderr] 370 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/main.rs:371:13 [INFO] [stderr] | [INFO] [stderr] 371 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/main.rs:372:13 [INFO] [stderr] | [INFO] [stderr] 372 | 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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:317:9 [INFO] [stderr] | [INFO] [stderr] 317 | token [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/main.rs:313:21 [INFO] [stderr] | [INFO] [stderr] 313 | let token = self.stream.pop_front().or_else(|| { [INFO] [stderr] | _____________________^ [INFO] [stderr] 314 | | self.parse_line(); [INFO] [stderr] 315 | | self.stream.pop_front().map(|token| token) [INFO] [stderr] 316 | | }); [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: long literal lacking separators [INFO] [stderr] --> src/main.rs:540:55 [INFO] [stderr] | [INFO] [stderr] 540 | assert_eq!(calculate("1*2*3*4*5*6*7*8*9"), Ok(362880.0)); [INFO] [stderr] | ^^^^^^^^ help: consider: `362_880.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:564:40 [INFO] [stderr] | [INFO] [stderr] 564 | assert_eq!(calculate("9!"), Ok(362880.0)); [INFO] [stderr] | ^^^^^^^^ help: consider: `362_880.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:565:41 [INFO] [stderr] | [INFO] [stderr] 565 | assert_eq!(calculate("10!"), Ok(3628800.0)); [INFO] [stderr] | ^^^^^^^^^ help: consider: `3_628_800.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:566:41 [INFO] [stderr] | [INFO] [stderr] 566 | assert_eq!(calculate("11!"), Ok(39916800.0)); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `39_916_800.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:567:41 [INFO] [stderr] | [INFO] [stderr] 567 | assert_eq!(calculate("12!"), Ok(479001600.0)); [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `479_001_600.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:568:41 [INFO] [stderr] | [INFO] [stderr] 568 | assert_eq!(calculate("13!"), Ok(6227020800.0)); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `6_227_020_800.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:569:41 [INFO] [stderr] | [INFO] [stderr] 569 | assert_eq!(calculate("14!"), Ok(87178291200.0)); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `87_178_291_200.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:570:41 [INFO] [stderr] | [INFO] [stderr] 570 | assert_eq!(calculate("15!"), Ok(1307674368000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider: `1_307_674_368_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:571:41 [INFO] [stderr] | [INFO] [stderr] 571 | assert_eq!(calculate("16!"), Ok(20922789888000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `20_922_789_888_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:572:41 [INFO] [stderr] | [INFO] [stderr] 572 | assert_eq!(calculate("17!"), Ok(355687428096000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `355_687_428_096_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:573:41 [INFO] [stderr] | [INFO] [stderr] 573 | assert_eq!(calculate("18!"), Ok(6402373705728000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `6_402_373_705_728_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:574:41 [INFO] [stderr] | [INFO] [stderr] 574 | assert_eq!(calculate("19!"), Ok(121645100408832000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider: `121_645_100_408_832_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:575:41 [INFO] [stderr] | [INFO] [stderr] 575 | assert_eq!(calculate("20!"), Ok(2432902008176640000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider: `2_432_902_008_176_640_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:576:41 [INFO] [stderr] | [INFO] [stderr] 576 | assert_eq!(calculate("25!"), Ok(15511210043330985984000000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `15_511_210_043_330_985_984_000_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:577:41 [INFO] [stderr] | [INFO] [stderr] 577 | assert_eq!(calculate("26!"), Ok(403291461126605635584000000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `403_291_461_126_605_635_584_000_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:578:41 [INFO] [stderr] | [INFO] [stderr] 578 | assert_eq!(calculate("27!"), Ok(10888869450418352160768000000.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `10_888_869_450_418_352_160_768_000_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:317:9 [INFO] [stderr] | [INFO] [stderr] 317 | token [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/main.rs:313:21 [INFO] [stderr] | [INFO] [stderr] 313 | let token = self.stream.pop_front().or_else(|| { [INFO] [stderr] | _____________________^ [INFO] [stderr] 314 | | self.parse_line(); [INFO] [stderr] 315 | | self.stream.pop_front().map(|token| token) [INFO] [stderr] 316 | | }); [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: floating-point types cannot be used in patterns [INFO] [stderr] --> src/main.rs:165:32 [INFO] [stderr] | [INFO] [stderr] 165 | Ok(0.0) => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(illegal_floating_point_literal_pattern)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/main.rs:165:32 [INFO] [stderr] | [INFO] [stderr] 165 | Ok(0.0) => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(illegal_floating_point_literal_pattern)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/main.rs:165:32 [INFO] [stderr] | [INFO] [stderr] 165 | Ok(0.0) => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: floating-point types cannot be used in patterns [INFO] [stderr] --> src/main.rs:165:32 [INFO] [stderr] | [INFO] [stderr] 165 | Ok(0.0) => { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #41620 [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:82:31 [INFO] [stderr] | [INFO] [stderr] 82 | self.symtab.get(&sym).ok_or(SyntaxError::UnknownSymbol(sym)).map(|val| *val) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| SyntaxError::UnknownSymbol(sym))` [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: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:143:42 [INFO] [stderr] | [INFO] [stderr] 143 | TokenKind::Modulo => left = left % self.term()?, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `left %= self.term()?` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/main.rs:189:12 [INFO] [stderr] | [INFO] [stderr] 189 | if n.floor() != n || n < 0.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(n.floor() - n).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/main.rs:189:12 [INFO] [stderr] | [INFO] [stderr] 189 | if n.floor() != n || n < 0.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: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:393:34 [INFO] [stderr] | [INFO] [stderr] 393 | .expect(&format!("Not a valid f64: {}", token)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Not a valid f64: {}", token))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buf`. [INFO] [stderr] --> src/main.rs:439:18 [INFO] [stderr] | [INFO] [stderr] 439 | for i in 0..readsize { [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] 439 | for in buf.iter_mut().take(readsize) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:82:31 [INFO] [stderr] | [INFO] [stderr] 82 | self.symtab.get(&sym).ok_or(SyntaxError::UnknownSymbol(sym)).map(|val| *val) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| SyntaxError::UnknownSymbol(sym))` [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] error: Could not compile `calc`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:143:42 [INFO] [stderr] | [INFO] [stderr] 143 | TokenKind::Modulo => left = left % self.term()?, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `left %= self.term()?` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/main.rs:189:12 [INFO] [stderr] | [INFO] [stderr] 189 | if n.floor() != n || n < 0.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(n.floor() - n).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/main.rs:189:12 [INFO] [stderr] | [INFO] [stderr] 189 | if n.floor() != n || n < 0.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: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:393:34 [INFO] [stderr] | [INFO] [stderr] 393 | .expect(&format!("Not a valid f64: {}", token)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Not a valid f64: {}", token))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buf`. [INFO] [stderr] --> src/main.rs:439:18 [INFO] [stderr] | [INFO] [stderr] 439 | for i in 0..readsize { [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] 439 | for in buf.iter_mut().take(readsize) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/main.rs:551:5 [INFO] [stderr] | [INFO] [stderr] 551 | / fn factorial_tests() { [INFO] [stderr] 552 | | assert_eq!(calculate("(2^3)!"), Ok(40320.0)); [INFO] [stderr] 553 | | assert_eq!(calculate("2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"), Ok(2.0)); [INFO] [stderr] 554 | | assert_eq!(calculate("3!!"), Ok(720.0)); [INFO] [stderr] ... | [INFO] [stderr] 583 | | // assert_eq!(calculate("30!"), Ok(265252859812191058636308480000000.0)); [INFO] [stderr] 584 | | } [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `calc`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "caa188838be605307e51b5f0574ef6e640490989a3d835848909659ec4c998e0"` [INFO] running `"docker" "rm" "-f" "caa188838be605307e51b5f0574ef6e640490989a3d835848909659ec4c998e0"` [INFO] [stdout] caa188838be605307e51b5f0574ef6e640490989a3d835848909659ec4c998e0