[INFO] cloning repository https://github.com/tanpero/Orama [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tanpero/Orama" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftanpero%2FOrama", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftanpero%2FOrama'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1e973132e0ac98f62e9817ed736ce9d179f17249 [INFO] building tanpero/Orama against master#c7f6aa2869acdbf014d094c6e427e554e160b6db for pr-146237-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftanpero%2FOrama" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/tanpero/Orama [INFO] finished tweaking git repo https://github.com/tanpero/Orama [INFO] tweaked toml for git repo https://github.com/tanpero/Orama written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/tanpero/Orama on toolchain c7f6aa2869acdbf014d094c6e427e554e160b6db [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c7f6aa2869acdbf014d094c6e427e554e160b6db" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/tanpero/Orama 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" "+c7f6aa2869acdbf014d094c6e427e554e160b6db" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded fd-lock v4.0.4 [INFO] [stderr] Downloaded pistoncore-window v1.0.0 [INFO] [stderr] Downloaded error-code v3.3.1 [INFO] [stderr] Downloaded piston2d-gfx_graphics v0.81.0 [INFO] [stderr] Downloaded pistoncore-event_loop v1.0.0 [INFO] [stderr] Downloaded interpolation v0.3.0 [INFO] [stderr] Downloaded piston v1.0.0 [INFO] [stderr] Downloaded pistoncore-glutin_window v0.72.0 [INFO] [stderr] Downloaded piston-gfx_texture v0.45.0 [INFO] [stderr] Downloaded piston_window v0.132.0 [INFO] [stderr] Downloaded spin_sleep v1.3.1 [INFO] [stderr] Downloaded rustyline v15.0.0 [INFO] [stderr] Downloaded piston2d-graphics v0.44.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+c7f6aa2869acdbf014d094c6e427e554e160b6db" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9c96ee5fbc493a3690cb43b15bd1b4ca51c8532cca28587c643a55bc0aebbb20 [INFO] running `Command { std: "docker" "start" "-a" "9c96ee5fbc493a3690cb43b15bd1b4ca51c8532cca28587c643a55bc0aebbb20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9c96ee5fbc493a3690cb43b15bd1b4ca51c8532cca28587c643a55bc0aebbb20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9c96ee5fbc493a3690cb43b15bd1b4ca51c8532cca28587c643a55bc0aebbb20", kill_on_drop: false }` [INFO] [stdout] 9c96ee5fbc493a3690cb43b15bd1b4ca51c8532cca28587c643a55bc0aebbb20 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+c7f6aa2869acdbf014d094c6e427e554e160b6db" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c5e15b6fa894497317d08eb7f9a8684242afb7b207312773d871459a4e857c30 [INFO] running `Command { std: "docker" "start" "-a" "c5e15b6fa894497317d08eb7f9a8684242afb7b207312773d871459a4e857c30", kill_on_drop: false }` [INFO] [stderr] Compiling xml-rs v0.8.25 [INFO] [stderr] Compiling libc v0.2.171 [INFO] [stderr] Compiling smallvec v1.14.0 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling libloading v0.8.6 [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Compiling miniz_oxide v0.8.5 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling bytemuck v1.22.0 [INFO] [stderr] Compiling dlib v0.5.2 [INFO] [stderr] Compiling anyhow v1.0.97 [INFO] [stderr] Compiling wayland-sys v0.29.5 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling flate2 v1.1.1 [INFO] [stderr] Compiling built v0.7.7 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling aligned-vec v0.5.0 [INFO] [stderr] Compiling wayland-scanner v0.29.5 [INFO] [stderr] Compiling gl_generator v0.14.0 [INFO] [stderr] Compiling png v0.17.16 [INFO] [stderr] Compiling rav1e v0.7.1 [INFO] [stderr] Compiling v_frame v0.3.8 [INFO] [stderr] Compiling rayon v1.10.0 [INFO] [stderr] Compiling xcursor v0.3.8 [INFO] [stderr] Compiling ttf-parser v0.25.1 [INFO] [stderr] Compiling tiny-skia-path v0.8.4 [INFO] [stderr] Compiling nix v0.24.3 [INFO] [stderr] Compiling wayland-client v0.29.5 [INFO] [stderr] Compiling wayland-protocols v0.29.5 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling nix v0.25.1 [INFO] [stderr] Compiling x11-dl v2.21.0 [INFO] [stderr] Compiling av1-grain v0.2.3 [INFO] [stderr] Compiling maybe-rayon v0.1.1 [INFO] [stderr] Compiling wayland-commons v0.29.5 [INFO] [stderr] Compiling owned_ttf_parser v0.25.0 [INFO] [stderr] Compiling memmap2 v0.5.10 [INFO] [stderr] Compiling glutin_egl_sys v0.5.1 [INFO] [stderr] Compiling glutin_glx_sys v0.4.0 [INFO] [stderr] Compiling itertools v0.12.1 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Compiling weezl v0.1.8 [INFO] [stderr] Compiling quick-error v2.0.1 [INFO] [stderr] Compiling imgref v1.11.0 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling bitstream-io v2.6.0 [INFO] [stderr] Compiling loop9 v0.1.5 [INFO] [stderr] Compiling gfx_core v0.9.2 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling profiling-procmacros v1.0.16 [INFO] [stderr] Compiling profiling v1.0.16 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling calloop v0.10.6 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Compiling wayland-cursor v0.29.5 [INFO] [stderr] Compiling ab_glyph v0.2.29 [INFO] [stderr] Compiling tiny-skia v0.8.4 [INFO] [stderr] Compiling winit v0.28.7 [INFO] [stderr] Compiling gl_generator v0.13.1 [INFO] [stderr] Compiling avif-serialize v0.8.3 [INFO] [stderr] Compiling half v2.5.0 [INFO] [stderr] Compiling getrandom v0.3.2 [INFO] [stderr] Compiling zerocopy v0.8.24 [INFO] [stderr] Compiling zune-core v0.4.12 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling rgb v0.8.50 [INFO] [stderr] Compiling jpeg-decoder v0.3.1 [INFO] [stderr] Compiling image-webp v0.2.1 [INFO] [stderr] Compiling gif v0.13.1 [INFO] [stderr] Compiling pistoncore-input v1.0.1 [INFO] [stderr] Compiling tiff v0.9.1 [INFO] [stderr] Compiling exr v1.73.0 [INFO] [stderr] Compiling zune-jpeg v0.4.14 [INFO] [stderr] Compiling gl v0.13.0 [INFO] [stderr] Compiling pistoncore-window v1.0.0 [INFO] [stderr] Compiling wayland-sys v0.30.1 [INFO] [stderr] Compiling mio v0.8.11 [INFO] [stderr] Compiling gfx_gl v0.6.1 [INFO] [stderr] Compiling qoi v0.4.1 [INFO] [stderr] Compiling instant v0.1.13 [INFO] [stderr] Compiling bitflags v2.9.0 [INFO] [stderr] Compiling rustix v1.0.5 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Compiling glutin v0.30.10 [INFO] [stderr] Compiling gfx v0.18.3 [INFO] [stderr] Compiling spin_sleep v1.3.1 [INFO] [stderr] Compiling interpolation v0.3.0 [INFO] [stderr] Compiling linux-raw-sys v0.9.3 [INFO] [stderr] Compiling piston2d-graphics v0.44.0 [INFO] [stderr] Compiling pistoncore-event_loop v1.0.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_core v0.9.3 [INFO] [stderr] Compiling ravif v0.11.11 [INFO] [stderr] Compiling nibble_vec v0.1.0 [INFO] [stderr] Compiling endian-type v0.1.2 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling radix_trie v0.2.1 [INFO] [stderr] Compiling gfx_device_gl v0.16.2 [INFO] [stderr] Compiling piston v1.0.0 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling unicode-width v0.2.0 [INFO] [stderr] Compiling rand v0.9.0 [INFO] [stderr] Compiling fd-lock v4.0.4 [INFO] [stderr] Compiling image v0.25.6 [INFO] [stderr] Compiling colored v3.0.0 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Compiling rustyline v15.0.0 [INFO] [stderr] Compiling smithay-client-toolkit v0.16.1 [INFO] [stderr] Compiling piston-gfx_texture v0.45.0 [INFO] [stderr] Compiling piston2d-gfx_graphics v0.81.0 [INFO] [stderr] Compiling sctk-adwaita v0.5.4 [INFO] [stderr] Compiling glutin-winit v0.3.0 [INFO] [stderr] Compiling pistoncore-glutin_window v0.72.0 [INFO] [stderr] Compiling piston_window v0.132.0 [INFO] [stderr] Compiling orama v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Parameter` [INFO] [stdout] --> src/parser/expr_parser.rs:1:43 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::ast::{BinaryOp, Expr, Literal, Parameter, UnaryOp}; [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 imports: `parse_if_expression`, `parse_match_expression`, and `parse_pattern` [INFO] [stdout] --> src/parser/mod.rs:172:31 [INFO] [stdout] | [INFO] [stdout] 172 | pub use control_flow_parser::{parse_if_expression, parse_match_expression, parse_pattern}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parse_handle` and `parse_perform` [INFO] [stdout] --> src/parser/mod.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | pub use effect_parser::{parse_handle, parse_perform}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parse_block_contents` [INFO] [stdout] --> src/parser/mod.rs:174:23 [INFO] [stdout] | [INFO] [stdout] 174 | pub use expr_parser::{parse_block_contents, parse_expression}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parse_empty_param_function` and `parse_parenthesized_expr_or_function` [INFO] [stdout] --> src/parser/mod.rs:175:27 [INFO] [stdout] | [INFO] [stdout] 175 | pub use function_parser::{parse_empty_param_function, parse_parenthesized_expr_or_function}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parse_array_literal`, `parse_index_access`, and `parse_object_literal` [INFO] [stdout] --> src/parser/mod.rs:176:26 [INFO] [stdout] | [INFO] [stdout] 176 | pub use literal_parser::{parse_array_literal, parse_index_access, parse_object_literal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `type_parser::parse_type_annotation` [INFO] [stdout] --> src/parser/mod.rs:177:9 [INFO] [stdout] | [INFO] [stdout] 177 | pub use type_parser::parse_type_annotation; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LeftBrace`, `LeftParen`, `RightBrace`, and `RightParen` [INFO] [stdout] --> src/repl.rs:9:31 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::token::TokenType::{LeftBrace, LeftParen, RightBrace, RightParen}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RuntimeResult` [INFO] [stdout] --> src/stdlib/file.rs:1:49 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::runtime::{Environment, RuntimeError, RuntimeResult, Value}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SeekFrom`, `Seek`, and `self` [INFO] [stdout] --> src/stdlib/file.rs:5:15 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::{self, Read, Seek, SeekFrom, Write}; [INFO] [stdout] | ^^^^ ^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::ast::TypeDefinition` [INFO] [stdout] --> src/typechecker/checker.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::ast::TypeDefinition; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BinaryOp`, `MatchCase`, `Parameter`, and `UnaryOp` [INFO] [stdout] --> src/typechecker/checker.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | BinaryOp, Expr, Literal, MatchCase, Parameter, Pattern, Stmt, TypeAnnotation, UnaryOp, [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/typechecker/stmt.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_annotation` [INFO] [stdout] --> src/evaluator/mod.rs:41:38 [INFO] [stdout] | [INFO] [stdout] 41 | Stmt::VariableDecl(name, type_annotation, expr) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_annotation` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/evaluator/mod.rs:226:43 [INFO] [stdout] | [INFO] [stdout] 226 | if let Expr::Call(callee, mut args) = right.as_ref().clone() { [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: `message` [INFO] [stdout] --> src/parser/mod.rs:127:54 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn consume(&mut self, token_type: TokenType, message: &str) -> Result<&Token, ParseError> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_ann` [INFO] [stdout] --> src/repl.rs:248:34 [INFO] [stdout] | [INFO] [stdout] 248 | Stmt::VariableDecl(name, type_ann, expr) => { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_ann` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/stdlib/file.rs:165:17 [INFO] [stdout] | [INFO] [stdout] 165 | let mut buffer = if size == usize::MAX { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/typechecker/checker.rs:241:13 [INFO] [stdout] | [INFO] [stdout] 114 | Stmt::FunctionDecl(name, params, body) => { [INFO] [stdout] | -------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 241 | Stmt::FunctionDecl(name, params, body) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/checker.rs:116:21 [INFO] [stdout] | [INFO] [stdout] 116 | let mut fn_env = self.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `p` [INFO] [stdout] --> src/typechecker/env.rs:34:23 [INFO] [stdout] | [INFO] [stdout] 34 | .map(|p| Type::Var(TypeVarId(0))) [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_p` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/expr.rs:332:13 [INFO] [stdout] | [INFO] [stdout] 332 | let mut block_env = self.checker.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/expr.rs:369:17 [INFO] [stdout] | [INFO] [stdout] 369 | let mut case_env = self.checker.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/expr.rs:409:32 [INFO] [stdout] | [INFO] [stdout] 409 | if let Err(e) = self.checker.unify(&arg_type, expected_type) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `elem_type` [INFO] [stdout] --> src/typechecker/pattern.rs:72:48 [INFO] [stdout] | [INFO] [stdout] 72 | ... if let Type::Array(elem_type) = args { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elem_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/typechecker/pattern.rs:74:38 [INFO] [stdout] | [INFO] [stdout] 74 | ... for (i, param) in params.iter().enumerate() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/typechecker/stmt.rs:71:30 [INFO] [stdout] | [INFO] [stdout] 71 | Stmt::EffectDecl(name, _, _) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/stmt.rs:90:13 [INFO] [stdout] | [INFO] [stdout] 90 | let mut fn_env = self.checker.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fields` [INFO] [stdout] --> src/typechecker/stmt.rs:179:36 [INFO] [stdout] | [INFO] [stdout] 179 | TypeDefinition::Record(fields) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_fields` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_params` [INFO] [stdout] --> src/typechecker/stmt.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | type_params: &Option>, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_params` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Perform` and `Handle` are never constructed [INFO] [stdout] --> src/ast.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Expr { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 24 | Perform(String, String, Vec), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 25 | // 代数效应处理 [INFO] [stdout] 26 | Handle(Box, Vec, Option>), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Access` is never constructed [INFO] [stdout] --> src/ast.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 43 | pub enum BinaryOp { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 57 | Access, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryOp` 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: variant `FunctionDecl` is never constructed [INFO] [stdout] --> src/ast.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 105 | pub enum Stmt { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 109 | FunctionDecl(String, Vec, Expr), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Stmt` 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: field `effect_handlers` is never read [INFO] [stdout] --> src/evaluator/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Evaluator { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 10 | environment: Rc>, [INFO] [stdout] 11 | effect_handlers: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/evaluator/mod.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl Evaluator { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `UnexpectedEOF` is never constructed [INFO] [stdout] --> src/parser/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum ParseError { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 24 | UnexpectedEOF, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `synchronize` is never used [INFO] [stdout] --> src/parser/mod.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 35 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn synchronize(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_function_type` is never used [INFO] [stdout] --> src/parser/type_parser.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | pub fn parse_function_type(parser: &mut Parser) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_perform` is never used [INFO] [stdout] --> src/parser/effect_parser.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn parse_perform(parser: &mut Parser) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_handle` is never used [INFO] [stdout] --> src/parser/effect_parser.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn parse_handle(parser: &mut Parser) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Effect` is never constructed [INFO] [stdout] --> src/runtime/mod.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum Value { [INFO] [stdout] | ----- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Effect(Effect), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Value` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `operations` are never read [INFO] [stdout] --> src/runtime/mod.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct Effect { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 36 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 37 | pub operations: HashMap, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Effect` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `assign` is never used [INFO] [stdout] --> src/runtime/mod.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl Environment { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn assign(&mut self, name: &str, value: Value) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `UnhandledEffect` is never constructed [INFO] [stdout] --> src/runtime/mod.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 95 | pub enum RuntimeError { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 103 | UnhandledEffect(String, String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RuntimeError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `typecheck` is never used [INFO] [stdout] --> src/typechecker/mod.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn typecheck(stmts: &[Stmt]) -> TypeResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_expr` is never used [INFO] [stdout] --> src/typechecker/mod.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn check_expr(expr: &Expr) -> TypeResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unify_var` and `instantiate_generic` are never used [INFO] [stdout] --> src/typechecker/checker.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl TypeChecker { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 309 | pub fn unify_var(&mut self, var_id: TypeVarId, ty: Type) -> TypeResult<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn instantiate_generic(&mut self, generic_type: &Type) -> Type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_recursive_type`, `mark_non_generic`, and `is_non_generic` are never used [INFO] [stdout] --> src/typechecker/env.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl TypeEnv { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn add_recursive_type(&mut self, name: String, type_params: Vec, type_def: Type) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn mark_non_generic(&mut self, var_id: TypeVarId) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn is_non_generic(&self, var_id: TypeVarId) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `TypeVariableEscape` and `UnknownType` are never constructed [INFO] [stdout] --> src/typechecker/error.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum TypeError { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | TypeVariableEscape, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | #[error("未知类型: {0}")] [INFO] [stdout] 16 | UnknownType(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_parent_variable_name` is never used [INFO] [stdout] --> src/typechecker/expr.rs:296:8 [INFO] [stdout] | [INFO] [stdout] 10 | impl<'a> ExprTypeChecker<'a> { [INFO] [stdout] | ---------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 296 | fn get_parent_variable_name(&self) -> Option<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `infer_function_decl` is never used [INFO] [stdout] --> src/typechecker/stmt.rs:83:8 [INFO] [stdout] | [INFO] [stdout] 11 | impl<'a> StmtTypeChecker<'a> { [INFO] [stdout] | ---------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 83 | fn infer_function_decl( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `compose` is never used [INFO] [stdout] --> src/typechecker/subst.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl TypeSubst { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn compose(&self, other: &TypeSubst) -> TypeSubst { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/typechecker/stmt.rs:115:38 [INFO] [stdout] | [INFO] [stdout] 115 | self.checker.env.add_var(name.clone().to_string(), fn_type); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` 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/typechecker/stmt.rs:137:38 [INFO] [stdout] | [INFO] [stdout] 137 | self.checker.env.add_var(name.clone().to_string(), var_type); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` 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/typechecker/stmt.rs:149:36 [INFO] [stdout] | [INFO] [stdout] 149 | let ty = Type::Generic(name.clone().to_string(), vec![]); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` 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/typechecker/stmt.rs:152:27 [INFO] [stdout] | [INFO] [stdout] 152 | .add_type(name.clone().to_string(), ty.clone()); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 49s [INFO] running `Command { std: "docker" "inspect" "c5e15b6fa894497317d08eb7f9a8684242afb7b207312773d871459a4e857c30", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c5e15b6fa894497317d08eb7f9a8684242afb7b207312773d871459a4e857c30", kill_on_drop: false }` [INFO] [stdout] c5e15b6fa894497317d08eb7f9a8684242afb7b207312773d871459a4e857c30 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+c7f6aa2869acdbf014d094c6e427e554e160b6db" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 31983397f49df15e55dae44cfa0a52b15acb5ffabca0c3df8a0766c0f2aacd20 [INFO] running `Command { std: "docker" "start" "-a" "31983397f49df15e55dae44cfa0a52b15acb5ffabca0c3df8a0766c0f2aacd20", kill_on_drop: false }` [INFO] [stderr] Compiling orama v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Parameter` [INFO] [stdout] --> src/parser/expr_parser.rs:1:43 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::ast::{BinaryOp, Expr, Literal, Parameter, UnaryOp}; [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 imports: `parse_if_expression`, `parse_match_expression`, and `parse_pattern` [INFO] [stdout] --> src/parser/mod.rs:172:31 [INFO] [stdout] | [INFO] [stdout] 172 | pub use control_flow_parser::{parse_if_expression, parse_match_expression, parse_pattern}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parse_handle` and `parse_perform` [INFO] [stdout] --> src/parser/mod.rs:173:25 [INFO] [stdout] | [INFO] [stdout] 173 | pub use effect_parser::{parse_handle, parse_perform}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parse_block_contents` [INFO] [stdout] --> src/parser/mod.rs:174:23 [INFO] [stdout] | [INFO] [stdout] 174 | pub use expr_parser::{parse_block_contents, parse_expression}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parse_empty_param_function` and `parse_parenthesized_expr_or_function` [INFO] [stdout] --> src/parser/mod.rs:175:27 [INFO] [stdout] | [INFO] [stdout] 175 | pub use function_parser::{parse_empty_param_function, parse_parenthesized_expr_or_function}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `parse_array_literal`, `parse_index_access`, and `parse_object_literal` [INFO] [stdout] --> src/parser/mod.rs:176:26 [INFO] [stdout] | [INFO] [stdout] 176 | pub use literal_parser::{parse_array_literal, parse_index_access, parse_object_literal}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `type_parser::parse_type_annotation` [INFO] [stdout] --> src/parser/mod.rs:177:9 [INFO] [stdout] | [INFO] [stdout] 177 | pub use type_parser::parse_type_annotation; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LeftBrace`, `LeftParen`, `RightBrace`, and `RightParen` [INFO] [stdout] --> src/repl.rs:9:31 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::token::TokenType::{LeftBrace, LeftParen, RightBrace, RightParen}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `RuntimeResult` [INFO] [stdout] --> src/stdlib/file.rs:1:49 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::runtime::{Environment, RuntimeError, RuntimeResult, Value}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SeekFrom`, `Seek`, and `self` [INFO] [stdout] --> src/stdlib/file.rs:5:15 [INFO] [stdout] | [INFO] [stdout] 5 | use std::io::{self, Read, Seek, SeekFrom, Write}; [INFO] [stdout] | ^^^^ ^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::ast::TypeDefinition` [INFO] [stdout] --> src/typechecker/checker.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::ast::TypeDefinition; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BinaryOp`, `MatchCase`, `Parameter`, and `UnaryOp` [INFO] [stdout] --> src/typechecker/checker.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | BinaryOp, Expr, Literal, MatchCase, Parameter, Pattern, Stmt, TypeAnnotation, UnaryOp, [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/typechecker/stmt.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/tests/mod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_annotation` [INFO] [stdout] --> src/evaluator/mod.rs:41:38 [INFO] [stdout] | [INFO] [stdout] 41 | Stmt::VariableDecl(name, type_annotation, expr) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_annotation` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/evaluator/mod.rs:226:43 [INFO] [stdout] | [INFO] [stdout] 226 | if let Expr::Call(callee, mut args) = right.as_ref().clone() { [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: `message` [INFO] [stdout] --> src/parser/mod.rs:127:54 [INFO] [stdout] | [INFO] [stdout] 127 | pub fn consume(&mut self, token_type: TokenType, message: &str) -> Result<&Token, ParseError> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_ann` [INFO] [stdout] --> src/repl.rs:248:34 [INFO] [stdout] | [INFO] [stdout] 248 | Stmt::VariableDecl(name, type_ann, expr) => { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_ann` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/stdlib/file.rs:165:17 [INFO] [stdout] | [INFO] [stdout] 165 | let mut buffer = if size == usize::MAX { [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/typechecker/checker.rs:241:13 [INFO] [stdout] | [INFO] [stdout] 114 | Stmt::FunctionDecl(name, params, body) => { [INFO] [stdout] | -------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 241 | Stmt::FunctionDecl(name, params, body) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/checker.rs:116:21 [INFO] [stdout] | [INFO] [stdout] 116 | let mut fn_env = self.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `p` [INFO] [stdout] --> src/typechecker/env.rs:34:23 [INFO] [stdout] | [INFO] [stdout] 34 | .map(|p| Type::Var(TypeVarId(0))) [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_p` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/expr.rs:332:13 [INFO] [stdout] | [INFO] [stdout] 332 | let mut block_env = self.checker.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/expr.rs:369:17 [INFO] [stdout] | [INFO] [stdout] 369 | let mut case_env = self.checker.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/expr.rs:409:32 [INFO] [stdout] | [INFO] [stdout] 409 | if let Err(e) = self.checker.unify(&arg_type, expected_type) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `elem_type` [INFO] [stdout] --> src/typechecker/pattern.rs:72:48 [INFO] [stdout] | [INFO] [stdout] 72 | ... if let Type::Array(elem_type) = args { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elem_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/typechecker/pattern.rs:74:38 [INFO] [stdout] | [INFO] [stdout] 74 | ... for (i, param) in params.iter().enumerate() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/typechecker/stmt.rs:71:30 [INFO] [stdout] | [INFO] [stdout] 71 | Stmt::EffectDecl(name, _, _) => { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/typechecker/stmt.rs:90:13 [INFO] [stdout] | [INFO] [stdout] 90 | let mut fn_env = self.checker.env.clone_with_non_generic(); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fields` [INFO] [stdout] --> src/typechecker/stmt.rs:179:36 [INFO] [stdout] | [INFO] [stdout] 179 | TypeDefinition::Record(fields) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_fields` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `type_params` [INFO] [stdout] --> src/typechecker/stmt.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | type_params: &Option>, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_params` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Perform` and `Handle` are never constructed [INFO] [stdout] --> src/ast.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Expr { [INFO] [stdout] | ---- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 24 | Perform(String, String, Vec), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 25 | // 代数效应处理 [INFO] [stdout] 26 | Handle(Box, Vec, Option>), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Expr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Access` is never constructed [INFO] [stdout] --> src/ast.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 43 | pub enum BinaryOp { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 57 | Access, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BinaryOp` 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: variant `FunctionDecl` is never constructed [INFO] [stdout] --> src/ast.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 105 | pub enum Stmt { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 109 | FunctionDecl(String, Vec, Expr), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Stmt` 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: field `effect_handlers` is never read [INFO] [stdout] --> src/evaluator/mod.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct Evaluator { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 10 | environment: Rc>, [INFO] [stdout] 11 | effect_handlers: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/evaluator/mod.rs:15:12 [INFO] [stdout] | [INFO] [stdout] 14 | impl Evaluator { [INFO] [stdout] | -------------- associated function in this implementation [INFO] [stdout] 15 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `UnexpectedEOF` is never constructed [INFO] [stdout] --> src/parser/mod.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum ParseError { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 24 | UnexpectedEOF, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `synchronize` is never used [INFO] [stdout] --> src/parser/mod.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 35 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn synchronize(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_function_type` is never used [INFO] [stdout] --> src/parser/type_parser.rs:120:8 [INFO] [stdout] | [INFO] [stdout] 120 | pub fn parse_function_type(parser: &mut Parser) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_perform` is never used [INFO] [stdout] --> src/parser/effect_parser.rs:6:8 [INFO] [stdout] | [INFO] [stdout] 6 | pub fn parse_perform(parser: &mut Parser) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_handle` is never used [INFO] [stdout] --> src/parser/effect_parser.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn parse_handle(parser: &mut Parser) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Effect` is never constructed [INFO] [stdout] --> src/runtime/mod.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum Value { [INFO] [stdout] | ----- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | Effect(Effect), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Value` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `operations` are never read [INFO] [stdout] --> src/runtime/mod.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 35 | pub struct Effect { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 36 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 37 | pub operations: HashMap, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Effect` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `assign` is never used [INFO] [stdout] --> src/runtime/mod.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl Environment { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn assign(&mut self, name: &str, value: Value) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `UnhandledEffect` is never constructed [INFO] [stdout] --> src/runtime/mod.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 95 | pub enum RuntimeError { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 103 | UnhandledEffect(String, String), [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RuntimeError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `typecheck` is never used [INFO] [stdout] --> src/typechecker/mod.rs:18:8 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn typecheck(stmts: &[Stmt]) -> TypeResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `check_expr` is never used [INFO] [stdout] --> src/typechecker/mod.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn check_expr(expr: &Expr) -> TypeResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `unify_var` and `instantiate_generic` are never used [INFO] [stdout] --> src/typechecker/checker.rs:309:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl TypeChecker { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 309 | pub fn unify_var(&mut self, var_id: TypeVarId, ty: Type) -> TypeResult<()> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn instantiate_generic(&mut self, generic_type: &Type) -> Type { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_recursive_type`, `mark_non_generic`, and `is_non_generic` are never used [INFO] [stdout] --> src/typechecker/env.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl TypeEnv { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn add_recursive_type(&mut self, name: String, type_params: Vec, type_def: Type) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn mark_non_generic(&mut self, var_id: TypeVarId) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn is_non_generic(&self, var_id: TypeVarId) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `TypeVariableEscape` and `UnknownType` are never constructed [INFO] [stdout] --> src/typechecker/error.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum TypeError { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | TypeVariableEscape, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 15 | #[error("未知类型: {0}")] [INFO] [stdout] 16 | UnknownType(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_parent_variable_name` is never used [INFO] [stdout] --> src/typechecker/expr.rs:296:8 [INFO] [stdout] | [INFO] [stdout] 10 | impl<'a> ExprTypeChecker<'a> { [INFO] [stdout] | ---------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 296 | fn get_parent_variable_name(&self) -> Option<&String> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `infer_function_decl` is never used [INFO] [stdout] --> src/typechecker/stmt.rs:83:8 [INFO] [stdout] | [INFO] [stdout] 11 | impl<'a> StmtTypeChecker<'a> { [INFO] [stdout] | ---------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 83 | fn infer_function_decl( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `compose` is never used [INFO] [stdout] --> src/typechecker/subst.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 8 | impl TypeSubst { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn compose(&self, other: &TypeSubst) -> TypeSubst { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `execute_file` is never used [INFO] [stdout] --> src/tests/mod.rs:29:4 [INFO] [stdout] | [INFO] [stdout] 29 | fn execute_file(filename: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing [INFO] [stdout] --> src/typechecker/stmt.rs:115:38 [INFO] [stdout] | [INFO] [stdout] 115 | self.checker.env.add_var(name.clone().to_string(), fn_type); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` 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/typechecker/stmt.rs:137:38 [INFO] [stdout] | [INFO] [stdout] 137 | self.checker.env.add_var(name.clone().to_string(), var_type); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` 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/typechecker/stmt.rs:149:36 [INFO] [stdout] | [INFO] [stdout] 149 | let ty = Type::Generic(name.clone().to_string(), vec![]); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` 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/typechecker/stmt.rs:152:27 [INFO] [stdout] | [INFO] [stdout] 152 | .add_type(name.clone().to_string(), ty.clone()); [INFO] [stdout] | ^^^^^^^^ help: remove this redundant call [INFO] [stdout] | [INFO] [stdout] = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 4.13s [INFO] running `Command { std: "docker" "inspect" "31983397f49df15e55dae44cfa0a52b15acb5ffabca0c3df8a0766c0f2aacd20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "31983397f49df15e55dae44cfa0a52b15acb5ffabca0c3df8a0766c0f2aacd20", kill_on_drop: false }` [INFO] [stdout] 31983397f49df15e55dae44cfa0a52b15acb5ffabca0c3df8a0766c0f2aacd20