[INFO] cloning repository https://github.com/marcusklaas/lisp-interpreter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/marcusklaas/lisp-interpreter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmarcusklaas%2Flisp-interpreter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmarcusklaas%2Flisp-interpreter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ec95166813fa1e6a301e92a1787e356d78431b98 [INFO] linting marcusklaas/lisp-interpreter against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmarcusklaas%2Flisp-interpreter" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/marcusklaas/lisp-interpreter [INFO] finished tweaking git repo https://github.com/marcusklaas/lisp-interpreter [INFO] tweaked toml for git repo https://github.com/marcusklaas/lisp-interpreter written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/marcusklaas/lisp-interpreter on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/marcusklaas/lisp-interpreter already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded thread_local v1.1.2 [INFO] [stderr] Downloaded env_logger v0.8.2 [INFO] [stderr] Downloaded string-interner v0.6.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8bf092868c15dd99c2f16b33565fd62d78ba12f69d867b91845eed812a6d5112 [INFO] running `Command { std: "docker" "start" "-a" "8bf092868c15dd99c2f16b33565fd62d78ba12f69d867b91845eed812a6d5112", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8bf092868c15dd99c2f16b33565fd62d78ba12f69d867b91845eed812a6d5112", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8bf092868c15dd99c2f16b33565fd62d78ba12f69d867b91845eed812a6d5112", kill_on_drop: false }` [INFO] [stdout] 8bf092868c15dd99c2f16b33565fd62d78ba12f69d867b91845eed812a6d5112 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c06c12d958793e7f3623ce807a2da13fe007edd064d922154a47ab01341de99a [INFO] running `Command { std: "docker" "start" "-a" "c06c12d958793e7f3623ce807a2da13fe007edd064d922154a47ab01341de99a", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling libc v0.2.82 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling syn v1.0.60 [INFO] [stderr] Checking regex-syntax v0.6.22 [INFO] [stderr] Checking string-interner v0.6.2 [INFO] [stderr] Checking thread_local v1.1.2 [INFO] [stderr] Checking yalp v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/evaluator.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | func: func, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/evaluator.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | stack_pointer: stack_pointer, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_pointer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | arg_count: arg_count, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arg_count` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:608:13 [INFO] [stdout] | [INFO] [stdout] 608 | own_name: own_name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `own_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/evaluator.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | stack: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - stack: &mut Vec, [INFO] [stdout] 11 + stack: &mut [LispValue], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/evaluator.rs:45:34 [INFO] [stdout] | [INFO] [stdout] 45 | let reference = unsafe { transmute(func.compile(state)?) }; [INFO] [stdout] | ^^^^^^^^^ help: consider adding missing annotations: `transmute::<&[Instr], &[Instr]>` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/evaluator.rs:246:29 [INFO] [stdout] | [INFO] [stdout] 246 | let value = (&value_stack[..]).index(idx).clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `value_stack[..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parse.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 88 | if !tokens.next().is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `tokens.next().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/print.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | repeat(' ').take(indent * 4).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `" ".repeat(indent * 4)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/print.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | repeat(' ').take(indent * 4).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(' ', indent * 4)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/print.rs:79:21 [INFO] [stdout] | [INFO] [stdout] 79 | result.push_str(&" -> "); [INFO] [stdout] | ^^^^^^^ help: change this to: `" -> "` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/print.rs:100:34 [INFO] [stdout] | [INFO] [stdout] 100 | let expr_iter = Some(&*test_expr) [INFO] [stdout] | ^^^^^^^^^^^ help: if you would like to reborrow, try removing `&*`: `test_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/print.rs:102:29 [INFO] [stdout] | [INFO] [stdout] 102 | .chain(Some(&*true_expr).into_iter().chain(Some(&*false_expr))); [INFO] [stdout] | ^^^^^^^^^^^ help: if you would like to reborrow, try removing `&*`: `true_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/print.rs:102:65 [INFO] [stdout] | [INFO] [stdout] 102 | .chain(Some(&*true_expr).into_iter().chain(Some(&*false_expr))); [INFO] [stdout] | ^^^^^^^^^^^^ help: if you would like to reborrow, try removing `&*`: `false_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/lib.rs:64:1 [INFO] [stdout] | [INFO] [stdout] 64 | / impl Default for StackOffset { [INFO] [stdout] 65 | | fn default() -> Self { [INFO] [stdout] 66 | | StackOffset(0) [INFO] [stdout] 67 | | } [INFO] [stdout] 68 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 44 + #[derive(Default)] [INFO] [stdout] 45 | struct StackOffset(u32); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/lib.rs:214:1 [INFO] [stdout] | [INFO] [stdout] 214 | / impl Default for Scope { [INFO] [stdout] 215 | | fn default() -> Self { [INFO] [stdout] 216 | | Scope(0) [INFO] [stdout] 217 | | } [INFO] [stdout] 218 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 206 + #[derive(Default)] [INFO] [stdout] 207 | struct Scope(u32); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/lib.rs:389:83 [INFO] [stdout] | [INFO] [stdout] 389 | if let Some(&FinalizedExpr::Argument(e_offset, e_scope, _)) = args.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `expr_list.get(0)` [INFO] [stdout] --> src/lib.rs:616:58 [INFO] [stdout] | [INFO] [stdout] 616 | Some(&LispExpr::Macro(LispMacro::Define)) == expr_list.get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `expr_list.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/lib.rs:752:63 [INFO] [stdout] | [INFO] [stdout] 752 | ... for (offset, expr) in arg_vec.into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:1133:39 [INFO] [stdout] | [INFO] [stdout] 1133 | } else if is_tail_call && !builtin.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `builtin.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/lib.rs:983:79 [INFO] [stdout] | [INFO] [stdout] 983 | if let Some(&FinalizedExpr::Argument(offset, scope, _)) = args.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/lib.rs:1012:33 [INFO] [stdout] | [INFO] [stdout] 1012 | instructions.extend(test_expr_buf.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 1012 - instructions.extend(test_expr_buf.into_iter()); [INFO] [stdout] 1012 + instructions.extend(test_expr_buf); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/lib.rs:1021:85 [INFO] [stdout] | [INFO] [stdout] 1021 | if let Some(&FinalizedExpr::Argument(offset, scope, move_status)) = args.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/lib.rs:1125:41 [INFO] [stdout] | [INFO] [stdout] 1125 | instructions.extend(buf.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 1125 - instructions.extend(buf.into_iter()); [INFO] [stdout] 1125 + instructions.extend(buf); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parse.rs:26:26 [INFO] [stdout] | [INFO] [stdout] 26 | fn from_str(literal: &str) -> Tokens { [INFO] [stdout] | ^^^^ ^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 26 | fn from_str(literal: &str) -> Tokens<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking regex v1.4.3 [INFO] [stderr] Checking rand_core v0.6.1 [INFO] [stderr] Checking rand v0.8.3 [INFO] [stderr] Checking env_logger v0.8.2 [INFO] [stderr] Checking quickcheck v1.0.3 [INFO] [stderr] Compiling quickcheck_macros v1.0.0 [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/evaluator.rs:50:13 [INFO] [stdout] | [INFO] [stdout] 50 | func: func, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `func` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/evaluator.rs:51:13 [INFO] [stdout] | [INFO] [stdout] 51 | stack_pointer: stack_pointer, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_pointer` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | arg_count: arg_count, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arg_count` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:608:13 [INFO] [stdout] | [INFO] [stdout] 608 | own_name: own_name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `own_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&mut Vec` instead of `&mut [_]` involves a new object where a slice will do [INFO] [stdout] --> src/evaluator.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | stack: &mut Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 11 - stack: &mut Vec, [INFO] [stdout] 11 + stack: &mut [LispValue], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: transmute used without annotations [INFO] [stdout] --> src/evaluator.rs:45:34 [INFO] [stdout] | [INFO] [stdout] 45 | let reference = unsafe { transmute(func.compile(state)?) }; [INFO] [stdout] | ^^^^^^^^^ help: consider adding missing annotations: `transmute::<&[Instr], &[Instr]>` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_transmute_annotations [INFO] [stdout] = note: `#[warn(clippy::missing_transmute_annotations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/evaluator.rs:246:29 [INFO] [stdout] | [INFO] [stdout] 246 | let value = (&value_stack[..]).index(idx).clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: change this to: `value_stack[..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parse.rs:88:8 [INFO] [stdout] | [INFO] [stdout] 88 | if !tokens.next().is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `tokens.next().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/print.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | repeat(' ').take(indent * 4).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `" ".repeat(indent * 4)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/print.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | repeat(' ').take(indent * 4).collect() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(' ', indent * 4)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/print.rs:79:21 [INFO] [stdout] | [INFO] [stdout] 79 | result.push_str(&" -> "); [INFO] [stdout] | ^^^^^^^ help: change this to: `" -> "` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/print.rs:100:34 [INFO] [stdout] | [INFO] [stdout] 100 | let expr_iter = Some(&*test_expr) [INFO] [stdout] | ^^^^^^^^^^^ help: if you would like to reborrow, try removing `&*`: `test_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] = note: `#[warn(clippy::borrow_deref_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/print.rs:102:29 [INFO] [stdout] | [INFO] [stdout] 102 | .chain(Some(&*true_expr).into_iter().chain(Some(&*false_expr))); [INFO] [stdout] | ^^^^^^^^^^^ help: if you would like to reborrow, try removing `&*`: `true_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref on an immutable reference [INFO] [stdout] --> src/print.rs:102:65 [INFO] [stdout] | [INFO] [stdout] 102 | .chain(Some(&*true_expr).into_iter().chain(Some(&*false_expr))); [INFO] [stdout] | ^^^^^^^^^^^^ help: if you would like to reborrow, try removing `&*`: `false_expr` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_deref_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/lib.rs:64:1 [INFO] [stdout] | [INFO] [stdout] 64 | / impl Default for StackOffset { [INFO] [stdout] 65 | | fn default() -> Self { [INFO] [stdout] 66 | | StackOffset(0) [INFO] [stdout] 67 | | } [INFO] [stdout] 68 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 44 + #[derive(Default)] [INFO] [stdout] 45 | struct StackOffset(u32); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/lib.rs:214:1 [INFO] [stdout] | [INFO] [stdout] 214 | / impl Default for Scope { [INFO] [stdout] 215 | | fn default() -> Self { [INFO] [stdout] 216 | | Scope(0) [INFO] [stdout] 217 | | } [INFO] [stdout] 218 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 206 + #[derive(Default)] [INFO] [stdout] 207 | struct Scope(u32); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/lib.rs:389:83 [INFO] [stdout] | [INFO] [stdout] 389 | if let Some(&FinalizedExpr::Argument(e_offset, e_scope, _)) = args.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `expr_list.get(0)` [INFO] [stdout] --> src/lib.rs:616:58 [INFO] [stdout] | [INFO] [stdout] 616 | Some(&LispExpr::Macro(LispMacro::Define)) == expr_list.get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `expr_list.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/lib.rs:752:63 [INFO] [stdout] | [INFO] [stdout] 752 | ... for (offset, expr) in arg_vec.into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:1133:39 [INFO] [stdout] | [INFO] [stdout] 1133 | } else if is_tail_call && !builtin.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `builtin.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/lib.rs:983:79 [INFO] [stdout] | [INFO] [stdout] 983 | if let Some(&FinalizedExpr::Argument(offset, scope, _)) = args.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/lib.rs:1012:33 [INFO] [stdout] | [INFO] [stdout] 1012 | instructions.extend(test_expr_buf.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 1012 - instructions.extend(test_expr_buf.into_iter()); [INFO] [stdout] 1012 + instructions.extend(test_expr_buf); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/lib.rs:1021:85 [INFO] [stdout] | [INFO] [stdout] 1021 | if let Some(&FinalizedExpr::Argument(offset, scope, move_status)) = args.get(0) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `args.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/lib.rs:1125:41 [INFO] [stdout] | [INFO] [stdout] 1125 | instructions.extend(buf.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/collect.rs:416:17 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 1125 - instructions.extend(buf.into_iter()); [INFO] [stdout] 1125 + instructions.extend(buf); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `super::compile_finalized_expr` doesn't need a mutable reference [INFO] [stdout] --> src/lib.rs:1227:59 [INFO] [stdout] | [INFO] [stdout] 1227 | super::compile_finalized_expr(*body, returns, &mut state).unwrap() [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 1227 - super::compile_finalized_expr(*body, returns, &mut state).unwrap() [INFO] [stdout] 1227 + super::compile_finalized_expr(*body, returns, &state).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `super::compile_finalized_expr` doesn't need a mutable reference [INFO] [stdout] --> src/lib.rs:1229:68 [INFO] [stdout] | [INFO] [stdout] 1229 | super::compile_finalized_expr(finalized_expr, returns, &mut state).unwrap() [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 1229 - super::compile_finalized_expr(finalized_expr, returns, &mut state).unwrap() [INFO] [stdout] 1229 + super::compile_finalized_expr(finalized_expr, returns, &state).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `slice` [INFO] [stdout] --> src/lib.rs:1714:18 [INFO] [stdout] | [INFO] [stdout] 1714 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/lib.rs:1716:24 [INFO] [stdout] | [INFO] [stdout] 1716 | .chain(Some("(sort (list 5 3 2 10 0 7))").into_iter()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:510:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 1716 - .chain(Some("(sort (list 5 3 2 10 0 7))").into_iter()), [INFO] [stdout] 1716 + .chain(Some("(sort (list 5 3 2 10 0 7))")), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/parse.rs:26:26 [INFO] [stdout] | [INFO] [stdout] 26 | fn from_str(literal: &str) -> Tokens { [INFO] [stdout] | ^^^^ ^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 26 | fn from_str(literal: &str) -> Tokens<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.24s [INFO] running `Command { std: "docker" "inspect" "c06c12d958793e7f3623ce807a2da13fe007edd064d922154a47ab01341de99a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c06c12d958793e7f3623ce807a2da13fe007edd064d922154a47ab01341de99a", kill_on_drop: false }` [INFO] [stdout] c06c12d958793e7f3623ce807a2da13fe007edd064d922154a47ab01341de99a