[INFO] cloning repository https://github.com/bwhetherington/rscript
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bwhetherington/rscript" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbwhetherington%2Frscript", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbwhetherington%2Frscript'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e512dba278b7bc4f25b948d357ec7c7bf37db8d0
[INFO] checking bwhetherington/rscript against 5c543b0b8c73c7b72bc8284ced4fb22ead15734d for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbwhetherington%2Frscript" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/bwhetherington/rscript
[INFO] finished tweaking git repo https://github.com/bwhetherington/rscript
[INFO] tweaked toml for git repo https://github.com/bwhetherington/rscript written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bwhetherington/rscript on toolchain 5c543b0b8c73c7b72bc8284ced4fb22ead15734d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bwhetherington/rscript 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" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b
[INFO] running `Command { std: "docker" "start" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking rscript v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/codegen/js.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `obj::*`
[INFO] [stdout]   --> src/engine/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use obj::*;
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:224:67
[INFO] [stdout]     |
[INFO] [stdout] 224 |         f if f.is_infinite() && f.is_sign_positive() => std::i32::MAX,
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MIN`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:225:43
[INFO] [stdout]     |
[INFO] [stdout] 225 |         f if f.is_infinite() => std::i32::MIN,
[INFO] [stdout]     |                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/codegen/js.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `obj::*`
[INFO] [stdout]   --> src/engine/mod.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use obj::*;
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:224:67
[INFO] [stdout]     |
[INFO] [stdout] 224 |         f if f.is_infinite() && f.is_sign_positive() => std::i32::MAX,
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MIN`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:225:43
[INFO] [stdout]     |
[INFO] [stdout] 225 |         f if f.is_infinite() => std::i32::MIN,
[INFO] [stdout]     |                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/vm.rs:562:17
[INFO] [stdout]     |
[INFO] [stdout] 562 |                 (_, xs) => Err(EvalError::arity_mismatch(1, xs.len())),
[INFO] [stdout]     |                 ^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/engine/vm.rs:562:17
[INFO] [stdout]     |
[INFO] [stdout] 553 |                 (Value::Object(this), []) => match this.borrow().get("data") {
[INFO] [stdout]     |                 ------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 561 |                 (other, _) => Err(EvalError::type_mismatch("Object", other.type_of())),
[INFO] [stdout]     |                 ---------- matches some of the same values
[INFO] [stdout] 562 |                 (_, xs) => Err(EvalError::arity_mismatch(1, xs.len())),
[INFO] [stdout]     |                 ^^^^^^^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/engine/vm.rs:572:41
[INFO] [stdout]     |
[INFO] [stdout] 572 |         str_proto.define_method("new", |engine, this, args| {
[INFO] [stdout]     |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/engine/vm.rs:351:49
[INFO] [stdout]     |
[INFO] [stdout] 351 |         obj_proto.define_method("instance_of", |engine, this, args| {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/engine/vm.rs:329:41
[INFO] [stdout]     |
[INFO] [stdout] 329 |         obj_proto.define_method("new", |engine, this, args| {
[INFO] [stdout]     |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/engine/vm.rs:1645:13
[INFO] [stdout]      |
[INFO] [stdout] 1645 |         let mut frame = HashMap::new();
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]     --> src/engine/vm.rs:1644:35
[INFO] [stdout]      |
[INFO] [stdout] 1644 |     fn capture_environment(&self, expr: &Expression) -> Frame {
[INFO] [stdout]      |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]     --> src/engine/vm.rs:1710:21
[INFO] [stdout]      |
[INFO] [stdout] 1710 |                     other => self.evaluate(then),
[INFO] [stdout]      |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/vm.rs:562:17
[INFO] [stdout]     |
[INFO] [stdout] 562 |                 (_, xs) => Err(EvalError::arity_mismatch(1, xs.len())),
[INFO] [stdout]     |                 ^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/engine/vm.rs:562:17
[INFO] [stdout]     |
[INFO] [stdout] 553 |                 (Value::Object(this), []) => match this.borrow().get("data") {
[INFO] [stdout]     |                 ------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 561 |                 (other, _) => Err(EvalError::type_mismatch("Object", other.type_of())),
[INFO] [stdout]     |                 ---------- matches some of the same values
[INFO] [stdout] 562 |                 (_, xs) => Err(EvalError::arity_mismatch(1, xs.len())),
[INFO] [stdout]     |                 ^^^^^^^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/engine/vm.rs:572:41
[INFO] [stdout]     |
[INFO] [stdout] 572 |         str_proto.define_method("new", |engine, this, args| {
[INFO] [stdout]     |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/engine/vm.rs:351:49
[INFO] [stdout]     |
[INFO] [stdout] 351 |         obj_proto.define_method("instance_of", |engine, this, args| {
[INFO] [stdout]     |                                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> src/engine/vm.rs:329:41
[INFO] [stdout]     |
[INFO] [stdout] 329 |         obj_proto.define_method("new", |engine, this, args| {
[INFO] [stdout]     |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/engine/vm.rs:1645:13
[INFO] [stdout]      |
[INFO] [stdout] 1645 |         let mut frame = HashMap::new();
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]     --> src/engine/vm.rs:1644:35
[INFO] [stdout]      |
[INFO] [stdout] 1644 |     fn capture_environment(&self, expr: &Expression) -> Frame {
[INFO] [stdout]      |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]     --> src/engine/vm.rs:1710:21
[INFO] [stdout]      |
[INFO] [stdout] 1710 |                     other => self.evaluate(then),
[INFO] [stdout]      |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]     --> src/parser/ast.rs:1559:21
[INFO] [stdout]      |
[INFO] [stdout] 1559 |             Boolean(b) => write!(f, "False"),
[INFO] [stdout]      |                     ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]     --> src/parser/ast.rs:1563:31
[INFO] [stdout]      |
[INFO] [stdout] 1563 |             Block(statements, expr) => {
[INFO] [stdout]      |                               ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statement`
[INFO] [stdout]     --> src/parser/ast.rs:1565:21
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 for statement in statements {}
[INFO] [stdout]      |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> src/parser/lexer.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let loc = self.loc;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `col`
[INFO] [stdout]   --> src/parser/mod.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let col = self.col as isize + col_offset;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]   --> src/parser/mod.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let row = self.row as isize + row_offset;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Builtin` is more private than the item `vm2::Value::Builtin::0`
[INFO] [stdout]   --> src/engine/vm2.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Builtin(Builtin),
[INFO] [stdout]    |             ^^^^^^^ field `vm2::Value::Builtin::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Builtin` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/engine/vm2.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builtin(Rc<dyn Fn(&[Value], &mut Engine) -> EvalResult<Value>>);
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Str` is never used
[INFO] [stdout]  --> src/codegen/js.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type Str = Rc<str>;
[INFO] [stdout]   |      ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Definition` is never used
[INFO] [stdout]  --> src/codegen/js.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | type Definition = (Str, JsValue);
[INFO] [stdout]   |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JsBody` is never used
[INFO] [stdout]  --> src/codegen/js.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum JsBody {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JsStatement` is never used
[INFO] [stdout]   --> src/codegen/js.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum JsStatement {}
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JsValue` is never used
[INFO] [stdout]   --> src/codegen/js.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum JsValue {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/engine/env.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Environment {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Environment {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `frames_mut` is never used
[INFO] [stdout]   --> src/engine/ignore.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Ignore {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn frames_mut(&mut self) -> impl Iterator<Item = &mut Frame> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_isize` is never used
[INFO] [stdout]   --> src/engine/vm.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn is_isize(num: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `instructions` is never read
[INFO] [stdout]    --> src/engine/vm.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct Engine {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] 145 |     instructions: Vec<Statement>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `define_io_built_ins`, `module_root`, and `capture_environment` are never used
[INFO] [stdout]     --> src/engine/vm.rs:771:8
[INFO] [stdout]      |
[INFO] [stdout]  249 | impl Engine {
[INFO] [stdout]      | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  771 |     fn define_io_built_ins(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1167 |     fn module_root(&self) -> &Node {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1644 |     fn capture_environment(&self, expr: &Expression) -> Frame {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ClonePtr` is never used
[INFO] [stdout]     --> src/engine/vm.rs:2229:7
[INFO] [stdout]      |
[INFO] [stdout] 2229 | trait ClonePtr<T> {
[INFO] [stdout]      |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `value`, `params`, and `children` are never read
[INFO] [stdout]   --> src/parser/ast.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct XmlNode {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 67 |     value: Box<Expression>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 68 |     params: Vec<Expression>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 69 |     children: Vec<XmlNode>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `XmlNode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_interface_alias_statement` is never used
[INFO] [stdout]     --> src/parser/ast.rs:1357:8
[INFO] [stdout]      |
[INFO] [stdout]  416 | impl<I: TokenIter> Parser<I> {
[INFO] [stdout]      | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1357 |     fn parse_interface_alias_statement(&mut self) -> ParseResult<InterfaceStatement> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_file` is never used
[INFO] [stdout]    --> src/parser/lexer.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn show_file(file: Option<&String>) -> String {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:833:23
[INFO] [stdout]     |
[INFO] [stdout] 833 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:846:23
[INFO] [stdout]     |
[INFO] [stdout] 846 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:859:69
[INFO] [stdout]     |
[INFO] [stdout] 859 |         self.define_built_in("__set_list__", |_, _, args| match args.clone() {
[INFO] [stdout]     |                                                                     ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]     --> src/engine/vm.rs:1308:38
[INFO] [stdout]      |
[INFO] [stdout] 1308 |                         for frame in self.env.frames().next() {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to iterate over `self.env.frames()` remove the call to `next`
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         for frame in self.env.frames().by_ref() {
[INFO] [stdout]      |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         if let Some(frame) = self.env.frames().next() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]     --> src/parser/ast.rs:1559:21
[INFO] [stdout]      |
[INFO] [stdout] 1559 |             Boolean(b) => write!(f, "False"),
[INFO] [stdout]      |                     ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr`
[INFO] [stdout]     --> src/parser/ast.rs:1563:31
[INFO] [stdout]      |
[INFO] [stdout] 1563 |             Block(statements, expr) => {
[INFO] [stdout]      |                               ^^^^ help: if this is intentional, prefix it with an underscore: `_expr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statement`
[INFO] [stdout]     --> src/parser/ast.rs:1565:21
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                 for statement in statements {}
[INFO] [stdout]      |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `loc`
[INFO] [stdout]    --> src/parser/lexer.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let loc = self.loc;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_loc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `col`
[INFO] [stdout]   --> src/parser/mod.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let col = self.col as isize + col_offset;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]   --> src/parser/mod.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let row = self.row as isize + row_offset;
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Builtin` is more private than the item `vm2::Value::Builtin::0`
[INFO] [stdout]   --> src/engine/vm2.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Builtin(Builtin),
[INFO] [stdout]    |             ^^^^^^^ field `vm2::Value::Builtin::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Builtin` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/engine/vm2.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builtin(Rc<dyn Fn(&[Value], &mut Engine) -> EvalResult<Value>>);
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Str` is never used
[INFO] [stdout]  --> src/codegen/js.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type Str = Rc<str>;
[INFO] [stdout]   |      ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Definition` is never used
[INFO] [stdout]  --> src/codegen/js.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | type Definition = (Str, JsValue);
[INFO] [stdout]   |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JsBody` is never used
[INFO] [stdout]  --> src/codegen/js.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum JsBody {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JsStatement` is never used
[INFO] [stdout]   --> src/codegen/js.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum JsStatement {}
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JsValue` is never used
[INFO] [stdout]   --> src/codegen/js.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum JsValue {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/engine/env.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Environment {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Environment {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `frames_mut` is never used
[INFO] [stdout]   --> src/engine/ignore.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Ignore {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn frames_mut(&mut self) -> impl Iterator<Item = &mut Frame> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_isize` is never used
[INFO] [stdout]   --> src/engine/vm.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn is_isize(num: f64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `instructions` is never read
[INFO] [stdout]    --> src/engine/vm.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct Engine {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] 145 |     instructions: Vec<Statement>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `define_io_built_ins`, `module_root`, and `capture_environment` are never used
[INFO] [stdout]     --> src/engine/vm.rs:771:8
[INFO] [stdout]      |
[INFO] [stdout]  249 | impl Engine {
[INFO] [stdout]      | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  771 |     fn define_io_built_ins(&mut self) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1167 |     fn module_root(&self) -> &Node {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1644 |     fn capture_environment(&self, expr: &Expression) -> Frame {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ClonePtr` is never used
[INFO] [stdout]     --> src/engine/vm.rs:2229:7
[INFO] [stdout]      |
[INFO] [stdout] 2229 | trait ClonePtr<T> {
[INFO] [stdout]      |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `value`, `params`, and `children` are never read
[INFO] [stdout]   --> src/parser/ast.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct XmlNode {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 67 |     value: Box<Expression>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 68 |     params: Vec<Expression>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 69 |     children: Vec<XmlNode>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `XmlNode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_interface_alias_statement` is never used
[INFO] [stdout]     --> src/parser/ast.rs:1357:8
[INFO] [stdout]      |
[INFO] [stdout]  416 | impl<I: TokenIter> Parser<I> {
[INFO] [stdout]      | ---------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1357 |     fn parse_interface_alias_statement(&mut self) -> ParseResult<InterfaceStatement> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_file` is never used
[INFO] [stdout]    --> src/parser/lexer.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn show_file(file: Option<&String>) -> String {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:833:23
[INFO] [stdout]     |
[INFO] [stdout] 833 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:846:23
[INFO] [stdout]     |
[INFO] [stdout] 846 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:859:69
[INFO] [stdout]     |
[INFO] [stdout] 859 |         self.define_built_in("__set_list__", |_, _, args| match args.clone() {
[INFO] [stdout]     |                                                                     ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]     --> src/engine/vm.rs:1308:38
[INFO] [stdout]      |
[INFO] [stdout] 1308 |                         for frame in self.env.frames().next() {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to iterate over `self.env.frames()` remove the call to `next`
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         for frame in self.env.frames().by_ref() {
[INFO] [stdout]      |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         if let Some(frame) = self.env.frames().next() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::usize::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/main.rs:27:36
[INFO] [stdout]    |
[INFO] [stdout] 27 |                 return std::usize::MAX;
[INFO] [stdout]    |                                    ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::usize::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/main.rs:39:27
[INFO] [stdout]    |
[INFO] [stdout] 39 |         .fold(std::usize::MAX, |min, cur_margin| {
[INFO] [stdout]    |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:224:67
[INFO] [stdout]     |
[INFO] [stdout] 224 |         f if f.is_infinite() && f.is_sign_positive() => std::i32::MAX,
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MIN`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:225:43
[INFO] [stdout]     |
[INFO] [stdout] 225 |         f if f.is_infinite() => std::i32::MIN,
[INFO] [stdout]     |                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::usize::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/main.rs:27:36
[INFO] [stdout]    |
[INFO] [stdout] 27 |                 return std::usize::MAX;
[INFO] [stdout]    |                                    ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::usize::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]   --> src/main.rs:39:27
[INFO] [stdout]    |
[INFO] [stdout] 39 |         .fold(std::usize::MAX, |min, cur_margin| {
[INFO] [stdout]    |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MAX`: replaced by the `MAX` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:224:67
[INFO] [stdout]     |
[INFO] [stdout] 224 |         f if f.is_infinite() && f.is_sign_positive() => std::i32::MAX,
[INFO] [stdout]     |                                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::i32::MIN`: replaced by the `MIN` associated constant on this type
[INFO] [stdout]    --> src/engine/vm.rs:225:43
[INFO] [stdout]     |
[INFO] [stdout] 225 |         f if f.is_infinite() => std::i32::MIN,
[INFO] [stdout]     |                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Builtin` is more private than the item `vm2::Value::Builtin::0`
[INFO] [stdout]   --> src/engine/vm2.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Builtin(Builtin),
[INFO] [stdout]    |             ^^^^^^^ field `vm2::Value::Builtin::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Builtin` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/engine/vm2.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builtin(Rc<dyn Fn(&[Value], &mut Engine) -> EvalResult<Value>>);
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:833:23
[INFO] [stdout]     |
[INFO] [stdout] 833 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:846:23
[INFO] [stdout]     |
[INFO] [stdout] 846 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:859:69
[INFO] [stdout]     |
[INFO] [stdout] 859 |         self.define_built_in("__set_list__", |_, _, args| match args.clone() {
[INFO] [stdout]     |                                                                     ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]     --> src/engine/vm.rs:1308:38
[INFO] [stdout]      |
[INFO] [stdout] 1308 |                         for frame in self.env.frames().next() {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to iterate over `self.env.frames()` remove the call to `next`
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         for frame in self.env.frames().by_ref() {
[INFO] [stdout]      |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         if let Some(frame) = self.env.frames().next() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Builtin` is more private than the item `vm2::Value::Builtin::0`
[INFO] [stdout]   --> src/engine/vm2.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Builtin(Builtin),
[INFO] [stdout]    |             ^^^^^^^ field `vm2::Value::Builtin::0` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Builtin` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/engine/vm2.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Builtin(Rc<dyn Fn(&[Value], &mut Engine) -> EvalResult<Value>>);
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:833:23
[INFO] [stdout]     |
[INFO] [stdout] 833 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:846:23
[INFO] [stdout]     |
[INFO] [stdout] 846 |             match args.clone() {
[INFO] [stdout]     |                       ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/engine/vm.rs:859:69
[INFO] [stdout]     |
[INFO] [stdout] 859 |         self.define_built_in("__set_list__", |_, _, args| match args.clone() {
[INFO] [stdout]     |                                                                     ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `[vm::Value]` does not implement `Clone`, so calling `clone` on `&[vm::Value]` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: for loop over an `Option`. This is more readably written as an `if let` statement
[INFO] [stdout]     --> src/engine/vm.rs:1308:38
[INFO] [stdout]      |
[INFO] [stdout] 1308 |                         for frame in self.env.frames().next() {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(for_loops_over_fallibles)]` on by default
[INFO] [stdout] help: to iterate over `self.env.frames()` remove the call to `next`
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         for frame in self.env.frames().by_ref() {
[INFO] [stdout]      |
[INFO] [stdout] help: consider using `if let` to clear intent
[INFO] [stdout]      |
[INFO] [stdout] 1308 -                         for frame in self.env.frames().next() {
[INFO] [stdout] 1308 +                         if let Some(frame) = self.env.frames().next() {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.67s
[INFO] running `Command { std: "docker" "inspect" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b", kill_on_drop: false }`
[INFO] [stdout] b4974e970725fb9529fca92499ecd432e130ab4acbbd185823e397bdeafb356b
