[INFO] cloning repository https://github.com/dhjs0000/EOL
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dhjs0000/EOL" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdhjs0000%2FEOL", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdhjs0000%2FEOL'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 42f1b1fd2420b637c27e9a60eedcda49ca793118
[INFO] checking dhjs0000/EOL against master#b2f1ccf524a3a4cf9c34545167cc23b659cf1cbd for pr-155499
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdhjs0000%2FEOL" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  54% (1405/2594)
Updating files:  55% (1427/2594)
Updating files:  56% (1453/2594)
Updating files:  57% (1479/2594)
Updating files:  58% (1505/2594)
Updating files:  59% (1531/2594)
Updating files:  60% (1557/2594)
Updating files:  61% (1583/2594)
Updating files:  62% (1609/2594)
Updating files:  63% (1635/2594)
Updating files:  64% (1661/2594)
Updating files:  65% (1687/2594)
Updating files:  66% (1713/2594)
Updating files:  67% (1738/2594)
Updating files:  68% (1764/2594)
Updating files:  69% (1790/2594)
Updating files:  70% (1816/2594)
Updating files:  71% (1842/2594)
Updating files:  72% (1868/2594)
Updating files:  73% (1894/2594)
Updating files:  74% (1920/2594)
Updating files:  75% (1946/2594)
Updating files:  76% (1972/2594)
Updating files:  77% (1998/2594)
Updating files:  78% (2024/2594)
Updating files:  79% (2050/2594)
Updating files:  80% (2076/2594)
Updating files:  81% (2102/2594)
Updating files:  81% (2107/2594)
Updating files:  81% (2108/2594)
Updating files:  82% (2128/2594)
Updating files:  83% (2154/2594)
Updating files:  84% (2179/2594)
Updating files:  85% (2205/2594)
Updating files:  86% (2231/2594)
Updating files:  87% (2257/2594)
Updating files:  88% (2283/2594)
Updating files:  89% (2309/2594)
Updating files:  90% (2335/2594)
Updating files:  91% (2361/2594)
Updating files:  92% (2387/2594)
Updating files:  93% (2413/2594)
Updating files:  93% (2427/2594)
Updating files:  94% (2439/2594)
Updating files:  95% (2465/2594)
Updating files:  96% (2491/2594)
Updating files:  97% (2517/2594)
Updating files:  98% (2543/2594)
Updating files:  99% (2569/2594)
Updating files: 100% (2594/2594)
Updating files: 100% (2594/2594), done.
[INFO] removed /workspace/builds/worker-7-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/dhjs0000/EOL
[INFO] finished tweaking git repo https://github.com/dhjs0000/EOL
[INFO] tweaked toml for git repo https://github.com/dhjs0000/EOL written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dhjs0000/EOL on toolchain b2f1ccf524a3a4cf9c34545167cc23b659cf1cbd
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b2f1ccf524a3a4cf9c34545167cc23b659cf1cbd" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/dhjs0000/EOL 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" "+b2f1ccf524a3a4cf9c34545167cc23b659cf1cbd" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tower-lsp v0.20.0
[INFO] [stderr]   Downloaded lsp-types v0.94.1
[INFO] [stderr]   Downloaded beef v0.5.2
[INFO] [stderr]   Downloaded supports-hyperlinks v3.2.0
[INFO] [stderr]   Downloaded logos-derive v0.15.1
[INFO] [stderr]   Downloaded auto_impl v1.3.0
[INFO] [stderr]   Downloaded miette-derive v7.6.0
[INFO] [stderr]   Downloaded logos-codegen v0.15.1
[INFO] [stderr]   Downloaded owo-colors v4.3.0
[INFO] [stderr]   Downloaded tower-lsp-macros v0.9.0
[INFO] [stderr]   Downloaded miette v7.6.0
[INFO] [stderr]   Downloaded logos v0.15.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b2f1ccf524a3a4cf9c34545167cc23b659cf1cbd" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] afdc63b2587a859e81936dd277632686293374f4c4b96623b33a8e79cc2b1ec0
[INFO] running `Command { std: "docker" "start" "-a" "afdc63b2587a859e81936dd277632686293374f4c4b96623b33a8e79cc2b1ec0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "afdc63b2587a859e81936dd277632686293374f4c4b96623b33a8e79cc2b1ec0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "afdc63b2587a859e81936dd277632686293374f4c4b96623b33a8e79cc2b1ec0", kill_on_drop: false }`
[INFO] [stdout] afdc63b2587a859e81936dd277632686293374f4c4b96623b33a8e79cc2b1ec0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b2f1ccf524a3a4cf9c34545167cc23b659cf1cbd" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] be0c253cfcb2108885020177bd1a73f9645deab622e56daba1765bcfe655f517
[INFO] running `Command { std: "docker" "start" "-a" "be0c253cfcb2108885020177bd1a73f9645deab622e56daba1765bcfe655f517", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling wayland-sys v0.31.10
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]     Checking scoped-tls v1.0.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking dlib v0.5.3
[INFO] [stderr]    Compiling zerocopy v0.8.42
[INFO] [stderr]    Compiling wayland-client v0.31.13
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling khronos_api v3.1.0
[INFO] [stderr]    Compiling quick-xml v0.39.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling winnow v1.0.0
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]    Compiling wayland-backend v0.3.14
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.9
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling toml_datetime v1.0.1+spec-1.1.0
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling toml_parser v1.0.10+spec-1.1.0
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]    Compiling toml_edit v0.25.5+spec-1.1.0
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking epaint_default_fonts v0.29.1
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking as-raw-xcb-connection v1.0.1
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]    Compiling siphasher v1.0.2
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking endi v1.1.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking wayland-protocols v0.32.11
[INFO] [stderr]     Checking wayland-cursor v0.31.13
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking emath v0.29.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking ecolor v0.29.1
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]     Checking epaint v0.29.1
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]     Checking egui v0.29.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling logos-codegen v0.15.1
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking zvariant v4.2.0
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking regex-syntax v0.8.9
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling mime_guess2 v2.3.1
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.11
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.11
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.11
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking object v0.37.3
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking rustc-demangle v0.1.27
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling owo-colors v4.3.0
[INFO] [stderr]    Compiling beef v0.5.2
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking pin-project v1.1.11
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking webbrowser v1.2.0
[INFO] [stderr]    Compiling enum-map-derive v0.17.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]    Compiling rfd v0.14.1
[INFO] [stderr]     Checking unicode-linebreak v0.1.5
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]     Checking glow v0.14.2
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking is_ci v1.2.0
[INFO] [stderr]     Checking supports-color v3.0.2
[INFO] [stderr]     Checking textwrap v0.16.2
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking lsp-types v0.94.1
[INFO] [stderr]    Compiling logos-derive v0.15.1
[INFO] [stderr]     Checking backtrace-ext v0.2.1
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking enum-map v2.7.3
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking env_filter v1.0.0
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking egui-winit v0.29.1
[INFO] [stderr]     Checking egui_glow v0.29.1
[INFO] [stderr]    Compiling tower-lsp-macros v0.9.0
[INFO] [stderr]    Compiling auto_impl v1.3.0
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]    Compiling miette-derive v7.6.0
[INFO] [stderr]     Checking terminal_size v0.4.3
[INFO] [stderr]    Compiling cavvy v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking jiff v0.2.23
[INFO] [stderr]     Checking supports-hyperlinks v3.2.0
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking ashpd v0.8.1
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking supports-unicode v3.0.0
[INFO] [stderr]     Checking egui_extras v0.29.1
[INFO] [stderr]     Checking logos v0.15.1
[INFO] [stderr] warning: cavvy@0.5.0: Copied Linux toolchain (LLVM Linux binaries) to /opt/rustwide/target/debug
[INFO] [stderr] warning: cavvy@0.5.0: Copied examples and caylibs directories to /opt/rustwide/target/debug
[INFO] [stderr]     Checking miette v7.6.0
[INFO] [stderr]     Checking eframe v0.29.1
[INFO] [stderr]     Checking env_logger v0.11.9
[INFO] [stderr]     Checking tower-lsp v0.20.0
[INFO] [stdout] warning: unused imports: `Diagnostic` and `NamedSource`
[INFO] [stdout]  --> src/error.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use miette::{Diagnostic, NamedSource, SourceSpan};
[INFO] [stdout]   |              ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/error.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `cayError` should have an upper camel case name
[INFO] [stdout]  --> src/error.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum cayError {
[INFO] [stdout]   |          ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `CayError`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `cayResult` should have an upper camel case name
[INFO] [stdout]   --> src/error.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub type cayResult<T> = Result<T, cayError>;
[INFO] [stdout]    |          ^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `CayResult`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/diagnostic.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClassInfo` and `MethodInfo`
[INFO] [stdout]  --> src/ast.rs:1:41
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::types::{Type, ParameterInfo, ClassInfo, MethodInfo};
[INFO] [stdout]   |                                         ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SourceSpan`
[INFO] [stdout]  --> src/lexer/mod.rs:4:88
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::diagnostic::{Diagnostic, DiagnosticCollector, ErrorCodes, CompilationPhase, SourceSpan, FixSuggestion};
[INFO] [stdout]   |                                                                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InterfaceInfo`
[INFO] [stdout]  --> src/parser/classes.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::{Type, ParameterInfo, InterfaceInfo};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::SourceLocation`
[INFO] [stdout]  --> src/parser/classes.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::error::SourceLocation;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `is_primitive_type_token`
[INFO] [stdout]  --> src/parser/statements.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::types::{parse_type, is_primitive_type_token};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lambda::*`
[INFO] [stdout]   --> src/parser/expressions/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use lambda::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenWithLocation`
[INFO] [stdout]  --> src/parser/utils.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::lexer::{Token, TokenWithLocation};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DiagnosticCollector`
[INFO] [stdout]  --> src/parser/utils.rs:7:37
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::diagnostic::{Diagnostic, DiagnosticCollector, ErrorCodes, CompilationPhase, FixSuggestion};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClassInfo`, `FieldInfo`, `MethodInfo`, `ParameterInfo`, and `Type`
[INFO] [stdout]  --> src/semantic/analyzer.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::{Type, ParameterInfo, ClassInfo, MethodInfo, FieldInfo, TypeRegistry};
[INFO] [stdout]   |                    ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SemanticSymbolInfo`
[INFO] [stdout]  --> src/semantic/analyzer.rs:6:48
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::symbol_table::{SemanticSymbolTable, SemanticSymbolInfo};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MethodDecl`
[INFO] [stdout]  --> src/semantic/class_analysis.rs:3:50
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::ast::{Program, ClassMember, Modifier, MethodDecl};
[INFO] [stdout]   |                                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParameterInfo`
[INFO] [stdout]  --> src/semantic/type_check.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::{Type, ParameterInfo};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `semantic_error`
[INFO] [stdout]  --> src/semantic/type_check.rs:5:31
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::error::{cayResult, semantic_error};
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::codegen::context::IRGenerator`
[INFO] [stdout]  --> src/codegen/allocator.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::codegen::context::IRGenerator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::Type`
[INFO] [stdout]  --> src/codegen/allocator.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `block::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use block::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `var_decl::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use var_decl::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `return_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use return_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `if_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use if_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `loops::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use loops::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `switch_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use switch_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jump_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use jump_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scope_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use scope_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `statement::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use statement::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/rcpl/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::constant_pool::Constant`
[INFO] [stdout]    --> src/bytecode/jit.rs:298:13
[INFO] [stdout]     |
[INFO] [stdout] 298 |         use super::constant_pool::Constant;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/idle/editor.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Diagnostic` and `NamedSource`
[INFO] [stdout]  --> src/error.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | use miette::{Diagnostic, NamedSource, SourceSpan};
[INFO] [stdout]   |              ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/error.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `cayError` should have an upper camel case name
[INFO] [stdout]  --> src/error.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum cayError {
[INFO] [stdout]   |          ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `CayError`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `cayResult` should have an upper camel case name
[INFO] [stdout]   --> src/error.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub type cayResult<T> = Result<T, cayError>;
[INFO] [stdout]    |          ^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `CayResult`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/diagnostic.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClassInfo` and `MethodInfo`
[INFO] [stdout]  --> src/ast.rs:1:41
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::types::{Type, ParameterInfo, ClassInfo, MethodInfo};
[INFO] [stdout]   |                                         ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SourceSpan`
[INFO] [stdout]  --> src/lexer/mod.rs:4:88
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::diagnostic::{Diagnostic, DiagnosticCollector, ErrorCodes, CompilationPhase, SourceSpan, FixSuggestion};
[INFO] [stdout]   |                                                                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InterfaceInfo`
[INFO] [stdout]  --> src/parser/classes.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::{Type, ParameterInfo, InterfaceInfo};
[INFO] [stdout]   |                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::SourceLocation`
[INFO] [stdout]  --> src/parser/classes.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::error::SourceLocation;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `is_primitive_type_token`
[INFO] [stdout]  --> src/parser/statements.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::types::{parse_type, is_primitive_type_token};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lambda::*`
[INFO] [stdout]   --> src/parser/expressions/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use lambda::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TokenWithLocation`
[INFO] [stdout]  --> src/parser/utils.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::lexer::{Token, TokenWithLocation};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DiagnosticCollector`
[INFO] [stdout]  --> src/parser/utils.rs:7:37
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::diagnostic::{Diagnostic, DiagnosticCollector, ErrorCodes, CompilationPhase, FixSuggestion};
[INFO] [stdout]   |                                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClassInfo`, `FieldInfo`, `MethodInfo`, `ParameterInfo`, and `Type`
[INFO] [stdout]  --> src/semantic/analyzer.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::{Type, ParameterInfo, ClassInfo, MethodInfo, FieldInfo, TypeRegistry};
[INFO] [stdout]   |                    ^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SemanticSymbolInfo`
[INFO] [stdout]  --> src/semantic/analyzer.rs:6:48
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::symbol_table::{SemanticSymbolTable, SemanticSymbolInfo};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MethodDecl`
[INFO] [stdout]  --> src/semantic/class_analysis.rs:3:50
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::ast::{Program, ClassMember, Modifier, MethodDecl};
[INFO] [stdout]   |                                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ParameterInfo`
[INFO] [stdout]  --> src/semantic/type_check.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::{Type, ParameterInfo};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `semantic_error`
[INFO] [stdout]  --> src/semantic/type_check.rs:5:31
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::error::{cayResult, semantic_error};
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::codegen::context::IRGenerator`
[INFO] [stdout]  --> src/codegen/allocator.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::codegen::context::IRGenerator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::Type`
[INFO] [stdout]  --> src/codegen/allocator.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::Type;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/codegen/statements/scope_stmt.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `block::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use block::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `var_decl::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use var_decl::*;
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `return_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use return_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `if_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use if_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `loops::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use loops::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `switch_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use switch_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jump_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use jump_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scope_stmt::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use scope_stmt::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `statement::*`
[INFO] [stdout]   --> src/codegen/statements/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use statement::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/rcpl/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::constant_pool::Constant`
[INFO] [stdout]    --> src/bytecode/jit.rs:298:13
[INFO] [stdout]     |
[INFO] [stdout] 298 |         use super::constant_pool::Constant;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/idle/editor.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Hasher`
[INFO] [stdout]  --> src/ast.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::hash::{Hash, Hasher};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line_num`
[INFO] [stdout]    --> src/preprocessor/mod.rs:685:48
[INFO] [stdout]     |
[INFO] [stdout] 685 |     fn parse_string_literal(&self, args: &str, line_num: usize, file_path: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_num`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_path`
[INFO] [stdout]    --> src/preprocessor/mod.rs:685:65
[INFO] [stdout]     |
[INFO] [stdout] 685 |     fn parse_string_literal(&self, args: &str, line_num: usize, file_path: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_path`
[INFO] [stdout]    --> src/preprocessor/mod.rs:760:48
[INFO] [stdout]     |
[INFO] [stdout] 760 |     fn handle_elif(&mut self, condition: bool, file_path: &str) -> cayResult<()> {
[INFO] [stdout]     |                                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Hasher`
[INFO] [stdout]  --> src/ast.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::hash::{Hash, Hasher};
[INFO] [stdout]   |                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lexer/mod.rs:674:9
[INFO] [stdout]     |
[INFO] [stdout] 674 |     let mut source_map = std::collections::HashMap::new();
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line_content`
[INFO] [stdout]    --> src/lexer/mod.rs:677:23
[INFO] [stdout]     |
[INFO] [stdout] 677 |     for (output_line, line_content) in lines.iter().enumerate() {
[INFO] [stdout]     |                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output_line_num`
[INFO] [stdout]    --> src/lexer/mod.rs:678:13
[INFO] [stdout]     |
[INFO] [stdout] 678 |         let output_line_num = output_line + 1; // 1-based
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_line_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `member_type`
[INFO] [stdout]    --> src/parser/classes.rs:209:13
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let member_type = parse_type(parser)?;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_member_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `member_name`
[INFO] [stdout]    --> src/parser/classes.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 | ...   let member_name = parser.consume_identifier("期望成员名\n提示: 类型后应跟字段名或方法名，例如: int count; 或 int calculate() ...
[INFO] [stdout]     |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_member_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/semantic/expr_inference.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |             _ => Ok(left_type),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/semantic/expr_inference.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             BinaryOp::Add => {
[INFO] [stdout]     |             ------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 137 |             BinaryOp::Sub | BinaryOp::Mul | BinaryOp::Div | BinaryOp::Mod => {
[INFO] [stdout]     |             ------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 166 |             BinaryOp::Eq | BinaryOp::Ne | BinaryOp::Lt | BinaryOp::Le | BinaryOp::Gt | BinaryOp::Ge => {
[INFO] [stdout]     |             --------------------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 169 |             BinaryOp::And | BinaryOp::Or => {
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 205 |             _ => Ok(left_type),
[INFO] [stdout]     |             ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/semantic/expr_inference.rs:719:13
[INFO] [stdout]     |
[INFO] [stdout] 708 |             (Type::Object(from_name), Type::Object(to_name)) => {
[INFO] [stdout]     |             ------------------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 719 |             (Type::Object(obj_name), Type::Object(_)) if obj_name == "Object" => true,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr_type`
[INFO] [stdout]     --> src/semantic/expr_inference.rs:1045:13
[INFO] [stdout]      |
[INFO] [stdout] 1045 |         let expr_type = self.infer_expr_type(&instanceof.expr)?;
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expr_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line_num`
[INFO] [stdout]    --> src/preprocessor/mod.rs:685:48
[INFO] [stdout]     |
[INFO] [stdout] 685 |     fn parse_string_literal(&self, args: &str, line_num: usize, file_path: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_num`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_path`
[INFO] [stdout]    --> src/preprocessor/mod.rs:685:65
[INFO] [stdout]     |
[INFO] [stdout] 685 |     fn parse_string_literal(&self, args: &str, line_num: usize, file_path: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_path`
[INFO] [stdout]    --> src/preprocessor/mod.rs:760:48
[INFO] [stdout]     |
[INFO] [stdout] 760 |     fn handle_elif(&mut self, condition: bool, file_path: &str) -> cayResult<()> {
[INFO] [stdout]     |                                                ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `escaped`
[INFO] [stdout]    --> src/codegen/context.rs:427:13
[INFO] [stdout]     |
[INFO] [stdout] 427 |         let escaped = s.replace("\\", "\\\\")
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_escaped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_type`
[INFO] [stdout]    --> src/codegen/expressions/binary.rs:376:65
[INFO] [stdout]     |
[INFO] [stdout] 376 |     fn generate_and(&mut self, left_type: &str, left_val: &str, right_type: &str, right_val: &str, temp: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_type`
[INFO] [stdout]    --> src/codegen/expressions/binary.rs:383:64
[INFO] [stdout]     |
[INFO] [stdout] 383 |     fn generate_or(&mut self, left_type: &str, left_val: &str, right_type: &str, right_val: &str, temp: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `has_varargs_array`
[INFO] [stdout]    --> src/codegen/expressions/call.rs:645:102
[INFO] [stdout]     |
[INFO] [stdout] 645 | ...gs: &[String], has_varargs_array: bool) -> Vec<crate::types::Type> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_varargs_array`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lexer/mod.rs:674:9
[INFO] [stdout]     |
[INFO] [stdout] 674 |     let mut source_map = std::collections::HashMap::new();
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line_content`
[INFO] [stdout]    --> src/lexer/mod.rs:677:23
[INFO] [stdout]     |
[INFO] [stdout] 677 |     for (output_line, line_content) in lines.iter().enumerate() {
[INFO] [stdout]     |                       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_line_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output_line_num`
[INFO] [stdout]    --> src/lexer/mod.rs:678:13
[INFO] [stdout]     |
[INFO] [stdout] 678 |         let output_line_num = output_line + 1; // 1-based
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output_line_num`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `member_type`
[INFO] [stdout]    --> src/parser/classes.rs:209:13
[INFO] [stdout]     |
[INFO] [stdout] 209 |         let member_type = parse_type(parser)?;
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_member_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `member_name`
[INFO] [stdout]    --> src/parser/classes.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 | ...   let member_name = parser.consume_identifier("期望成员名\n提示: 类型后应跟字段名或方法名，例如: int count; 或 int calculate() ...
[INFO] [stdout]     |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_member_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `obj_val`
[INFO] [stdout]   --> src/codegen/expressions/member.rs:73:28
[INFO] [stdout]    |
[INFO] [stdout] 73 |             let (obj_type, obj_val) = self.parse_typed_value(&obj);
[INFO] [stdout]    |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_obj_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]   --> src/codegen/statements/return_stmt.rs:28:25
[INFO] [stdout]    |
[INFO] [stdout] 28 |                     let align = self.get_type_align("float");
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]   --> src/codegen/statements/return_stmt.rs:33:25
[INFO] [stdout]    |
[INFO] [stdout] 33 |                     let align = self.get_type_align("double");
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/codegen/statements/switch_stmt.rs:49:18
[INFO] [stdout]    |
[INFO] [stdout] 49 |             let (value, label, case_idx) = &case_labels[i];
[INFO] [stdout]    |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `llvm_type`
[INFO] [stdout]    --> src/codegen/generator.rs:348:55
[INFO] [stdout]     |
[INFO] [stdout] 348 |     fn evaluate_const_initializer(&self, expr: &Expr, llvm_type: &str) -> Option<String> {
[INFO] [stdout]     |                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_llvm_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/semantic/expr_inference.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |             _ => Ok(left_type),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/semantic/expr_inference.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 112 |             BinaryOp::Add => {
[INFO] [stdout]     |             ------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 137 |             BinaryOp::Sub | BinaryOp::Mul | BinaryOp::Div | BinaryOp::Mod => {
[INFO] [stdout]     |             ------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 166 |             BinaryOp::Eq | BinaryOp::Ne | BinaryOp::Lt | BinaryOp::Le | BinaryOp::Gt | BinaryOp::Ge => {
[INFO] [stdout]     |             --------------------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 169 |             BinaryOp::And | BinaryOp::Or => {
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 205 |             _ => Ok(left_type),
[INFO] [stdout]     |             ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/semantic/expr_inference.rs:719:13
[INFO] [stdout]     |
[INFO] [stdout] 708 |             (Type::Object(from_name), Type::Object(to_name)) => {
[INFO] [stdout]     |             ------------------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 719 |             (Type::Object(obj_name), Type::Object(_)) if obj_name == "Object" => true,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expr_type`
[INFO] [stdout]     --> src/semantic/expr_inference.rs:1045:13
[INFO] [stdout]      |
[INFO] [stdout] 1045 |         let expr_type = self.infer_expr_type(&instanceof.expr)?;
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expr_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `escaped`
[INFO] [stdout]    --> src/codegen/context.rs:427:13
[INFO] [stdout]     |
[INFO] [stdout] 427 |         let escaped = s.replace("\\", "\\\\")
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_escaped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_type`
[INFO] [stdout]    --> src/codegen/expressions/binary.rs:376:65
[INFO] [stdout]     |
[INFO] [stdout] 376 |     fn generate_and(&mut self, left_type: &str, left_val: &str, right_type: &str, right_val: &str, temp: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right_type`
[INFO] [stdout]    --> src/codegen/expressions/binary.rs:383:64
[INFO] [stdout]     |
[INFO] [stdout] 383 |     fn generate_or(&mut self, left_type: &str, left_val: &str, right_type: &str, right_val: &str, temp: &str) -> cayResult<String> {
[INFO] [stdout]     |                                                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_right_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `has_varargs_array`
[INFO] [stdout]    --> src/codegen/expressions/call.rs:645:102
[INFO] [stdout]     |
[INFO] [stdout] 645 | ...gs: &[String], has_varargs_array: bool) -> Vec<crate::types::Type> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_varargs_array`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `constant_pool`
[INFO] [stdout]    --> src/bytecode/obfuscator.rs:146:45
[INFO] [stdout]     |
[INFO] [stdout] 146 |     fn update_names_in_constant_pool(&self, constant_pool: &mut ConstantPool) {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_constant_pool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `obj_val`
[INFO] [stdout]   --> src/codegen/expressions/member.rs:73:28
[INFO] [stdout]    |
[INFO] [stdout] 73 |             let (obj_type, obj_val) = self.parse_typed_value(&obj);
[INFO] [stdout]    |                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_obj_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/bytecode/jit.rs:937:21
[INFO] [stdout]     |
[INFO] [stdout] 937 |                 let offset = i16::from_le_bytes([instr.operands[0], instr.operands[1]]);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/bytecode/jit.rs:948:21
[INFO] [stdout]     |
[INFO] [stdout] 948 |                 let offset = i16::from_le_bytes([instr.operands[0], instr.operands[1]]);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/bytecode/jit.rs:960:21
[INFO] [stdout]     |
[INFO] [stdout] 960 |                 let offset = i16::from_le_bytes([instr.operands[0], instr.operands[1]]);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `class_name`
[INFO] [stdout]     --> src/bytecode/jit.rs:1100:29
[INFO] [stdout]      |
[INFO] [stdout] 1100 |                 if let Some(class_name) = ctx.pool.get_utf8(index) {
[INFO] [stdout]      |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]   --> src/codegen/statements/return_stmt.rs:28:25
[INFO] [stdout]    |
[INFO] [stdout] 28 |                     let align = self.get_type_align("float");
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]   --> src/codegen/statements/return_stmt.rs:33:25
[INFO] [stdout]    |
[INFO] [stdout] 33 |                     let align = self.get_type_align("double");
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/codegen/statements/switch_stmt.rs:49:18
[INFO] [stdout]    |
[INFO] [stdout] 49 |             let (value, label, case_idx) = &case_labels[i];
[INFO] [stdout]    |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]   --> src/idle/mod.rs:72:58
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn configure_fonts(cc: &eframe::CreationContext<'_>, config: &font_manager::FontConfig) {
[INFO] [stdout]    |                                                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `llvm_type`
[INFO] [stdout]    --> src/codegen/generator.rs:348:55
[INFO] [stdout]     |
[INFO] [stdout] 348 |     fn evaluate_const_initializer(&self, expr: &Expr, llvm_type: &str) -> Option<String> {
[INFO] [stdout]     |                                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_llvm_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_col_to_offset` is never used
[INFO] [stdout]    --> src/error.rs:333:4
[INFO] [stdout]     |
[INFO] [stdout] 333 | fn line_col_to_offset(source: &str, line: usize, column: usize) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_error_span` is never used
[INFO] [stdout]    --> src/error.rs:354:4
[INFO] [stdout]     |
[INFO] [stdout] 354 | fn get_error_span(source: &str, line: usize, column: usize, error: &cayError) -> SourceSpan {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_source_map_from_preprocessed` is never used
[INFO] [stdout]    --> src/lexer/mod.rs:673:4
[INFO] [stdout]     |
[INFO] [stdout] 673 | fn extract_source_map_from_preprocessed(source: &str) -> std::collections::HashMap<usize, (String, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser/mod.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     fn parse_class_member(&mut self) -> cayResult<crate::ast::ClassMember> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn parse_field(&mut self) -> cayResult<crate::ast::FieldDecl> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     fn parse_method(&mut self) -> cayResult<crate::ast::MethodDecl> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     fn parse_modifiers(&mut self) -> cayResult<Vec<crate::ast::Modifier>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     fn is_type_token(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn is_primitive_type_token(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     fn parse_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn parse_var_decl(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn parse_if_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn parse_while_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn parse_for_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     fn parse_do_while_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn parse_switch_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn parse_return_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn parse_expression_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     fn parse_expression(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     fn parse_assignment(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn parse_or(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     fn parse_and(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn parse_bitwise_or(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     fn parse_bitwise_xor(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn parse_bitwise_and(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn parse_equality(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     fn parse_comparison(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn parse_shift(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn parse_term(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn parse_factor(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn parse_unary(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     fn parse_postfix(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn parse_primary(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn parse_arguments(&mut self) -> cayResult<Vec<crate::ast::Expr>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn match_assignment_op(&mut self) -> Option<crate::ast::AssignOp> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn previous_loc(&self) -> crate::error::SourceLocation {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_constructor` is never used
[INFO] [stdout]    --> src/parser/classes.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn parse_constructor(parser: &mut Parser) -> cayResult<ConstructorDecl> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_primitive_type_token` is never used
[INFO] [stdout]    --> src/parser/types.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn is_primitive_type_token(parser: &Parser) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `previous_loc` is never used
[INFO] [stdout]   --> src/parser/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn previous_loc(parser: &Parser) -> crate::error::SourceLocation {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_parser_error` is never used
[INFO] [stdout]    --> src/parser/utils.rs:168:8
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub fn create_parser_error(parser: &mut Parser, error_code: &'static str, message: impl Into<String>) -> cayError {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_type_token` is never used
[INFO] [stdout]    --> src/parser/utils.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub fn is_type_token(parser: &Parser) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `synchronize` is never used
[INFO] [stdout]    --> src/parser/utils.rs:326:8
[INFO] [stdout]     |
[INFO] [stdout] 326 | pub fn synchronize(parser: &mut Parser) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlatformAbstraction` is never constructed
[INFO] [stdout]  --> src/codegen/generator.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct PlatformAbstraction {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_feature`, `with_define`, `with_undefine`, `generate_platform_init`, and `generate_platform_declarations` are never used
[INFO] [stdout]   --> src/codegen/generator.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl PlatformAbstraction {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(target_os: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn with_feature(mut self, feature: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn with_define(mut self, define: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_undefine(mut self, undefine: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn generate_platform_init(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn generate_platform_declarations(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_class_declarations` and `generate_method_declaration` are never used
[INFO] [stdout]    --> src/codegen/generator.rs:483:8
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl IRGenerator {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     fn generate_class_declarations(&mut self, class: &ClassDecl) -> cayResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     fn generate_method_declaration(&mut self, class_name: &str, method: &MethodDecl) -> cayResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlatformCodeGenerator` is never constructed
[INFO] [stdout]   --> src/codegen/platform.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct PlatformCodeGenerator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `generate_platform_init`, `generate_platform_declarations`, and `generate_dynamic_library_loading` are never used
[INFO] [stdout]    --> src/codegen/platform.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl PlatformCodeGenerator {
[INFO] [stdout]     | -------------------------- associated items in this implementation
[INFO] [stdout] 102 |     pub fn new(config: PlatformConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn generate_platform_init(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn generate_platform_declarations(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn generate_dynamic_library_loading(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_block` is never read
[INFO] [stdout]    --> src/bytecode/jit.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  90 | struct InstructionContext<'a> {
[INFO] [stdout]     |        ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 100 |     current_block: &'a mut String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selection` and `scroll_offset` are never read
[INFO] [stdout]   --> src/idle/editor.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct CodeEditor {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     selection: Option<(usize, usize)>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 27 |     /// 滚动位置
[INFO] [stdout] 28 |     scroll_offset: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `constant_pool`
[INFO] [stdout]    --> src/bytecode/obfuscator.rs:146:45
[INFO] [stdout]     |
[INFO] [stdout] 146 |     fn update_names_in_constant_pool(&self, constant_pool: &mut ConstantPool) {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_constant_pool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/bytecode/jit.rs:937:21
[INFO] [stdout]     |
[INFO] [stdout] 937 |                 let offset = i16::from_le_bytes([instr.operands[0], instr.operands[1]]);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/bytecode/jit.rs:948:21
[INFO] [stdout]     |
[INFO] [stdout] 948 |                 let offset = i16::from_le_bytes([instr.operands[0], instr.operands[1]]);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/bytecode/jit.rs:960:21
[INFO] [stdout]     |
[INFO] [stdout] 960 |                 let offset = i16::from_le_bytes([instr.operands[0], instr.operands[1]]);
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `class_name`
[INFO] [stdout]     --> src/bytecode/jit.rs:1100:29
[INFO] [stdout]      |
[INFO] [stdout] 1100 |                 if let Some(class_name) = ctx.pool.get_utf8(index) {
[INFO] [stdout]      |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/bin/cay-ir.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_tool_error`
[INFO] [stdout]  --> src/bin/cay-ir.rs:6:66
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cavvy::error::{print_error_with_context, print_miette_error, print_tool_error, print_warning};
[INFO] [stdout]   |                                                                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_clang_exe_name` is never used
[INFO] [stdout]   --> src/bin/ir2exe.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn get_clang_exe_name() -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]   --> src/idle/mod.rs:72:58
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn configure_fonts(cc: &eframe::CreationContext<'_>, config: &font_manager::FontConfig) {
[INFO] [stdout]    |                                                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Opcode`
[INFO] [stdout]  --> src/bin/cay-bcgen.rs:6:50
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cavvy::bytecode::instructions::{Instruction, Opcode};
[INFO] [stdout]   |                                                  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_warning`
[INFO] [stdout]  --> src/bin/cay-bcgen.rs:8:58
[INFO] [stdout]   |
[INFO] [stdout] 8 | use cavvy::error::{print_miette_error, print_tool_error, print_warning};
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_col_to_offset` is never used
[INFO] [stdout]    --> src/error.rs:333:4
[INFO] [stdout]     |
[INFO] [stdout] 333 | fn line_col_to_offset(source: &str, line: usize, column: usize) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_error_span` is never used
[INFO] [stdout]    --> src/error.rs:354:4
[INFO] [stdout]     |
[INFO] [stdout] 354 | fn get_error_span(source: &str, line: usize, column: usize, error: &cayError) -> SourceSpan {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_source_map_from_preprocessed` is never used
[INFO] [stdout]    --> src/lexer/mod.rs:673:4
[INFO] [stdout]     |
[INFO] [stdout] 673 | fn extract_source_map_from_preprocessed(source: &str) -> std::collections::HashMap<usize, (String, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parser/mod.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Parser {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     fn parse_class_member(&mut self) -> cayResult<crate::ast::ClassMember> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn parse_field(&mut self) -> cayResult<crate::ast::FieldDecl> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     fn parse_method(&mut self) -> cayResult<crate::ast::MethodDecl> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     fn parse_modifiers(&mut self) -> cayResult<Vec<crate::ast::Modifier>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     fn is_type_token(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn is_primitive_type_token(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     fn parse_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn parse_var_decl(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn parse_if_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn parse_while_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn parse_for_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     fn parse_do_while_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn parse_switch_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn parse_return_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn parse_expression_statement(&mut self) -> cayResult<crate::ast::Stmt> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     fn parse_expression(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     fn parse_assignment(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn parse_or(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     fn parse_and(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn parse_bitwise_or(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     fn parse_bitwise_xor(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn parse_bitwise_and(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn parse_equality(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     fn parse_comparison(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn parse_shift(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn parse_term(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn parse_factor(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn parse_unary(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     fn parse_postfix(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     fn parse_primary(&mut self) -> cayResult<crate::ast::Expr> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     fn parse_arguments(&mut self) -> cayResult<Vec<crate::ast::Expr>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     fn match_assignment_op(&mut self) -> Option<crate::ast::AssignOp> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     fn previous_loc(&self) -> crate::error::SourceLocation {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_constructor` is never used
[INFO] [stdout]    --> src/parser/classes.rs:384:8
[INFO] [stdout]     |
[INFO] [stdout] 384 | pub fn parse_constructor(parser: &mut Parser) -> cayResult<ConstructorDecl> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_primitive_type_token` is never used
[INFO] [stdout]    --> src/parser/types.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn is_primitive_type_token(parser: &Parser) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `previous_loc` is never used
[INFO] [stdout]   --> src/parser/utils.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn previous_loc(parser: &Parser) -> crate::error::SourceLocation {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_parser_error` is never used
[INFO] [stdout]    --> src/parser/utils.rs:168:8
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub fn create_parser_error(parser: &mut Parser, error_code: &'static str, message: impl Into<String>) -> cayError {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_type_token` is never used
[INFO] [stdout]    --> src/parser/utils.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub fn is_type_token(parser: &Parser) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `synchronize` is never used
[INFO] [stdout]    --> src/parser/utils.rs:326:8
[INFO] [stdout]     |
[INFO] [stdout] 326 | pub fn synchronize(parser: &mut Parser) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlatformAbstraction` is never constructed
[INFO] [stdout]  --> src/codegen/generator.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct PlatformAbstraction {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_feature`, `with_define`, `with_undefine`, `generate_platform_init`, and `generate_platform_declarations` are never used
[INFO] [stdout]   --> src/codegen/generator.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl PlatformAbstraction {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(target_os: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn with_feature(mut self, feature: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn with_define(mut self, define: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_undefine(mut self, undefine: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn generate_platform_init(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn generate_platform_declarations(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_class_declarations` and `generate_method_declaration` are never used
[INFO] [stdout]    --> src/codegen/generator.rs:483:8
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl IRGenerator {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     fn generate_class_declarations(&mut self, class: &ClassDecl) -> cayResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     fn generate_method_declaration(&mut self, class_name: &str, method: &MethodDecl) -> cayResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlatformCodeGenerator` is never constructed
[INFO] [stdout]   --> src/codegen/platform.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct PlatformCodeGenerator {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `generate_platform_init`, `generate_platform_declarations`, and `generate_dynamic_library_loading` are never used
[INFO] [stdout]    --> src/codegen/platform.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl PlatformCodeGenerator {
[INFO] [stdout]     | -------------------------- associated items in this implementation
[INFO] [stdout] 102 |     pub fn new(config: PlatformConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn generate_platform_init(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn generate_platform_declarations(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn generate_dynamic_library_loading(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `current_block` is never read
[INFO] [stdout]    --> src/bytecode/jit.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  90 | struct InstructionContext<'a> {
[INFO] [stdout]     |        ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 100 |     current_block: &'a mut String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selection` and `scroll_offset` are never read
[INFO] [stdout]   --> src/idle/editor.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct CodeEditor {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     selection: Option<(usize, usize)>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 27 |     /// 滚动位置
[INFO] [stdout] 28 |     scroll_offset: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/bin/cay-ir.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_tool_error`
[INFO] [stdout]  --> src/bin/cay-ir.rs:6:66
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cavvy::error::{print_error_with_context, print_miette_error, print_tool_error, print_warning};
[INFO] [stdout]   |                                                                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_warning`
[INFO] [stdout]  --> src/bin/cay-run.rs:8:84
[INFO] [stdout]   |
[INFO] [stdout] 8 | use cavvy::error::{print_error_with_context, print_miette_error, print_tool_error, print_warning};
[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 variable: `type_registry`
[INFO] [stdout]    --> src/bin/cay-bcgen.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     type_registry: &cavvy::types::TypeRegistry
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_registry`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Opcode`
[INFO] [stdout]  --> src/bin/cay-bcgen.rs:6:50
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cavvy::bytecode::instructions::{Instruction, Opcode};
[INFO] [stdout]   |                                                  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_warning`
[INFO] [stdout]  --> src/bin/cay-bcgen.rs:8:58
[INFO] [stdout]   |
[INFO] [stdout] 8 | use cavvy::error::{print_miette_error, print_tool_error, print_warning};
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[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 variable: `stderr`
[INFO] [stdout]    --> tests/bytecode_tests.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let stderr = String::from_utf8_lossy(&output.stderr);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stderr`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stdout`
[INFO] [stdout]    --> tests/bytecode_tests.rs:115:9
[INFO] [stdout]     |
[INFO] [stdout] 115 |     let stdout = String::from_utf8_lossy(&output.stdout);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stdout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stderr`
[INFO] [stdout]    --> tests/bytecode_tests.rs:155:9
[INFO] [stdout]     |
[INFO] [stdout] 155 |     let stderr = String::from_utf8_lossy(&output.stderr);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stderr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stderr`
[INFO] [stdout]    --> tests/bytecode_tests.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |     let stderr = String::from_utf8_lossy(&output.stderr);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_stderr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `type_registry`
[INFO] [stdout]    --> src/bin/cay-bcgen.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     type_registry: &cavvy::types::TypeRegistry
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_type_registry`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> tests/bytecode_tests.rs:516:9
[INFO] [stdout]     |
[INFO] [stdout] 516 |     let result = deserialize(&valid_magic);
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_eol` is never used
[INFO] [stdout]   --> tests/common/mod.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn compile_and_run_eol(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_eol` is never used
[INFO] [stdout]   --> tests/common/mod.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn compile_and_run_eol(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:461:17
[INFO] [stdout]     |
[INFO] [stdout] 461 |                 deprecated: None,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:567:21
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     deprecated: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:587:21
[INFO] [stdout]     |
[INFO] [stdout] 587 |                     deprecated: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:606:21
[INFO] [stdout]     |
[INFO] [stdout] 606 |                     deprecated: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uri` is never read
[INFO] [stdout]   --> src/bin/cay-lsp.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct DocumentState {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 21 |     uri: Url,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DocumentState` 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: struct `ServerConfig` is never constructed
[INFO] [stdout]   --> src/bin/cay-lsp.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct ServerConfig {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lex`
[INFO] [stdout]  --> tests/diagnostic_tests.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use cavvy::lexer::{lex, lex_with_diagnostics};
[INFO] [stdout]   |                    ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `cavvy::parser::parse`
[INFO] [stdout]  --> tests/diagnostic_tests.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cavvy::parser::parse;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_clang_exe_name` is never used
[INFO] [stdout]   --> src/bin/ir2exe.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn get_clang_exe_name() -> &'static str {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[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 variable: `result`
[INFO] [stdout]    --> tests/diagnostic_tests.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let (result, diagnostics) = lex_with_diagnostics(source);
[INFO] [stdout]     |          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:461:17
[INFO] [stdout]     |
[INFO] [stdout] 461 |                 deprecated: None,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `print_warning`
[INFO] [stdout]  --> src/bin/cay-run.rs:8:84
[INFO] [stdout]   |
[INFO] [stdout] 8 | use cavvy::error::{print_error_with_context, print_miette_error, print_tool_error, print_warning};
[INFO] [stdout]   |                                                                                    ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/common/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:567:21
[INFO] [stdout]     |
[INFO] [stdout] 567 |                     deprecated: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:587:21
[INFO] [stdout]     |
[INFO] [stdout] 587 |                     deprecated: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `tower_lsp::lsp_types::DocumentSymbol::deprecated`: Use tags instead
[INFO] [stdout]    --> src/bin/cay-lsp.rs:606:21
[INFO] [stdout]     |
[INFO] [stdout] 606 |                     deprecated: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEST_LOCK` is never used
[INFO] [stdout]   --> tests/common/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | static TEST_LOCK: Mutex<()> = Mutex::new(());
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_eol_expect_error` is never used
[INFO] [stdout]   --> tests/common/mod.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn compile_eol_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compile_and_run_expect_error` is never used
[INFO] [stdout]    --> tests/common/mod.rs:130:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub fn compile_and_run_expect_error(source_path: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains` is never used
[INFO] [stdout]    --> tests/common/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn assert_output_contains(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_output_contains_any` is never used
[INFO] [stdout]    --> tests/common/mod.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn assert_output_contains_any(output: &str, expected_substrings: &[&str], test_name: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uri` is never read
[INFO] [stdout]   --> src/bin/cay-lsp.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct DocumentState {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 21 |     uri: Url,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DocumentState` 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: struct `ServerConfig` is never constructed
[INFO] [stdout]   --> src/bin/cay-lsp.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct ServerConfig {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 59s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: ashpd v0.8.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "be0c253cfcb2108885020177bd1a73f9645deab622e56daba1765bcfe655f517", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "be0c253cfcb2108885020177bd1a73f9645deab622e56daba1765bcfe655f517", kill_on_drop: false }`
[INFO] [stdout] be0c253cfcb2108885020177bd1a73f9645deab622e56daba1765bcfe655f517
