[INFO] fetching crate ghoti-exec 0.0.0...
[INFO] checking ghoti-exec-0.0.0 against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] extracting crate ghoti-exec 0.0.0 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate ghoti-exec 0.0.0
[INFO] finished tweaking crates.io crate ghoti-exec 0.0.0
[INFO] tweaked toml for crates.io crate ghoti-exec 0.0.0 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ghoti-exec 0.0.0 on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ghoti-exec 0.0.0 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" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb
[INFO] running `Command { std: "docker" "start" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb", 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" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb", 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" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling rustversion v1.0.20
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling siphasher v1.0.1
[INFO] [stderr]    Compiling hashbrown v0.15.2
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling term v1.0.1
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling keccak v0.1.5
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling ena v0.14.3
[INFO] [stderr]    Compiling logos-codegen v0.15.0
[INFO] [stderr]     Checking anstyle v1.0.10
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]     Checking clap_lex v0.7.4
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling owo-colors v4.2.0
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling rustix v1.0.5
[INFO] [stderr]    Compiling clap_derive v4.5.32
[INFO] [stderr]     Checking clap_builder v4.5.35
[INFO] [stderr]     Checking socket2 v0.5.9
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling ascii-canvas v4.0.0
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking lalrpop-util v0.22.1
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]     Checking annotate-snippets v0.11.5
[INFO] [stderr]     Checking os_pipe v1.2.1
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]     Checking dyn-clone v1.0.19
[INFO] [stderr]     Checking tokio v1.44.2
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]    Compiling petgraph v0.7.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking clap v4.5.35
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling sha3 v0.10.8
[INFO] [stderr]    Compiling logos-derive v0.15.0
[INFO] [stderr]     Checking logos v0.15.0
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling lalrpop v0.22.1
[INFO] [stderr]    Compiling ghoti-syntax v0.0.0
[INFO] [stderr]     Checking ghoti-exec v0.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |           ensure!(rbracket_pos + 1 == args.len(), "must have ']' at last");
[INFO] [stdout]    |           ---------------------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |           ensure!(rbracket_pos == args.len(), "must not have ']'");
[INFO] [stdout]    |           -------------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |       ensure!(tail.is_none(), "unexpected tail {tail:?}");
[INFO] [stdout]    |       --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |               ensure!(next == Some(")"), "expecting ')' but got {next:?}");
[INFO] [stdout]    |               ------------------------------------------------------------ in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | macro_rules! bail {
[INFO] [stdout]  13 |     ($($msg:tt)+) => {
[INFO] [stdout]  14 |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/builtins/test.rs:103:52
[INFO] [stdout]     |
[INFO] [stdout] 103 |         _ if fst == ")" || fst.starts_with('-') => bail!("invalid string operand {fst:?}"),
[INFO] [stdout]     |                                                    --------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | macro_rules! bail {
[INFO] [stdout]  13 |     ($($msg:tt)+) => {
[INFO] [stdout]  14 |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/builtins/test.rs:117:23
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 op => bail!("expecting a binary op but got {op:?}"),
[INFO] [stdout]     |                       --------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/builtins/test.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 | /             ensure!(
[INFO] [stdout] 123 | |                 !["(", "!", ")"].contains(&snd) && !snd.starts_with('-'),
[INFO] [stdout] 124 | |                 "invalid string operand {snd:?}",
[INFO] [stdout] 125 | |             );
[INFO] [stdout]     | |_____________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 113 | /         ensure!(
[INFO] [stdout] 114 | |             !args.attr.export && !args.attr.unexport,
[INFO] [stdout] 115 | |             "--export or --unexport can only be used for setting or listing variables",
[INFO] [stdout] 116 | |         );
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 122 |               ensure!(scope == VarScope::Auto, "TODO");
[INFO] [stdout]     |               ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 141 | /         ensure!(
[INFO] [stdout] 142 | |             !ctx.has_special_var(name),
[INFO] [stdout] 143 | |             "cannot modify special variable: {name:?}",
[INFO] [stdout] 144 | |         );
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 187 | /     ensure!(
[INFO] [stdout] 188 | |         !(args.names && args.query),
[INFO] [stdout] 189 | |         "--names and --query are mutually exclusive"
[INFO] [stdout] 190 | |     );
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 201 |           ensure!(!args.args.is_empty(), "missing builtin name");
[INFO] [stdout]     |           ------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 299 | /     ensure!(
[INFO] [stdout] 300 | |         args.erase as u8 + args.query as u8 <= 1,
[INFO] [stdout] 301 | |         "--erase and --query are mutually exclusive",
[INFO] [stdout] 302 | |     );
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 303 | /     ensure!(
[INFO] [stdout] 304 | |         !args.all || args.funcs.is_empty(),
[INFO] [stdout] 305 | |         "--all can only be used without positional arguments"
[INFO] [stdout] 306 | |     );
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 505 |       ensure!(!unescape, "TODO");
[INFO] [stdout]     |       -------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]     --> src/lib.rs:1094:21
[INFO] [stdout]      |
[INFO] [stdout] 1094 |                     ctx.exec_stmt(stmt).await;
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1094 |                     let _ = ctx.exec_stmt(stmt).await;
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]     --> src/lib.rs:1238:13
[INFO] [stdout]      |
[INFO] [stdout] 1238 | /             self.list_vars::<()>(VarScope::Auto, |name, var| {
[INFO] [stdout] 1239 | |                 if var.export {
[INFO] [stdout] 1240 | |                     builder.env(name, var.value.join(" "));
[INFO] [stdout] ...    |
[INFO] [stdout] 1243 | |             });
[INFO] [stdout]      | |______________^
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1238 |             let _ = self.list_vars::<()>(VarScope::Auto, |name, var| {
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]     --> src/lib.rs:1388:25
[INFO] [stdout]      |
[INFO] [stdout] 1388 |                         this.exec_stmt(stmt).await;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1388 |                         let _ = this.exec_stmt(stmt).await;
[INFO] [stdout]      |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]    --> src/builtins.rs:152:9
[INFO] [stdout]     |
[INFO] [stdout] 152 | /         ctx.list_vars::<()>(scope, |name, var| {
[INFO] [stdout] 153 | |             if args.attr.export && !var.export || args.attr.unexport && var.export {
[INFO] [stdout] 154 | |                 return ControlFlow::Continue(());
[INFO] [stdout] ...   |
[INFO] [stdout] 168 | |             ControlFlow::Continue(())
[INFO] [stdout] 169 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |         let _ = ctx.list_vars::<()>(scope, |name, var| {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]    --> src/builtins.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         ctx.list_funcs::<()>(|name, _cmd| {
[INFO] [stdout] 326 | |             if args.all || !name.starts_with("_") {
[INFO] [stdout] 327 | |                 writeln!(buf, "{name}").unwrap();
[INFO] [stdout] ...   |
[INFO] [stdout] 330 | |         })
[INFO] [stdout] 331 | |         .await;
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let _ = ctx.list_funcs::<()>(|name, _cmd| {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]    --> src/command.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |             subctx.exec_stmt(&self.0.stmt).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 226 |             let _ = subctx.exec_stmt(&self.0.stmt).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ghoti-exec` (lib test) due to 15 previous errors; 6 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |           ensure!(rbracket_pos + 1 == args.len(), "must have ']' at last");
[INFO] [stdout]    |           ---------------------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |           ensure!(rbracket_pos == args.len(), "must not have ']'");
[INFO] [stdout]    |           -------------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |       ensure!(tail.is_none(), "unexpected tail {tail:?}");
[INFO] [stdout]    |       --------------------------------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]   --> src/builtins.rs:14:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | / macro_rules! bail {
[INFO] [stdout] 13 | |     ($($msg:tt)+) => {
[INFO] [stdout] 14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]    | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 | |     };
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/builtins/test.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |               ensure!(next == Some(")"), "expecting ')' but got {next:?}");
[INFO] [stdout]    |               ------------------------------------------------------------ in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | macro_rules! bail {
[INFO] [stdout]  13 |     ($($msg:tt)+) => {
[INFO] [stdout]  14 |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/builtins/test.rs:103:52
[INFO] [stdout]     |
[INFO] [stdout] 103 |         _ if fst == ")" || fst.starts_with('-') => bail!("invalid string operand {fst:?}"),
[INFO] [stdout]     |                                                    --------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | macro_rules! bail {
[INFO] [stdout]  13 |     ($($msg:tt)+) => {
[INFO] [stdout]  14 |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/builtins/test.rs:117:23
[INFO] [stdout]     |
[INFO] [stdout] 117 |                 op => bail!("expecting a binary op but got {op:?}"),
[INFO] [stdout]     |                       --------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/builtins/test.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 | /             ensure!(
[INFO] [stdout] 123 | |                 !["(", "!", ")"].contains(&snd) && !snd.starts_with('-'),
[INFO] [stdout] 124 | |                 "invalid string operand {snd:?}",
[INFO] [stdout] 125 | |             );
[INFO] [stdout]     | |_____________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 113 | /         ensure!(
[INFO] [stdout] 114 | |             !args.attr.export && !args.attr.unexport,
[INFO] [stdout] 115 | |             "--export or --unexport can only be used for setting or listing variables",
[INFO] [stdout] 116 | |         );
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 122 |               ensure!(scope == VarScope::Auto, "TODO");
[INFO] [stdout]     |               ---------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 141 | /         ensure!(
[INFO] [stdout] 142 | |             !ctx.has_special_var(name),
[INFO] [stdout] 143 | |             "cannot modify special variable: {name:?}",
[INFO] [stdout] 144 | |         );
[INFO] [stdout]     | |_________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 187 | /     ensure!(
[INFO] [stdout] 188 | |         !(args.names && args.query),
[INFO] [stdout] 189 | |         "--names and --query are mutually exclusive"
[INFO] [stdout] 190 | |     );
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 201 |           ensure!(!args.args.is_empty(), "missing builtin name");
[INFO] [stdout]     |           ------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 299 | /     ensure!(
[INFO] [stdout] 300 | |         args.erase as u8 + args.query as u8 <= 1,
[INFO] [stdout] 301 | |         "--erase and --query are mutually exclusive",
[INFO] [stdout] 302 | |     );
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 303 | /     ensure!(
[INFO] [stdout] 304 | |         !args.all || args.funcs.is_empty(),
[INFO] [stdout] 305 | |         "--all can only be used without positional arguments"
[INFO] [stdout] 306 | |     );
[INFO] [stdout]     | |_____- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Error`
[INFO] [stdout]    --> src/builtins.rs:14:20
[INFO] [stdout]     |
[INFO] [stdout]  12 | / macro_rules! bail {
[INFO] [stdout]  13 | |     ($($msg:tt)+) => {
[INFO] [stdout]  14 | |         return Err(crate::Error::Custom(format!($($msg)+)).into())
[INFO] [stdout]     | |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  15 | |     };
[INFO] [stdout]  16 | | }
[INFO] [stdout]     | |_- this error originates in the macro `bail` which comes from the expansion of the macro `ensure`
[INFO] [stdout] ...
[INFO] [stdout] 505 |       ensure!(!unescape, "TODO");
[INFO] [stdout]     |       -------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<Error as Into<Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]     --> src/lib.rs:1094:21
[INFO] [stdout]      |
[INFO] [stdout] 1094 |                     ctx.exec_stmt(stmt).await;
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1094 |                     let _ = ctx.exec_stmt(stmt).await;
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]     --> src/lib.rs:1238:13
[INFO] [stdout]      |
[INFO] [stdout] 1238 | /             self.list_vars::<()>(VarScope::Auto, |name, var| {
[INFO] [stdout] 1239 | |                 if var.export {
[INFO] [stdout] 1240 | |                     builder.env(name, var.value.join(" "));
[INFO] [stdout] ...    |
[INFO] [stdout] 1243 | |             });
[INFO] [stdout]      | |______________^
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1238 |             let _ = self.list_vars::<()>(VarScope::Auto, |name, var| {
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]     --> src/lib.rs:1388:25
[INFO] [stdout]      |
[INFO] [stdout] 1388 |                         this.exec_stmt(stmt).await;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1388 |                         let _ = this.exec_stmt(stmt).await;
[INFO] [stdout]      |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]    --> src/builtins.rs:152:9
[INFO] [stdout]     |
[INFO] [stdout] 152 | /         ctx.list_vars::<()>(scope, |name, var| {
[INFO] [stdout] 153 | |             if args.attr.export && !var.export || args.attr.unexport && var.export {
[INFO] [stdout] 154 | |                 return ControlFlow::Continue(());
[INFO] [stdout] ...   |
[INFO] [stdout] 168 | |             ControlFlow::Continue(())
[INFO] [stdout] 169 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |         let _ = ctx.list_vars::<()>(scope, |name, var| {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]    --> src/builtins.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 | /         ctx.list_funcs::<()>(|name, _cmd| {
[INFO] [stdout] 326 | |             if args.all || !name.starts_with("_") {
[INFO] [stdout] 327 | |                 writeln!(buf, "{name}").unwrap();
[INFO] [stdout] ...   |
[INFO] [stdout] 330 | |         })
[INFO] [stdout] 331 | |         .await;
[INFO] [stdout]     | |______________^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let _ = ctx.list_funcs::<()>(|name, _cmd| {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `ControlFlow` that must be used
[INFO] [stdout]    --> src/command.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |             subctx.exec_stmt(&self.0.stmt).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 226 |             let _ = subctx.exec_stmt(&self.0.stmt).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ghoti-exec` (lib) due to 15 previous errors; 6 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb", kill_on_drop: false }`
[INFO] [stdout] 1835de56f9ec76a31f6cc765c9478b7f8e9fcdcec554bdd7528a6e72d4f38efb
