[INFO] cloning repository https://github.com/tangzhangming/qlang [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tangzhangming/qlang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftangzhangming%2Fqlang", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftangzhangming%2Fqlang'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 07bd403e97f71e4dbcd0c1879e6679e348e75547 [INFO] checking tangzhangming/qlang against try#a611f2a14e38407ec6717a86a01424ee6fc80762 for pr-154992 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftangzhangming%2Fqlang" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/tangzhangming/qlang [INFO] finished tweaking git repo https://github.com/tangzhangming/qlang [INFO] tweaked toml for git repo https://github.com/tangzhangming/qlang written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/tangzhangming/qlang on toolchain a611f2a14e38407ec6717a86a01424ee6fc80762 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/tangzhangming/qlang 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" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] checking tangzhangming/qlang against try#a611f2a14e38407ec6717a86a01424ee6fc80762 for pr-154992 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftangzhangming%2Fqlang" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/tangzhangming/qlang [INFO] finished tweaking git repo https://github.com/tangzhangming/qlang [INFO] tweaked toml for git repo https://github.com/tangzhangming/qlang written to /workspace/builds/worker-5-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/tangzhangming/qlang on toolchain a611f2a14e38407ec6717a86a01424ee6fc80762 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/tangzhangming/qlang 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" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 614101b552d6446f4785efe5aa7c03c5c27f0fcf611402753e2d747564b6a6df [INFO] running `Command { std: "docker" "start" "-a" "614101b552d6446f4785efe5aa7c03c5c27f0fcf611402753e2d747564b6a6df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "614101b552d6446f4785efe5aa7c03c5c27f0fcf611402753e2d747564b6a6df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "614101b552d6446f4785efe5aa7c03c5c27f0fcf611402753e2d747564b6a6df", kill_on_drop: false }` [INFO] [stdout] 614101b552d6446f4785efe5aa7c03c5c27f0fcf611402753e2d747564b6a6df [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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" "+a611f2a14e38407ec6717a86a01424ee6fc80762" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9def23565bcc070a577f164a470d39e78323bdc8021933ec2d9396dc48c88fff [INFO] running `Command { std: "docker" "start" "-a" "9def23565bcc070a577f164a470d39e78323bdc8021933ec2d9396dc48c88fff", kill_on_drop: false }` [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking crossbeam v0.8.4 [INFO] [stderr] Checking mylang v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `super::ast::TypeParam` [INFO] [stdout] --> src/parser/parser.rs:897:13 [INFO] [stdout] | [INFO] [stdout] 897 | use super::ast::TypeParam; [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: `crate::types::TypeBound` [INFO] [stdout] --> src/parser/parser.rs:898:13 [INFO] [stdout] | [INFO] [stdout] 898 | use crate::types::TypeBound; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::TypeBound` [INFO] [stdout] --> src/parser/parser.rs:946:13 [INFO] [stdout] | [INFO] [stdout] 946 | use crate::types::TypeBound; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::TypeBound` [INFO] [stdout] --> src/parser/parser.rs:978:13 [INFO] [stdout] | [INFO] [stdout] 978 | use crate::types::TypeBound; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ast::WhereClause` [INFO] [stdout] --> src/parser/parser.rs:1020:13 [INFO] [stdout] | [INFO] [stdout] 1020 | use super::ast::WhereClause; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/compiler/codegen.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AtomicUsize` [INFO] [stdout] --> src/vm/vm.rs:11:37 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::atomic::{AtomicBool, AtomicUsize}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChannelState` and `WaitGroupState` [INFO] [stdout] --> src/vm/vm.rs:4222:40 [INFO] [stdout] | [INFO] [stdout] 4222 | use super::value::{ChannelState, WaitGroupState}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::atomic::Ordering` [INFO] [stdout] --> src/vm/vm.rs:4223:25 [INFO] [stdout] | [INFO] [stdout] 4223 | use std::sync::atomic::Ordering; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `select` [INFO] [stdout] --> src/vm/vm.rs:4548:45 [INFO] [stdout] | [INFO] [stdout] 4548 | use crossbeam_channel::{select, Sender, Receiver}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CallbackResponse` [INFO] [stdout] --> src/vm/vm.rs:6612:46 [INFO] [stdout] | [INFO] [stdout] 6612 | use crate::stdlib::{CallbackRequest, CallbackResponse}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HeapObject` [INFO] [stdout] --> src/vm/gc.rs:10:36 [INFO] [stdout] | [INFO] [stdout] 10 | use super::value::{Value, HeapTag, HeapObject}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RuntimeTypeInfo`, `TraitVTable`, `VTableRegistry`, and `VTable` [INFO] [stdout] --> src/vm/mod.rs:12:18 [INFO] [stdout] | [INFO] [stdout] 12 | pub use vtable::{VTable, VTableRegistry, TraitVTable, RuntimeTypeInfo}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConcurrentMarkGc`, `GcResult`, `GcStats`, `Heap`, `MarkSweepGc`, `gc_register`, `gc_should_run`, `gc_stats`, and `get_heap` [INFO] [stdout] --> src/vm/mod.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub use gc::{Heap, MarkSweepGc, ConcurrentMarkGc, GcResult, GcStats, get_heap, gc_register, gc_should_run, gc_stats}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/package/resolver.rs:6:17 [INFO] [stdout] | [INFO] [stdout] 6 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ResolvedImport` [INFO] [stdout] --> src/package/mod.rs:9:37 [INFO] [stdout] | [INFO] [stdout] 9 | pub use resolver::{PackageResolver, ResolvedImport, ImportKind}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ast::TypeParam` [INFO] [stdout] --> src/parser/parser.rs:897:13 [INFO] [stdout] | [INFO] [stdout] 897 | use super::ast::TypeParam; [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: `crate::vm::value::Value` [INFO] [stdout] --> src/stdlib/net/tcp.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | use crate::vm::value::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::TypeBound` [INFO] [stdout] --> src/parser/parser.rs:898:13 [INFO] [stdout] | [INFO] [stdout] 898 | use crate::types::TypeBound; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/stdlib/net/tcp.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::TypeBound` [INFO] [stdout] --> src/parser/parser.rs:946:13 [INFO] [stdout] | [INFO] [stdout] 946 | use crate::types::TypeBound; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/stdlib/net/tcp.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::types::TypeBound` [INFO] [stdout] --> src/parser/parser.rs:978:13 [INFO] [stdout] | [INFO] [stdout] 978 | use crate::types::TypeBound; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::ast::WhereClause` [INFO] [stdout] --> src/parser/parser.rs:1020:13 [INFO] [stdout] | [INFO] [stdout] 1020 | use super::ast::WhereClause; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::value::Value` [INFO] [stdout] --> src/stdlib/net/mod.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | use crate::vm::value::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/stdlib/net/mod.rs:90:13 [INFO] [stdout] | [INFO] [stdout] 90 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/stdlib/net/mod.rs:91:13 [INFO] [stdout] | [INFO] [stdout] 91 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `THROWABLE_TYPES` and `is_throwable_type` [INFO] [stdout] --> src/stdlib/mod.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | pub use exception::{THROWABLE_TYPES, is_throwable_type}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::value::Function` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::vm::value::Function; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VMState` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:15:22 [INFO] [stdout] | [INFO] [stdout] 15 | use super::context::{VMState, CallFrameSnapshot}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::scheduler::Scheduler` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use super::scheduler::Scheduler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/runtime/preempt.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/runtime/runtime.rs:188:1 [INFO] [stdout] | [INFO] [stdout] 188 | /// 线程本地运行时句柄 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GoroutineStatus` and `Goroutine` [INFO] [stdout] --> src/runtime/runtime.rs:16:24 [INFO] [stdout] | [INFO] [stdout] 16 | use super::goroutine::{Goroutine, GoroutineStatus}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::preempt::PreemptTracker` [INFO] [stdout] --> src/runtime/runtime.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use super::preempt::PreemptTracker; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RuntimeConfig`, `RuntimeHandle`, and `Runtime` [INFO] [stdout] --> src/runtime/mod.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | pub use runtime::{Runtime, RuntimeConfig, RuntimeHandle}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GoroutineStatus` and `Goroutine` [INFO] [stdout] --> src/runtime/mod.rs:24:21 [INFO] [stdout] | [INFO] [stdout] 24 | pub use goroutine::{Goroutine, GoroutineStatus}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack::Stack` [INFO] [stdout] --> src/runtime/mod.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub use stack::Stack; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `queue::LocalQueue` [INFO] [stdout] --> src/runtime/mod.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub use queue::LocalQueue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `processor::Processor` [INFO] [stdout] --> src/runtime/mod.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | pub use processor::Processor; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/compiler/codegen.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `AtomicUsize` [INFO] [stdout] --> src/vm/vm.rs:11:37 [INFO] [stdout] | [INFO] [stdout] 11 | use std::sync::atomic::{AtomicBool, AtomicUsize}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `machine::Machine` [INFO] [stdout] --> src/runtime/mod.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub use machine::Machine; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SCHEDULER` and `Scheduler` [INFO] [stdout] --> src/runtime/mod.rs:29:21 [INFO] [stdout] | [INFO] [stdout] 29 | pub use scheduler::{Scheduler, SCHEDULER}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel::Channel` [INFO] [stdout] --> src/runtime/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub use channel::Channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `context::Context` [INFO] [stdout] --> src/runtime/mod.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub use context::Context; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FunctionSignature`, `InterfaceDef`, and `TraitDef` [INFO] [stdout] --> src/typechecker/environment.rs:6:51 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::types::{Type, TypeBound, GenericParam, FunctionSignature, TraitDef, InterfaceDef, TraitImpl}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/typechecker/unify.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ChannelState` and `WaitGroupState` [INFO] [stdout] --> src/vm/vm.rs:4222:40 [INFO] [stdout] | [INFO] [stdout] 4222 | use super::value::{ChannelState, WaitGroupState}; [INFO] [stdout] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WhereClause` [INFO] [stdout] --> src/typechecker/checker.rs:7:37 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::parser::ast::{TypeParam, WhereClause, FnParam, TypeAnnotation}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Substitution` and `TypeBound` [INFO] [stdout] --> src/typechecker/checker.rs:8:26 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::types::{Type, TypeBound, GenericParam, Substitution}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Constraint` [INFO] [stdout] --> src/typechecker/checker.rs:11:25 [INFO] [stdout] | [INFO] [stdout] 11 | use super::constraint::{Constraint, ConstraintSolver}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::unify::Unifier` [INFO] [stdout] --> src/typechecker/checker.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use super::unify::Unifier; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::atomic::Ordering` [INFO] [stdout] --> src/vm/vm.rs:4223:25 [INFO] [stdout] | [INFO] [stdout] 4223 | use std::sync::atomic::Ordering; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> src/typechecker/monomorphize.rs:5:33 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Expr` [INFO] [stdout] --> src/typechecker/monomorphize.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::parser::{Stmt, Expr, Program}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClassMethod`, `StructMethod`, and `TypeAnnotation` [INFO] [stdout] --> src/typechecker/monomorphize.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::parser::ast::{ClassMethod, StructMethod, TypeAnnotation}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lexer::Span` [INFO] [stdout] --> src/typechecker/monomorphize.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::lexer::Span; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `select` [INFO] [stdout] --> src/vm/vm.rs:4548:45 [INFO] [stdout] | [INFO] [stdout] 4548 | use crossbeam_channel::{select, Sender, Receiver}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClassInfo`, `FunctionInfo`, `TraitInfo`, `TypeEnvironment`, `TypeInfo`, and `TypeScope` [INFO] [stdout] --> src/typechecker/mod.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | pub use environment::{TypeEnvironment, TypeScope, TypeInfo, FunctionInfo, ClassInfo, TraitInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Unifier` and `UnifyResult` [INFO] [stdout] --> src/typechecker/mod.rs:13:17 [INFO] [stdout] | [INFO] [stdout] 13 | pub use unify::{Unifier, UnifyResult}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConstraintKind`, `ConstraintSolver`, and `Constraint` [INFO] [stdout] --> src/typechecker/mod.rs:14:22 [INFO] [stdout] | [INFO] [stdout] 14 | pub use constraint::{Constraint, ConstraintKind, ConstraintSolver}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `TypeErrorKind` and `TypeError` [INFO] [stdout] --> src/typechecker/mod.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | pub use error::{TypeError, TypeErrorKind}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MonoKey`, `MonomorphizedClass`, `MonomorphizedFunction`, and `MonomorphizedStruct` [INFO] [stdout] --> src/typechecker/mod.rs:17:39 [INFO] [stdout] | [INFO] [stdout] 17 | pub use monomorphize::{Monomorphizer, MonoKey, MonomorphizedClass, MonomorphizedStruct, MonomorphizedFunction}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CallbackResponse` [INFO] [stdout] --> src/vm/vm.rs:6612:46 [INFO] [stdout] | [INFO] [stdout] 6612 | use crate::stdlib::{CallbackRequest, CallbackResponse}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HeapObject` [INFO] [stdout] --> src/vm/gc.rs:10:36 [INFO] [stdout] | [INFO] [stdout] 10 | use super::value::{Value, HeapTag, HeapObject}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RuntimeTypeInfo`, `TraitVTable`, `VTableRegistry`, and `VTable` [INFO] [stdout] --> src/vm/mod.rs:12:18 [INFO] [stdout] | [INFO] [stdout] 12 | pub use vtable::{VTable, VTableRegistry, TraitVTable, RuntimeTypeInfo}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConcurrentMarkGc`, `GcResult`, `GcStats`, `Heap`, `MarkSweepGc`, `gc_register`, `gc_should_run`, `gc_stats`, and `get_heap` [INFO] [stdout] --> src/vm/mod.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | pub use gc::{Heap, MarkSweepGc, ConcurrentMarkGc, GcResult, GcStats, get_heap, gc_register, gc_should_run, gc_stats}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Path` [INFO] [stdout] --> src/package/resolver.rs:6:17 [INFO] [stdout] | [INFO] [stdout] 6 | use std::path::{Path, PathBuf}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ResolvedImport` [INFO] [stdout] --> src/package/mod.rs:9:37 [INFO] [stdout] | [INFO] [stdout] 9 | pub use resolver::{PackageResolver, ResolvedImport, ImportKind}; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::value::Value` [INFO] [stdout] --> src/stdlib/net/tcp.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | use crate::vm::value::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/stdlib/net/tcp.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/stdlib/net/tcp.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::value::Value` [INFO] [stdout] --> src/stdlib/net/mod.rs:89:13 [INFO] [stdout] | [INFO] [stdout] 89 | use crate::vm::value::Value; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/stdlib/net/mod.rs:90:13 [INFO] [stdout] | [INFO] [stdout] 90 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/stdlib/net/mod.rs:91:13 [INFO] [stdout] | [INFO] [stdout] 91 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `THROWABLE_TYPES` and `is_throwable_type` [INFO] [stdout] --> src/stdlib/mod.rs:11:21 [INFO] [stdout] | [INFO] [stdout] 11 | pub use exception::{THROWABLE_TYPES, is_throwable_type}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::Mutex` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use parking_lot::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::value::Function` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::vm::value::Function; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `VMState` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:15:22 [INFO] [stdout] | [INFO] [stdout] 15 | use super::context::{VMState, CallFrameSnapshot}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::scheduler::Scheduler` [INFO] [stdout] --> src/runtime/coroutine_vm.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use super::scheduler::Scheduler; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/runtime/preempt.rs:202:9 [INFO] [stdout] | [INFO] [stdout] 202 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused doc comment [INFO] [stdout] --> src/runtime/runtime.rs:188:1 [INFO] [stdout] | [INFO] [stdout] 188 | /// 线程本地运行时句柄 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations [INFO] [stdout] | [INFO] [stdout] = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion [INFO] [stdout] = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GoroutineStatus` and `Goroutine` [INFO] [stdout] --> src/runtime/runtime.rs:16:24 [INFO] [stdout] | [INFO] [stdout] 16 | use super::goroutine::{Goroutine, GoroutineStatus}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::preempt::PreemptTracker` [INFO] [stdout] --> src/runtime/runtime.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use super::preempt::PreemptTracker; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RuntimeConfig`, `RuntimeHandle`, and `Runtime` [INFO] [stdout] --> src/runtime/mod.rs:22:19 [INFO] [stdout] | [INFO] [stdout] 22 | pub use runtime::{Runtime, RuntimeConfig, RuntimeHandle}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `GoroutineStatus` and `Goroutine` [INFO] [stdout] --> src/runtime/mod.rs:24:21 [INFO] [stdout] | [INFO] [stdout] 24 | pub use goroutine::{Goroutine, GoroutineStatus}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `stack::Stack` [INFO] [stdout] --> src/runtime/mod.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub use stack::Stack; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `queue::LocalQueue` [INFO] [stdout] --> src/runtime/mod.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub use queue::LocalQueue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `processor::Processor` [INFO] [stdout] --> src/runtime/mod.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | pub use processor::Processor; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `machine::Machine` [INFO] [stdout] --> src/runtime/mod.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | pub use machine::Machine; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SCHEDULER` and `Scheduler` [INFO] [stdout] --> src/runtime/mod.rs:29:21 [INFO] [stdout] | [INFO] [stdout] 29 | pub use scheduler::{Scheduler, SCHEDULER}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel::Channel` [INFO] [stdout] --> src/runtime/mod.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | pub use channel::Channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `context::Context` [INFO] [stdout] --> src/runtime/mod.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub use context::Context; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FunctionSignature`, `InterfaceDef`, and `TraitDef` [INFO] [stdout] --> src/typechecker/environment.rs:6:51 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::types::{Type, TypeBound, GenericParam, FunctionSignature, TraitDef, InterfaceDef, TraitImpl}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> src/typechecker/unify.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `WhereClause` [INFO] [stdout] --> src/typechecker/checker.rs:7:37 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::parser::ast::{TypeParam, WhereClause, FnParam, TypeAnnotation}; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Substitution` and `TypeBound` [INFO] [stdout] --> src/typechecker/checker.rs:8:26 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::types::{Type, TypeBound, GenericParam, Substitution}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Constraint` [INFO] [stdout] --> src/typechecker/checker.rs:11:25 [INFO] [stdout] | [INFO] [stdout] 11 | use super::constraint::{Constraint, ConstraintSolver}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::unify::Unifier` [INFO] [stdout] --> src/typechecker/checker.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use super::unify::Unifier; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HashSet` [INFO] [stdout] --> src/typechecker/monomorphize.rs:5:33 [INFO] [stdout] | [INFO] [stdout] 5 | use std::collections::{HashMap, HashSet}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Expr` [INFO] [stdout] --> src/typechecker/monomorphize.rs:6:27 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::parser::{Stmt, Expr, Program}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClassMethod`, `StructMethod`, and `TypeAnnotation` [INFO] [stdout] --> src/typechecker/monomorphize.rs:7:26 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::parser::ast::{ClassMethod, StructMethod, TypeAnnotation}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lexer::Span` [INFO] [stdout] --> src/typechecker/monomorphize.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::lexer::Span; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ClassInfo`, `FunctionInfo`, `TraitInfo`, `TypeEnvironment`, `TypeInfo`, and `TypeScope` [INFO] [stdout] --> src/typechecker/mod.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | pub use environment::{TypeEnvironment, TypeScope, TypeInfo, FunctionInfo, ClassInfo, TraitInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Unifier` and `UnifyResult` [INFO] [stdout] --> src/typechecker/mod.rs:13:17 [INFO] [stdout] | [INFO] [stdout] 13 | pub use unify::{Unifier, UnifyResult}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ConstraintKind`, `ConstraintSolver`, and `Constraint` [INFO] [stdout] --> src/typechecker/mod.rs:14:22 [INFO] [stdout] | [INFO] [stdout] 14 | pub use constraint::{Constraint, ConstraintKind, ConstraintSolver}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `TypeErrorKind` and `TypeError` [INFO] [stdout] --> src/typechecker/mod.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | pub use error::{TypeError, TypeErrorKind}; [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MonoKey`, `MonomorphizedClass`, `MonomorphizedFunction`, and `MonomorphizedStruct` [INFO] [stdout] --> src/typechecker/mod.rs:17:39 [INFO] [stdout] | [INFO] [stdout] 17 | pub use monomorphize::{Monomorphizer, MonoKey, MonomorphizedClass, MonomorphizedStruct, MonomorphizedFunction}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nested` [INFO] [stdout] --> src/compiler/codegen.rs:794:54 [INFO] [stdout] | [INFO] [stdout] 794 | ... MatchPattern::Or(nested) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_nested` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/compiler/symbol.rs:324:14 [INFO] [stdout] | [INFO] [stdout] 324 | for (i, symbol) in self.symbols.iter_mut().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nested` [INFO] [stdout] --> src/compiler/codegen.rs:794:54 [INFO] [stdout] | [INFO] [stdout] 794 | ... MatchPattern::Or(nested) => { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_nested` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `saved_ip` [INFO] [stdout] --> src/vm/vm.rs:344:13 [INFO] [stdout] | [INFO] [stdout] 344 | let saved_ip = self.ip; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_saved_ip` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/compiler/symbol.rs:324:14 [INFO] [stdout] | [INFO] [stdout] 324 | for (i, symbol) in self.symbols.iter_mut().enumerate().rev() { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `saved_ip` [INFO] [stdout] --> src/vm/vm.rs:344:13 [INFO] [stdout] | [INFO] [stdout] 344 | let saved_ip = self.ip; [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_saved_ip` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_value` is never read [INFO] [stdout] --> src/vm/vm.rs:3898:75 [INFO] [stdout] | [INFO] [stdout] 3898 | ... let mut result_value: Option = None; [INFO] [stdout] | ^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 3910 | ... result_value = Some(result); [INFO] [stdout] | --------------------------- `result_value` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/vm/vtable.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | let mut vtable = Self { [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: `vtable` [INFO] [stdout] --> src/vm/vtable.rs:337:13 [INFO] [stdout] | [INFO] [stdout] 337 | let vtable = registry.register(vtable); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_vtable` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `gc` [INFO] [stdout] --> src/vm/gc.rs:905:13 [INFO] [stdout] | [INFO] [stdout] 905 | let gc = MarkSweepGc::new(heap.clone()); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_gc` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `result_value` is never read [INFO] [stdout] --> src/vm/vm.rs:3898:75 [INFO] [stdout] | [INFO] [stdout] 3898 | ... let mut result_value: Option = None; [INFO] [stdout] | ^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 3910 | ... result_value = Some(result); [INFO] [stdout] | --------------------------- `result_value` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/vm/vtable.rs:55:13 [INFO] [stdout] | [INFO] [stdout] 55 | let mut vtable = Self { [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: `class_name` [INFO] [stdout] --> src/stdlib/mod.rs:124:25 [INFO] [stdout] | [INFO] [stdout] 124 | fn has_class(&self, class_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/stdlib/mod.rs:131:55 [INFO] [stdout] | [INFO] [stdout] 131 | fn create_class_instance(&self, class_name: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instance` [INFO] [stdout] --> src/stdlib/mod.rs:139:27 [INFO] [stdout] | [INFO] [stdout] 139 | fn call_method(&self, instance: &Value, method_name: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instance` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/stdlib/mod.rs:139:64 [INFO] [stdout] | [INFO] [stdout] 139 | fn call_method(&self, instance: &Value, method_name: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/runtime/goroutine.rs:192:25 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn reset(&self, id: GoId, func: Arc, args: Vec) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/runtime/goroutine.rs:192:56 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn reset(&self, id: GoId, func: Arc, args: Vec) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b1` [INFO] [stdout] --> src/typechecker/unify.rs:63:48 [INFO] [stdout] | [INFO] [stdout] 63 | (TypeParameter { name: n1, bounds: b1 }, TypeParameter { name: n2, bounds: b2 }) => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b2` [INFO] [stdout] --> src/typechecker/unify.rs:63:88 [INFO] [stdout] | [INFO] [stdout] 63 | (TypeParameter { name: n1, bounds: b1 }, TypeParameter { name: n2, bounds: b2 }) => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `generic` [INFO] [stdout] --> src/typechecker/constraint.rs:184:43 [INFO] [stdout] | [INFO] [stdout] 184 | ConstraintKind::Instantiate { generic, args } => { [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `generic: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/typechecker/constraint.rs:184:52 [INFO] [stdout] | [INFO] [stdout] 184 | ConstraintKind::Instantiate { generic, args } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `args: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `main_signature_valid` is assigned to, but never used [INFO] [stdout] --> src/typechecker/checker.rs:479:13 [INFO] [stdout] | [INFO] [stdout] 479 | let mut main_signature_valid = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_main_signature_valid` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `main_signature_valid` is never read [INFO] [stdout] --> src/typechecker/checker.rs:486:25 [INFO] [stdout] | [INFO] [stdout] 486 | main_signature_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:551:28 [INFO] [stdout] | [INFO] [stdout] 551 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Struct(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:571:28 [INFO] [stdout] | [INFO] [stdout] 571 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Class(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:585:28 [INFO] [stdout] | [INFO] [stdout] 585 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Interface(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:602:28 [INFO] [stdout] | [INFO] [stdout] 602 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Trait(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:623:28 [INFO] [stdout] | [INFO] [stdout] 623 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Enum(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:631:28 [INFO] [stdout] | [INFO] [stdout] 631 | if let Err(e) = self.env.register_type( [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/typechecker/checker.rs:671:30 [INFO] [stdout] | [INFO] [stdout] 671 | Stmt::ClassDef { name, interfaces, traits, methods, span, .. } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:766:31 [INFO] [stdout] | [INFO] [stdout] 766 | .map_err(|e| TypeError::new(TypeErrorKind::DuplicateDefinition(name.clone()), *span))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:749:31 [INFO] [stdout] | [INFO] [stdout] 749 | .map_err(|e| TypeError::new(TypeErrorKind::DuplicateDefinition(name.clone()), *span))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:721:38 [INFO] [stdout] | [INFO] [stdout] 721 | Stmt::Expression { expr, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:725:33 [INFO] [stdout] | [INFO] [stdout] 725 | Stmt::Print { expr, span, .. } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/typechecker/checker.rs:905:27 [INFO] [stdout] | [INFO] [stdout] 905 | Stmt::FnDef { name, type_params, params, return_type, body, span, .. } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:975:34 [INFO] [stdout] | [INFO] [stdout] 975 | Stmt::Throw { value, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/typechecker/checker.rs:1218:27 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/typechecker/checker.rs:1218:34 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inclusive` [INFO] [stdout] --> src/typechecker/checker.rs:1218:39 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `inclusive: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1218:50 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1223:56 [INFO] [stdout] | [INFO] [stdout] 1223 | Expr::Closure { params, return_type, body, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `force` [INFO] [stdout] --> src/typechecker/checker.rs:1373:45 [INFO] [stdout] | [INFO] [stdout] 1373 | Expr::Cast { expr, target_type, force, span } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `force: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1373:52 [INFO] [stdout] | [INFO] [stdout] 1373 | Expr::Cast { expr, target_type, force, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr_ty` [INFO] [stdout] --> src/typechecker/checker.rs:1374:21 [INFO] [stdout] | [INFO] [stdout] 1374 | let expr_ty = self.infer_expr(expr)?; [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expr_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `check_type` [INFO] [stdout] --> src/typechecker/checker.rs:1379:37 [INFO] [stdout] | [INFO] [stdout] 1379 | Expr::TypeCheck { expr, check_type, span } => { [INFO] [stdout] | ^^^^^^^^^^ help: try ignoring the field: `check_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1379:49 [INFO] [stdout] | [INFO] [stdout] 1379 | Expr::TypeCheck { expr, check_type, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1384:30 [INFO] [stdout] | [INFO] [stdout] 1384 | Expr::Go { call, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `main_file` [INFO] [stdout] --> src/main.rs:333:5 [INFO] [stdout] | [INFO] [stdout] 333 | main_file: Option<&Path>, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_main_file` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `class_name` [INFO] [stdout] --> src/stdlib/mod.rs:124:25 [INFO] [stdout] | [INFO] [stdout] 124 | fn has_class(&self, class_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_class_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/stdlib/mod.rs:131:55 [INFO] [stdout] | [INFO] [stdout] 131 | fn create_class_instance(&self, class_name: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instance` [INFO] [stdout] --> src/stdlib/mod.rs:139:27 [INFO] [stdout] | [INFO] [stdout] 139 | fn call_method(&self, instance: &Value, method_name: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instance` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/stdlib/mod.rs:139:64 [INFO] [stdout] | [INFO] [stdout] 139 | fn call_method(&self, instance: &Value, method_name: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_compile_context` is never used [INFO] [stdout] --> src/main.rs:394:4 [INFO] [stdout] | [INFO] [stdout] 394 | fn build_compile_context(file_path: &Path) -> CompileContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `code`, `name`, and `from_env` are never used [INFO] [stdout] --> src/i18n/mod.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl Locale { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn code(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn from_env() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_message_named` is never used [INFO] [stdout] --> src/i18n/mod.rs:86:8 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn format_message_named(key: &str, locale: Locale, args: &[(&str, &str)]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/parser/parser.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum ParseErrorKind { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 34 | /// 意外的 token [INFO] [stdout] 35 | UnexpectedToken, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | /// 期望的 token 未找到 [INFO] [stdout] 37 | ExpectedToken, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 38 | /// 意外的文件结束 [INFO] [stdout] 39 | UnexpectedEof, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | InvalidExpression, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 44 | /// 重复定义 [INFO] [stdout] 45 | DuplicateDefinition, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | /// 无效的赋值目标 [INFO] [stdout] 47 | InvalidAssignmentTarget, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 48 | /// 无效的类型 [INFO] [stdout] 49 | InvalidType, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseErrorKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `expected`, and `found` are never read [INFO] [stdout] --> src/parser/parser.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct ParseError { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub kind: ParseErrorKind, [INFO] [stdout] | ^^^^ [INFO] [stdout] 61 | /// 期望的内容(如果有) [INFO] [stdout] 62 | pub expected: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 63 | /// 实际得到的内容 [INFO] [stdout] 64 | pub found: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_kind`, `expected_token`, `unexpected_token`, `unexpected_eof`, and `with_hint` are never used [INFO] [stdout] --> src/parser/parser.rs:83:8 [INFO] [stdout] | [INFO] [stdout] 69 | impl ParseError { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 83 | fn with_kind(message: String, span: Span, kind: ParseErrorKind) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn expected_token(expected: &str, found: &str, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn unexpected_token(found: &str, context: &str, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn unexpected_eof(context: &str, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn with_hint(mut self, hint: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `parse_where_clauses`, `parse_single_where_clause`, `synchronize_to`, `report_error`, and `expect_one_of` are never used [INFO] [stdout] --> src/parser/parser.rs:1019:8 [INFO] [stdout] | [INFO] [stdout] 166 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 1019 | fn parse_where_clauses(&mut self) -> Result, ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1063 | fn parse_single_where_clause(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3419 | fn synchronize_to(&mut self, kinds: &[TokenKind]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3434 | fn report_error(&mut self, error: ParseError) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3442 | fn expect_one_of(&mut self, kinds: &[TokenKind]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/vm/vm.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl RuntimeError { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 65 | /// 创建新的运行时错误 [INFO] [stdout] 66 | pub fn new(message: String, line: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vtable_registry` and `inline_cache` are never read [INFO] [stdout] --> src/vm/vm.rs:141:5 [INFO] [stdout] | [INFO] [stdout] 123 | pub struct VM { [INFO] [stdout] | -- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 141 | vtable_registry: super::vtable::VTableRegistry, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | inline_cache: std::collections::HashMap<(String, String), u16>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vm/vm.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 152 | impl VM { [INFO] [stdout] | ------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn with_preempt(chunk: Arc, locale: Locale, preempt_flag: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | pub fn set_preempt_flag(&mut self, flag: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn request_preempt(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 221 | pub fn lookup_method_cached(&mut self, type_name: &str, method_name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn clear_inline_cache(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn scan_gc_roots(&self, mut callback: F) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub fn stack_roots(&self) -> impl std::iter::Iterator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn stack_depth(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn frame_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6124 | pub fn ip(&self) -> usize { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 6130 | pub fn set_ip_value(&mut self, ip: usize) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6136 | pub fn current_base(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6142 | pub fn set_current_base(&mut self, base: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6147 | pub fn save_stack(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6152 | pub fn restore_stack(&mut self, stack: &[Value]) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6158 | pub fn save_frames(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6167 | pub fn restore_frames(&mut self, frames: &[crate::runtime::context::CallFrameSnapshot]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6181 | pub fn push_value(&mut self, value: Value) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6188 | pub fn step(&mut self) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 6236 | fn step_sync(&mut self) -> Result<(), RuntimeError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6484 | pub fn get_or_create_vtable(&mut self, type_name: &str) -> std::sync::Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6489 | pub fn register_vtable(&mut self, vtable: super::vtable::VTable) -> std::sync::Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6494 | pub fn value_implements_trait(&self, value: &Value, trait_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6513 | pub fn vtable_dispatch(&mut self, receiver: &Value, method_name: &str, args: Vec) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6554 | pub fn init_type_vtable(&mut self, type_name: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6581 | pub fn get_runtime_type_info(&self, value: &Value) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/runtime/goroutine.rs:192:25 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn reset(&self, id: GoId, func: Arc, args: Vec) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/runtime/goroutine.rs:192:56 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn reset(&self, id: GoId, func: Arc, args: Vec) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_args` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/vm/vtable.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct VTableEntry { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 17 | /// 方法名 [INFO] [stdout] 18 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VTableEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `lookup_method` and `get_slot_func_index` are never used [INFO] [stdout] --> src/vm/vtable.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl VTable { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn lookup_method(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn get_slot_func_index(&self, slot_index: MethodIndex) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `trait_name` is never read [INFO] [stdout] --> src/vm/vtable.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 126 | pub struct TraitVTable { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 127 | /// Trait 名称 [INFO] [stdout] 128 | pub trait_name: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TraitVTable` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_or_create` and `create_with_parent` are never used [INFO] [stdout] --> src/vm/vtable.rs:200:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl VTableRegistry { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 200 | pub fn get_or_create(&mut self, type_name: &str) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub fn create_with_parent(&mut self, type_name: &str, parent_name: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuntimeTypeInfo` is never constructed [INFO] [stdout] --> src/vm/vtable.rs:220:12 [INFO] [stdout] | [INFO] [stdout] 220 | pub struct RuntimeTypeInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FieldInfo` is never constructed [INFO] [stdout] --> src/vm/vtable.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 233 | pub struct FieldInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_field`, `get_field_index`, and `set_vtable` are never used [INFO] [stdout] --> src/vm/vtable.rs:244:12 [INFO] [stdout] | [INFO] [stdout] 242 | impl RuntimeTypeInfo { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 243 | /// 创建新的类型信息 [INFO] [stdout] 244 | pub fn new(type_id: TypeId, type_name: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | pub fn add_field(&mut self, name: impl Into, is_mutable: bool) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn get_field_index(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn set_vtable(&mut self, vtable: Arc) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OLD_GEN_THRESHOLD` is never used [INFO] [stdout] --> src/vm/gc.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const OLD_GEN_THRESHOLD: usize = 8 * 1024 * 1024; // 8MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROMOTION_AGE` is never used [INFO] [stdout] --> src/vm/gc.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const PROMOTION_AGE: u8 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GcHeader` is never constructed [INFO] [stdout] --> src/vm/gc.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct GcHeader { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AtomicU8` is never constructed [INFO] [stdout] --> src/vm/gc.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct AtomicU8(AtomicUsize); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `load`, `store`, and `fetch_add` are never used [INFO] [stdout] --> src/vm/gc.rs:49:18 [INFO] [stdout] | [INFO] [stdout] 48 | impl AtomicU8 { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 49 | pub const fn new(v: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn load(&self, order: Ordering) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn store(&self, v: u8, order: Ordering) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn fetch_add(&self, v: u8, order: Ordering) -> u8 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/vm/gc.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl GcHeader { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] 67 | pub fn new(size: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_frees`, `major_gc_count`, `last_gc_time_ns`, and `total_pause_time_ns` are never read [INFO] [stdout] --> src/vm/gc.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct GcStats { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 87 | pub total_frees: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub major_gc_count: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 94 | /// 上次 GC 耗时(纳秒) [INFO] [stdout] 95 | pub last_gc_time_ns: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 96 | /// 总 GC 暂停时间(纳秒) [INFO] [stdout] 97 | pub total_pause_time_ns: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GcStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ptr`, `tag`, `size`, `marked`, `age`, and `in_old_gen` are never read [INFO] [stdout] --> src/vm/gc.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 105 | struct AllocatedObject { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 106 | /// 对象指针 [INFO] [stdout] 107 | ptr: u64, [INFO] [stdout] | ^^^ [INFO] [stdout] 108 | /// 堆标签 [INFO] [stdout] 109 | tag: HeapTag, [INFO] [stdout] | ^^^ [INFO] [stdout] 110 | /// 对象大小 [INFO] [stdout] 111 | size: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 112 | /// 是否已标记 [INFO] [stdout] 113 | marked: bool, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 114 | /// 对象年龄 [INFO] [stdout] 115 | age: u8, [INFO] [stdout] | ^^^ [INFO] [stdout] 116 | /// 是否在老年代 [INFO] [stdout] 117 | in_old_gen: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `old_gen`, `old_size`, and `gc_running` are never read [INFO] [stdout] --> src/vm/gc.rs:125:5 [INFO] [stdout] | [INFO] [stdout] 121 | pub struct Heap { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 125 | old_gen: Mutex>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | old_size: AtomicUsize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | gc_running: AtomicBool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `should_major_gc`, `set_enabled`, and `is_gc_running` are never used [INFO] [stdout] --> src/vm/gc.rs:191:12 [INFO] [stdout] | [INFO] [stdout] 140 | impl Heap { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn should_major_gc(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn set_enabled(&self, enabled: bool) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn is_gc_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `heap` is never read [INFO] [stdout] --> src/vm/gc.rs:225:5 [INFO] [stdout] | [INFO] [stdout] 223 | pub struct MarkSweepGc { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] 224 | /// 堆 [INFO] [stdout] 225 | heap: Arc, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/vm/gc.rs:235:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl MarkSweepGc { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 235 | pub fn minor_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | fn do_minor_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn major_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 356 | fn do_major_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | fn mark_value(&self, value: &Value, marked: &mut HashSet) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 449 | fn mark_references(&self, value: &Value, marked: &mut HashSet) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 514 | fn free_object(&self, obj: &AllocatedObject) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GcResult` is never used [INFO] [stdout] --> src/vm/gc.rs:581:10 [INFO] [stdout] | [INFO] [stdout] 581 | pub enum GcResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `gc_should_run` is never used [INFO] [stdout] --> src/vm/gc.rs:614:8 [INFO] [stdout] | [INFO] [stdout] 614 | pub fn gc_should_run() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `gc_stats` is never used [INFO] [stdout] --> src/vm/gc.rs:619:8 [INFO] [stdout] | [INFO] [stdout] 619 | pub fn gc_stats() -> GcStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ConcurrentMarkState` is never used [INFO] [stdout] --> src/vm/gc.rs:629:10 [INFO] [stdout] | [INFO] [stdout] 629 | pub enum ConcurrentMarkState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConcurrentMarkGc` is never constructed [INFO] [stdout] --> src/vm/gc.rs:648:12 [INFO] [stdout] | [INFO] [stdout] 648 | pub struct ConcurrentMarkGc { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vm/gc.rs:662:12 [INFO] [stdout] | [INFO] [stdout] 660 | impl ConcurrentMarkGc { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 661 | /// 创建并发标记 GC [INFO] [stdout] 662 | pub fn new(heap: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 673 | pub fn state(&self) -> ConcurrentMarkState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 678 | pub fn start_cycle(&self, root_scanner: F) -> bool [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 715 | pub fn incremental_mark(&self, max_objects: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 749 | pub fn remark(&self, root_scanner: F) -> bool [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 797 | pub fn concurrent_sweep(&self) -> GcResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 862 | pub fn write_barrier(&self, ptr: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 869 | fn mark_object_references(&self, ptr: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `decl` and `members` are never read [INFO] [stdout] --> src/package/resolver.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct ResolvedImport { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 27 | /// 原始导入声明 [INFO] [stdout] 28 | pub decl: ImportDecl, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub members: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ResolvedImport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_stdlib_dir`, `is_builtin`, and `get_builtin_exports` are never used [INFO] [stdout] --> src/package/resolver.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl PackageResolver { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn set_stdlib_dir(&mut self, path: PathBuf) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn is_builtin(&self, module_path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn get_builtin_exports(&self, module_path: &str) -> Option<&Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `StdlibFn` is never used [INFO] [stdout] --> src/stdlib/mod.rs:21:10 [INFO] [stdout] | [INFO] [stdout] 21 | pub type StdlibFn = fn(&[Value]) -> Result; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Stop` is never constructed [INFO] [stdout] --> src/stdlib/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum CallbackRequest { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 41 | Stop, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CallbackRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stop` is never used [INFO] [stdout] --> src/stdlib/mod.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 62 | impl CallbackChannel { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn stop(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `exports` and `call` are never used [INFO] [stdout] --> src/stdlib/mod.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub trait StdlibModule: Send + Sync { [INFO] [stdout] | ------------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 117 | fn exports(&self) -> Vec<&'static str>; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn call(&self, name: &str, args: &[Value]) -> Result; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get`, `has_module`, and `call` are never used [INFO] [stdout] --> src/stdlib/mod.rs:196:12 [INFO] [stdout] | [INFO] [stdout] 173 | impl StdlibRegistry { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 196 | pub fn get(&self, name: &str) -> Option<&dyn StdlibModule> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub fn has_module(&self, name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn call(&self, module: &str, func: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/stdlib/vmtest.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 11 | impl VmTestLib { [INFO] [stdout] | -------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 17 | fn assert(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | fn assert_equal(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | fn assert_true(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | fn assert_false(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | fn assert_null(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn assert_not_null(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | fn fail(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_throwable_type` is never used [INFO] [stdout] --> src/stdlib/exception.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | pub fn is_throwable_type(type_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_exception_parent` is never used [INFO] [stdout] --> src/stdlib/exception.rs:65:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn get_exception_parent(class_name: &str) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/stdlib/exception.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 90 | impl ExceptionLib { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 96 | fn create_exception_instance(class_name: &str, message: String, cause: Option) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | fn create_throwable(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | fn create_error(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | fn create_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | fn runtime_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | fn null_pointer_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn index_out_of_bounds(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn illegal_argument(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | fn arithmetic_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | fn io_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | fn is_throwable(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 258 | fn is_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 295 | fn get_exception_type(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | fn get_exception_message(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 350 | fn get_exception_cause(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 367 | fn is_instance_of(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `thread_pool` is never read [INFO] [stdout] --> src/stdlib/net/mod.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct NetTcpLib { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 15 | thread_pool: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_socket_ptr` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:419:4 [INFO] [stdout] | [INFO] [stdout] 419 | fn extract_socket_ptr(value: &Value) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_listener_ptr` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:425:4 [INFO] [stdout] | [INFO] [stdout] 425 | fn extract_listener_ptr(value: &Value) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tcp_socket_value` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:432:4 [INFO] [stdout] | [INFO] [stdout] 432 | fn create_tcp_socket_value(ptr: u64) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tcp_listener_value` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:437:4 [INFO] [stdout] | [INFO] [stdout] 437 | fn create_tcp_listener_value(ptr: u64) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_connect` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:442:8 [INFO] [stdout] | [INFO] [stdout] 442 | pub fn socket_connect(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_send` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:447:8 [INFO] [stdout] | [INFO] [stdout] 447 | pub fn socket_send(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_receive` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:480:8 [INFO] [stdout] | [INFO] [stdout] 480 | pub fn socket_receive(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_close` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:516:8 [INFO] [stdout] | [INFO] [stdout] 516 | pub fn socket_close(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_set_read_timeout` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:542:8 [INFO] [stdout] | [INFO] [stdout] 542 | pub fn socket_set_read_timeout(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_set_write_timeout` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:568:8 [INFO] [stdout] | [INFO] [stdout] 568 | pub fn socket_set_write_timeout(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_set_nodelay` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:594:8 [INFO] [stdout] | [INFO] [stdout] 594 | pub fn socket_set_nodelay(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_shutdown` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:620:8 [INFO] [stdout] | [INFO] [stdout] 620 | pub fn socket_shutdown(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `listener_bind` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:643:8 [INFO] [stdout] | [INFO] [stdout] 643 | pub fn listener_bind(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `listener_accept` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:648:8 [INFO] [stdout] | [INFO] [stdout] 648 | pub fn listener_accept(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `listener_close` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:677:8 [INFO] [stdout] | [INFO] [stdout] 677 | pub fn listener_close(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_BUFFER_SIZE` is never used [INFO] [stdout] --> src/stdlib/net/http.rs:35:7 [INFO] [stdout] | [INFO] [stdout] 35 | const DEFAULT_BUFFER_SIZE: usize = 8192; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `protocol` and `query_params` are never read [INFO] [stdout] --> src/stdlib/net/http.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct ParsedUrl { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 44 | /// 协议(http/https) [INFO] [stdout] 45 | pub protocol: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub query_params: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsedUrl` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `url_encode` is never used [INFO] [stdout] --> src/stdlib/net/http.rs:186:4 [INFO] [stdout] | [INFO] [stdout] 186 | fn url_encode(s: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `status_text` is never read [INFO] [stdout] --> src/stdlib/net/http.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 259 | pub struct HttpResponseData { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 263 | pub status_text: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpResponseData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `host` and `port` are never read [INFO] [stdout] --> src/stdlib/net/http.rs:448:5 [INFO] [stdout] | [INFO] [stdout] 444 | pub struct HttpServerHandle { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 448 | host: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 449 | /// 端口号 [INFO] [stdout] 450 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_running` is never used [INFO] [stdout] --> src/stdlib/net/http.rs:479:8 [INFO] [stdout] | [INFO] [stdout] 455 | impl HttpServerHandle { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 479 | fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `workers` and `sender` are never read [INFO] [stdout] --> src/stdlib/net/io_thread_pool.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct IoThreadPool { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 8 | workers: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 9 | sender: Sender, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `execute` is never used [INFO] [stdout] --> src/stdlib/net/io_thread_pool.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl IoThreadPool { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn execute(&self, f: F) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `thread` is never read [INFO] [stdout] --> src/stdlib/net/io_thread_pool.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 31 | struct Worker { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 32 | thread: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `num_processors` is never used [INFO] [stdout] --> src/runtime/mod.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn num_processors() -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stack`, `context`, `func`, `args`, `preempt`, and `schedule_count` are never read [INFO] [stdout] --> src/runtime/goroutine.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Goroutine { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 53 | pub stack: Mutex, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 54 | /// 执行上下文 [INFO] [stdout] 55 | pub context: Mutex, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 56 | /// 要执行的函数 [INFO] [stdout] 57 | pub func: Option>, [INFO] [stdout] | ^^^^ [INFO] [stdout] 58 | /// 函数参数 [INFO] [stdout] 59 | pub args: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | preempt: AtomicU8, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 64 | /// 调度计数(用于公平调度) [INFO] [stdout] 65 | schedule_count: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/goroutine.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl Goroutine { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn new_main(id: GoId) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn new_idle(id: GoId) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn set_status(&self, status: GoroutineStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn cas_status(&self, expected: GoroutineStatus, new: GoroutineStatus) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn is_runnable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn is_waiting(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn is_dead(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn should_preempt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn request_preempt(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn clear_preempt(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn inc_schedule_count(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub fn schedule_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn reset(&self, id: GoId, func: Arc, args: Vec) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | pub fn mark_dead(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn park(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn unpark(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GoroutineHandle` is never constructed [INFO] [stdout] --> src/runtime/goroutine.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 248 | pub struct GoroutineHandle { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `id`, `status`, `is_done`, and `inner` are never used [INFO] [stdout] --> src/runtime/goroutine.rs:254:12 [INFO] [stdout] | [INFO] [stdout] 252 | impl GoroutineHandle { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 253 | /// 创建新的句柄 [INFO] [stdout] 254 | pub fn new(g: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn id(&self) -> GoId { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 264 | pub fn status(&self) -> GoroutineStatus { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub fn is_done(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 274 | pub fn inner(&self) -> &Arc { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/stack.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl Stack { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn with_capacity(capacity: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn base(&self) -> *mut u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn top(&self) -> *mut u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn sp(&self) -> usize { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn set_sp(&mut self, sp: usize) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn needs_grow(&self, additional: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StackFrameInfo` is never constructed [INFO] [stdout] --> src/runtime/stack.rs:256:12 [INFO] [stdout] | [INFO] [stdout] 256 | pub struct StackFrameInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StackScanContext` is never constructed [INFO] [stdout] --> src/runtime/stack.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 268 | pub struct StackScanContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_frame`, and `scan_roots` are never used [INFO] [stdout] --> src/runtime/stack.rs:279:12 [INFO] [stdout] | [INFO] [stdout] 277 | impl StackScanContext { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 278 | /// 创建新的扫描上下文 [INFO] [stdout] 279 | pub fn new(stack: &Stack) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 288 | pub fn add_frame(&mut self, info: StackFrameInfo) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 295 | pub fn scan_roots(&self, mut callback: F) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `GcRootScanner` is never used [INFO] [stdout] --> src/runtime/stack.rs:315:11 [INFO] [stdout] | [INFO] [stdout] 315 | pub trait GcRootScanner { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_full`, `steal_batch`, and `steal_batch_to_vec` are never used [INFO] [stdout] --> src/runtime/queue.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 28 | impl LocalQueue { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn is_full(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn steal_batch(&self, dst: &LocalQueue) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn steal_batch_to_vec(&self, max: usize) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StealStats` is never constructed [INFO] [stdout] --> src/runtime/queue.rs:222:12 [INFO] [stdout] | [INFO] [stdout] 222 | pub struct StealStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_attempt`, `success_rate`, `recent_success_rate`, and `avg_stolen_per_success` are never used [INFO] [stdout] --> src/runtime/queue.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 233 | impl StealStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 234 | /// 创建新的统计 [INFO] [stdout] 235 | pub const fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub fn record_attempt(&self, success: bool, tasks_stolen: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 261 | pub fn success_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn recent_success_rate(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn avg_stolen_per_success(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveStealStrategy` is never constructed [INFO] [stdout] --> src/runtime/queue.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 297 | pub struct AdaptiveStealStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record`, `suggested_interval`, `stats`, and `should_steal` are never used [INFO] [stdout] --> src/runtime/queue.rs:310:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl AdaptiveStealStrategy { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 309 | /// 创建新的自适应策略 [INFO] [stdout] 310 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn record(&self, success: bool, tasks_stolen: usize) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 336 | pub fn suggested_interval(&self) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 342 | pub fn stats(&self) -> &StealStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 349 | pub fn should_steal(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_empty`, `push_batch`, and `pop_batch` are never used [INFO] [stdout] --> src/runtime/queue.rs:411:12 [INFO] [stdout] | [INFO] [stdout] 394 | impl GlobalQueue { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 411 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | pub fn push_batch(&self, batch: Vec>) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 444 | pub fn pop_batch(&self, max: usize) -> Vec> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `next_g`, `schedule_count`, and `last_schedule_time` are never read [INFO] [stdout] --> src/runtime/processor.rs:52:5 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct Processor { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 52 | next_g: Mutex>>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 56 | schedule_count: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 57 | /// 最后一次调度时间(纳秒) [INFO] [stdout] 58 | last_schedule_time: AtomicU64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/runtime/processor.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl Processor { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn set_status(&self, status: ProcessorStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn is_idle(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn set_next(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn take_next(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn bind_machine(&self, machine_id: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn unbind_machine(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn inc_schedule_count(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn schedule_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | pub fn update_schedule_time(&self, time_ns: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn last_schedule_time(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn enter_syscall(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn exit_syscall(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `thread`, `processor`, `should_stop`, `park_mutex`, `park_cond`, and `scheduler` are never read [INFO] [stdout] --> src/runtime/machine.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Machine { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 20 | thread: Mutex>>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 21 | /// 当前绑定的处理器 [INFO] [stdout] 22 | processor: AtomicPtr, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | should_stop: AtomicBool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 27 | /// 休眠/唤醒同步 [INFO] [stdout] 28 | park_mutex: Mutex, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 29 | park_cond: Condvar, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 30 | /// 关联的调度器 [INFO] [stdout] 31 | scheduler: AtomicPtr, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/machine.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl Machine { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 37 | /// 创建新的工作线程 [INFO] [stdout] 38 | pub fn new(id: u64) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn set_scheduler(&self, scheduler: *mut Scheduler) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | fn scheduler(&self) -> Option<&Scheduler> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn processor(&self) -> Option<&Processor> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn bind_processor(&self, p: &Processor) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn unbind_processor(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn start(self: &Arc) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn run_loop(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn find_work(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | fn execute(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn park(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub fn unpark(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub fn join(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `SCHEDULER` is never used [INFO] [stdout] --> src/runtime/scheduler.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub static SCHEDULER: OnceLock = OnceLock::new(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_scheduler` is never used [INFO] [stdout] --> src/runtime/scheduler.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn get_scheduler() -> &'static Scheduler { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `max_machines`, `global_batch_size`, and `preempt_time_slice_us` are never read [INFO] [stdout] --> src/runtime/scheduler.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct SchedulerConfig { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 33 | pub max_machines: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 34 | /// 全局队列批量获取大小 [INFO] [stdout] 35 | pub global_batch_size: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | /// 抢占时间片(微秒) [INFO] [stdout] 37 | pub preempt_time_slice_us: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SchedulerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/runtime/scheduler.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct Scheduler { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 54 | /// 配置 [INFO] [stdout] 55 | config: SchedulerConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 56 | /// 所有处理器 [INFO] [stdout] 57 | processors: Vec>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 58 | /// 所有工作线程 [INFO] [stdout] 59 | machines: RwLock>>, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 60 | /// 全局运行队列 [INFO] [stdout] 61 | global_queue: GlobalQueue, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 62 | /// 空闲处理器列表 [INFO] [stdout] 63 | idle_processors: Mutex>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 64 | /// 空闲处理器数量 [INFO] [stdout] 65 | idle_count: AtomicUsize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | start_time: Instant, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 74 | /// 当前执行的字节码 [INFO] [stdout] 75 | chunk: RwLock>>, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 76 | /// 协程执行回调 [INFO] [stdout] 77 | executor: RwLock>>, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/runtime/scheduler.rs:115:12 [INFO] [stdout] | [INFO] [stdout] 80 | impl Scheduler { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn set_chunk(&self, chunk: Arc) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn chunk(&self) -> Option> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn set_executor(&self, executor: F) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn start(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn spawn(&self, func: Arc, args: Vec) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn schedule(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn get_from_global(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn get_batch_from_global(&self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | pub fn steal_work(&self, thief: &Processor) -> Option> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn steal_work_batch(&self, thief: &Processor, batch_size: usize) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | fn get_idle_processor(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | fn mark_processor_busy(&self, idx: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn mark_processor_idle(&self, idx: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 339 | fn wake_machine(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 350 | pub fn execute_goroutine(&self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub fn finish_goroutine(&self, _g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 362 | pub fn yield_goroutine(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 368 | pub fn park_goroutine(&self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 373 | pub fn unpark_goroutine(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 379 | pub fn should_preempt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 386 | pub fn elapsed(&self) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | pub fn num_processors(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 397 | pub fn processor(&self, idx: usize) -> Option<&Arc> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 403 | pub fn global_queue_len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub fn stats(&self) -> SchedulerStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SchedulerStats` is never constructed [INFO] [stdout] --> src/runtime/scheduler.rs:436:12 [INFO] [stdout] | [INFO] [stdout] 436 | pub struct SchedulerStats { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ChannelStatus` is never used [INFO] [stdout] --> src/runtime/channel.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum ChannelStatus { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `goroutine` and `value` are never read [INFO] [stdout] --> src/runtime/channel.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 26 | struct Waiter { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 27 | /// 等待的协程 [INFO] [stdout] 28 | goroutine: Arc, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 29 | /// 发送的值(仅用于发送等待) [INFO] [stdout] 30 | value: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `send_waiters` is never read [INFO] [stdout] --> src/runtime/channel.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct Channel { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 44 | send_waiters: Mutex>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `id`, `capacity`, `is_empty`, `send_waiters_count`, and `recv_waiters_count` are never used [INFO] [stdout] --> src/runtime/channel.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl Channel { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn id(&self) -> u64 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn capacity(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub fn send_waiters_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn recv_waiters_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TypedChannel` is never constructed [INFO] [stdout] --> src/runtime/channel.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 263 | pub struct TypedChannel { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/channel.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 268 | impl + TryFrom> TypedChannel { [INFO] [stdout] | ----------------------------------------------------- associated items in this implementation [INFO] [stdout] 269 | /// 创建无缓冲 Channel [INFO] [stdout] 270 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 278 | pub fn with_capacity(capacity: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn send(&self, value: T) -> Result<(), T> [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn try_send(&self, value: T) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub fn receive(&self) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn try_receive(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn close(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 317 | pub fn is_closed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/runtime/channel.rs:356:20 [INFO] [stdout] | [INFO] [stdout] 356 | ReceivedClosed(usize), [INFO] [stdout] | -------------- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `SelectResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 356 - ReceivedClosed(usize), [INFO] [stdout] 356 + ReceivedClosed(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_select` is never used [INFO] [stdout] --> src/runtime/channel.rs:411:8 [INFO] [stdout] | [INFO] [stdout] 411 | pub fn try_select(cases: &[SelectCase]) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `select_timeout` is never used [INFO] [stdout] --> src/runtime/channel.rs:418:8 [INFO] [stdout] | [INFO] [stdout] 418 | pub fn select_timeout(cases: &[SelectCase], timeout: std::time::Duration) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `return_ip`, `base_slot`, and `is_method_call` are never read [INFO] [stdout] --> src/runtime/context.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CallFrameSnapshot { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 10 | /// 返回地址 [INFO] [stdout] 11 | pub return_ip: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 12 | /// 栈基址 [INFO] [stdout] 13 | pub base_slot: u16, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 14 | /// 是否是方法调用 [INFO] [stdout] 15 | pub is_method_call: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CallFrameSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `current_base`, `value_stack`, and `call_frames` are never read [INFO] [stdout] --> src/runtime/context.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct VMState { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | pub current_base: usize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | /// 值栈 [INFO] [stdout] 26 | pub value_stack: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 27 | /// 调用帧栈 [INFO] [stdout] 28 | pub call_frames: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VMState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reset` is never used [INFO] [stdout] --> src/runtime/context.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl VMState { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `started`, `finished`, and `waiting_on` are never read [INFO] [stdout] --> src/runtime/context.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct Context { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 65 | pub started: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 66 | /// 协程是否已完成 [INFO] [stdout] 67 | pub finished: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 68 | /// 等待的资源(Channel ID 等) [INFO] [stdout] 69 | pub waiting_on: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Context` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/runtime/context.rs:76:5 [INFO] [stdout] | [INFO] [stdout] 74 | pub enum WaitReason { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 75 | /// 等待 Channel 发送 [INFO] [stdout] 76 | ChannelSend(u64), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 77 | /// 等待 Channel 接收 [INFO] [stdout] 78 | ChannelReceive(u64), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 79 | /// 等待 Mutex [INFO] [stdout] 80 | Mutex(u64), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 81 | /// 等待 WaitGroup [INFO] [stdout] 82 | WaitGroup(u64), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 83 | /// 等待定时器 [INFO] [stdout] 84 | Timer(u64), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 85 | /// 等待 IO [INFO] [stdout] 86 | IO, [INFO] [stdout] | ^^ [INFO] [stdout] 87 | /// 主动让出 [INFO] [stdout] 88 | Yield, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WaitReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `mark_started`, `mark_finished`, `is_waiting`, `wait_for`, `clear_wait`, and `reset` are never used [INFO] [stdout] --> src/runtime/context.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 91 | impl Context { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn mark_started(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn mark_finished(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn is_waiting(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn wait_for(&mut self, reason: WaitReason) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn clear_wait(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ExecuteResult` is never used [INFO] [stdout] --> src/runtime/coroutine_vm.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum ExecuteResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CoroutineVM` is never constructed [INFO] [stdout] --> src/runtime/coroutine_vm.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct CoroutineVM { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `set_time_slice`, `init_from_goroutine`, `save_to_goroutine`, `execute`, and `execute_to_completion` are never used [INFO] [stdout] --> src/runtime/coroutine_vm.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl CoroutineVM { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 44 | /// 创建新的协程 VM [INFO] [stdout] 45 | pub fn new(chunk: Arc, locale: Locale) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn set_time_slice(&mut self, instructions: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn init_from_goroutine(&mut self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn save_to_goroutine(&self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn execute(&mut self, g: &Goroutine) -> ExecuteResult { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn execute_to_completion(&mut self, g: &Goroutine) -> ExecuteResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VMCoroutineExt` is never used [INFO] [stdout] --> src/runtime/coroutine_vm.rs:198:11 [INFO] [stdout] | [INFO] [stdout] 198 | pub trait VMCoroutineExt { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreemptConfig` is never constructed [INFO] [stdout] --> src/runtime/preempt.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct PreemptConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `configure` is never used [INFO] [stdout] --> src/runtime/preempt.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl PreemptState { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn configure(&self, config: &PreemptConfig) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `reset`, `force_preempt`, `elapsed`, and `instruction_count` are never used [INFO] [stdout] --> src/runtime/preempt.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 90 | impl PreemptTracker { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn force_preempt(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn elapsed(&self) -> Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn instruction_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init` is never used [INFO] [stdout] --> src/runtime/preempt.rs:205:12 [INFO] [stdout] | [INFO] [stdout] 205 | pub fn init() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `request_preempt` is never used [INFO] [stdout] --> src/runtime/preempt.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 211 | pub fn request_preempt(_thread_id: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `locale`, `num_workers`, and `time_slice_us` are never read [INFO] [stdout] --> src/runtime/runtime.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct RuntimeConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 24 | /// 语言环境 [INFO] [stdout] 25 | pub locale: Locale, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub num_workers: usize, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 30 | /// 时间片大小(微秒) [INFO] [stdout] 31 | pub time_slice_us: u64, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RuntimeConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Runtime` is never constructed [INFO] [stdout] --> src/runtime/runtime.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct Runtime { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/runtime.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 63 | impl Runtime { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 64 | /// 创建新的运行时 [INFO] [stdout] 65 | pub fn new(chunk: Arc, config: RuntimeConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn with_chunk(chunk: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn run(&self) -> Result<(), RuntimeError> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn spawn(&self, func: Arc, args: Vec) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn create_channel(&self, capacity: usize) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn stats(&self) -> super::scheduler::SchedulerStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuntimeHandle` is never constructed [INFO] [stdout] --> src/runtime/runtime.rs:161:12 [INFO] [stdout] | [INFO] [stdout] 161 | pub struct RuntimeHandle { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `go`, and `yield_now` are never used [INFO] [stdout] --> src/runtime/runtime.rs:169:12 [INFO] [stdout] | [INFO] [stdout] 167 | impl RuntimeHandle { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 168 | /// 创建新的运行时句柄 [INFO] [stdout] 169 | pub fn new(chunk: Arc, locale: Locale) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn go(&self, func: Arc, args: Vec) -> Option { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn yield_now(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_runtime_handle` is never used [INFO] [stdout] --> src/runtime/runtime.rs:194:8 [INFO] [stdout] | [INFO] [stdout] 194 | pub fn set_runtime_handle(handle: RuntimeHandle) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `with_runtime_handle` is never used [INFO] [stdout] --> src/runtime/runtime.rs:201:8 [INFO] [stdout] | [INFO] [stdout] 201 | pub fn with_runtime_handle(f: F) -> Option [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `initialized` are never read [INFO] [stdout] --> src/typechecker/environment.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct VariableInfo { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 11 | /// 变量名 [INFO] [stdout] 12 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub initialized: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VariableInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, `is_method`, and `owner_type` are never read [INFO] [stdout] --> src/typechecker/environment.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct FunctionInfo { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 24 | /// 函数名 [INFO] [stdout] 25 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 26 | /// 泛型参数 [INFO] [stdout] 27 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub is_method: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 38 | /// 所属类型(如果是方法) [INFO] [stdout] 39 | pub owner_type: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, `interfaces`, `traits`, `static_fields`, and `static_methods` are never read [INFO] [stdout] --> src/typechecker/environment.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct ClassInfo { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 45 | /// 类名 [INFO] [stdout] 46 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 47 | /// 泛型参数 [INFO] [stdout] 48 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub interfaces: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 53 | /// 使用的 Trait [INFO] [stdout] 54 | pub traits: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub static_fields: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 61 | /// 静态方法 [INFO] [stdout] 62 | pub static_methods: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, and `interfaces` are never read [INFO] [stdout] --> src/typechecker/environment.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 69 | pub struct StructInfo { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 70 | /// 结构体名 [INFO] [stdout] 71 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 72 | /// 泛型参数 [INFO] [stdout] 73 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 74 | /// 实现的接口 [INFO] [stdout] 75 | pub interfaces: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StructInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `is_mutable`, and `visibility` are never read [INFO] [stdout] --> src/typechecker/environment.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct FieldInfo { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 85 | /// 字段名 [INFO] [stdout] 86 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub is_mutable: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 91 | /// 可见性 [INFO] [stdout] 92 | pub visibility: Visibility, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FieldInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, and `super_traits` are never read [INFO] [stdout] --> src/typechecker/environment.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 106 | pub struct TraitInfo { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 107 | /// Trait 名 [INFO] [stdout] 108 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 109 | /// 泛型参数 [INFO] [stdout] 110 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 111 | /// 父 Trait [INFO] [stdout] 112 | pub super_traits: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TraitInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, and `super_interfaces` are never read [INFO] [stdout] --> src/typechecker/environment.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 121 | pub struct InterfaceInfo { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 122 | /// 接口名 [INFO] [stdout] 123 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 124 | /// 泛型参数 [INFO] [stdout] 125 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 126 | /// 父接口 [INFO] [stdout] 127 | pub super_interfaces: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `variants`, and `methods` are never read [INFO] [stdout] --> src/typechecker/environment.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct EnumInfo { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 135 | /// 枚举名 [INFO] [stdout] 136 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 137 | /// 变体 [INFO] [stdout] 138 | pub variants: HashMap, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 139 | /// 方法 [INFO] [stdout] 140 | pub methods: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EnumInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `value_type`, and `fields` are never read [INFO] [stdout] --> src/typechecker/environment.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 145 | pub struct EnumVariantInfo { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 146 | /// 变体名 [INFO] [stdout] 147 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 148 | /// 关联值类型(如果有) [INFO] [stdout] 149 | pub value_type: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 150 | /// 关联数据字段 [INFO] [stdout] 151 | pub fields: Vec<(String, Type)>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EnumVariantInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/typechecker/environment.rs:161:10 [INFO] [stdout] | [INFO] [stdout] 161 | Enum(EnumInfo), [INFO] [stdout] | ---- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TypeInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 161 - Enum(EnumInfo), [INFO] [stdout] 161 + Enum(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `actual_type` are never read [INFO] [stdout] --> src/typechecker/environment.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 163 | Alias { [INFO] [stdout] | ----- fields in this variant [INFO] [stdout] 164 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 165 | actual_type: Type, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_type_param` is never used [INFO] [stdout] --> src/typechecker/environment.rs:218:12 [INFO] [stdout] | [INFO] [stdout] 182 | impl TypeScope { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn get_type_param(&self, name: &str) -> Option<&GenericParam> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `trait_impls` is never read [INFO] [stdout] --> src/typechecker/environment.rs:235:5 [INFO] [stdout] | [INFO] [stdout] 225 | pub struct TypeEnvironment { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 235 | trait_impls: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeEnvironment` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `lookup_type_param`, `register_trait_impl`, `find_trait_impl`, `type_matches`, `set_this_type`, and `resolve_type` are never used [INFO] [stdout] --> src/typechecker/environment.rs:303:12 [INFO] [stdout] | [INFO] [stdout] 242 | impl TypeEnvironment { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 303 | pub fn lookup_type_param(&self, name: &str) -> Option<&GenericParam> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | pub fn register_trait_impl(&mut self, impl_: TraitImpl) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub fn find_trait_impl(&self, ty: &Type, trait_name: &str) -> Option<&TraitImpl> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 364 | fn type_matches(&self, pattern: &Type, actual: &Type) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 370 | pub fn set_this_type(&mut self, ty: Option) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 390 | pub fn resolve_type(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `UnifyResult` is never used [INFO] [stdout] --> src/typechecker/unify.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | pub type UnifyResult = Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Unifier` is never constructed [INFO] [stdout] --> src/typechecker/unify.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Unifier { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/typechecker/unify.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl Unifier { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 20 | /// 创建新的统一器 [INFO] [stdout] 21 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn with_substitution(substitution: Substitution) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn unify(&mut self, t1: &Type, t2: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | fn unify_internal(&mut self, t1: &Type, t2: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | fn unify_var(&mut self, var: &TypeVar, ty: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | fn occurs_in(&self, var: &TypeVar, ty: &Type) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn apply(&self, ty: &Type) -> Type { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | pub fn get_substitution(&self) -> &Substitution { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 281 | pub fn into_substitution(self) -> Substitution { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unify` is never used [INFO] [stdout] --> src/typechecker/unify.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn unify(t1: &Type, t2: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unify_with_subst` is never used [INFO] [stdout] --> src/typechecker/unify.rs:299:8 [INFO] [stdout] | [INFO] [stdout] 299 | pub fn unify_with_subst( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Equal`, `Subtype`, `TraitBound`, and `Instantiate` are never constructed [INFO] [stdout] --> src/typechecker/constraint.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ConstraintKind { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 13 | /// 类型相等约束 T1 = T2 [INFO] [stdout] 14 | Equal(Type, Type), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | /// 子类型约束 T1 <: T2 [INFO] [stdout] 16 | Subtype { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | TraitBound { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | Instantiate { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConstraintKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reason` is never read [INFO] [stdout] --> src/typechecker/constraint.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct Constraint { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 40 | pub reason: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Constraint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new`, `equal`, `subtype`, and `trait_bound` are never used [INFO] [stdout] --> src/typechecker/constraint.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl Constraint { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] 44 | /// 创建新的约束 [INFO] [stdout] 45 | pub fn new(kind: ConstraintKind, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn equal(t1: Type, t2: Type, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn subtype(sub: Type, super_: Type, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn trait_bound(ty: Type, bound: TypeBound, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_constraint`, `add_constraints`, `get_substitution`, and `get_var_constraints` are never used [INFO] [stdout] --> src/typechecker/constraint.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 89 | impl ConstraintSolver { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn add_constraint(&mut self, constraint: Constraint) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn add_constraints(&mut self, constraints: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 401 | pub fn get_substitution(&self) -> &Substitution { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn get_var_constraints(&self, var_id: u64) -> Option<&Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/typechecker/error.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum TypeErrorKind { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 18 | UnknownType(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | UndefinedFunction(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | ConstraintNotSatisfied { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | CyclicTypeDependency(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 69 | /// 不可空类型赋值 null [INFO] [stdout] 70 | NullNotAllowed(Type), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 71 | /// 无效的类型转换 [INFO] [stdout] 72 | InvalidCast { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | UnreachableCode, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeErrorKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `notes` is never read [INFO] [stdout] --> src/typechecker/error.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 122 | pub struct TypeError { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 128 | pub notes: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_note`, `undefined_function`, and `constraint_not_satisfied` are never used [INFO] [stdout] --> src/typechecker/error.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 131 | impl TypeError { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn with_note(mut self, note: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn undefined_function(name: impl Into, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn constraint_not_satisfied( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_context` is never used [INFO] [stdout] --> src/typechecker/checker.rs:351:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl TypeChecker { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn set_context(&mut self, context: CompileContext) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new` and `from_types` are never used [INFO] [stdout] --> src/typechecker/monomorphize.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl MonoKey { [INFO] [stdout] | ------------ associated functions in this implementation [INFO] [stdout] 21 | /// 创建新的单态化键 [INFO] [stdout] 22 | pub fn new(base_name: impl Into, type_args: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn from_types(base_name: impl Into, type_args: &[Type]) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mangle_type` is never used [INFO] [stdout] --> src/typechecker/monomorphize.rs:54:4 [INFO] [stdout] | [INFO] [stdout] 54 | fn mangle_type(ty: &Type) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:99:9 [INFO] [stdout] | [INFO] [stdout] 97 | pub struct MonomorphizedClass { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 98 | /// 单态化后的名称 [INFO] [stdout] 99 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 100 | /// 原始名称 [INFO] [stdout] 101 | pub original_name: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 102 | /// 类型替换表 [INFO] [stdout] 103 | pub substitution: Substitution, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 104 | /// 字段(类型已替换) [INFO] [stdout] 105 | pub fields: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 106 | /// 方法(类型已替换) [INFO] [stdout] 107 | pub methods: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 108 | /// 父类(如果有) [INFO] [stdout] 109 | pub parent: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 110 | /// 是否是抽象类 [INFO] [stdout] 111 | pub is_abstract: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedClass` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `original_name`, `substitution`, `fields`, and `methods` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 116 | pub struct MonomorphizedStruct { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 117 | /// 单态化后的名称 [INFO] [stdout] 118 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 119 | /// 原始名称 [INFO] [stdout] 120 | pub original_name: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 121 | /// 类型替换表 [INFO] [stdout] 122 | pub substitution: Substitution, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 123 | /// 字段(类型已替换) [INFO] [stdout] 124 | pub fields: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 125 | /// 方法(类型已替换) [INFO] [stdout] 126 | pub methods: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedStruct` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `ty`, and `is_mutable` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 131 | pub struct MonomorphizedField { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 132 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 133 | pub ty: Type, [INFO] [stdout] | ^^ [INFO] [stdout] 134 | pub is_mutable: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedField` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `param_types`, `param_names`, `return_type`, and `is_static` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 139 | pub struct MonomorphizedMethod { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 140 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 141 | pub param_types: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 142 | pub param_names: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 143 | pub return_type: Type, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 144 | pub is_static: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedMethod` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `original_name`, `substitution`, `param_types`, `param_names`, and `return_type` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 149 | pub struct MonomorphizedFunction { [INFO] [stdout] | --------------------- fields in this struct [INFO] [stdout] 150 | /// 单态化后的名称 [INFO] [stdout] 151 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 152 | /// 原始名称 [INFO] [stdout] 153 | pub original_name: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 154 | /// 类型替换表 [INFO] [stdout] 155 | pub substitution: Substitution, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 156 | /// 参数类型 [INFO] [stdout] 157 | pub param_types: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 158 | /// 参数名 [INFO] [stdout] 159 | pub param_names: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 160 | /// 返回类型 [INFO] [stdout] 161 | pub return_type: Type, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedFunction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:192:5 [INFO] [stdout] | [INFO] [stdout] 191 | struct ClassDefInfo { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 192 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassDefInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:203:5 [INFO] [stdout] | [INFO] [stdout] 202 | struct StructDefInfo { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 203 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StructDefInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:212:5 [INFO] [stdout] | [INFO] [stdout] 211 | struct FunctionDefInfo { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 212 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionDefInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/typechecker/monomorphize.rs:317:12 [INFO] [stdout] | [INFO] [stdout] 229 | impl Monomorphizer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 317 | pub fn request_class(&mut self, name: &str, type_args: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn request_struct(&mut self, name: &str, type_args: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn request_function(&mut self, name: &str, type_args: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 502 | pub fn get_monomorphized_class(&self, key: &MonoKey) -> Option<&MonomorphizedClass> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | pub fn get_monomorphized_struct(&self, key: &MonoKey) -> Option<&MonomorphizedStruct> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 512 | pub fn get_monomorphized_function(&self, key: &MonoKey) -> Option<&MonomorphizedFunction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 517 | pub fn all_classes(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | pub fn all_structs(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | pub fn all_functions(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b1` [INFO] [stdout] --> src/typechecker/unify.rs:63:48 [INFO] [stdout] | [INFO] [stdout] 63 | (TypeParameter { name: n1, bounds: b1 }, TypeParameter { name: n2, bounds: b2 }) => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b2` [INFO] [stdout] --> src/typechecker/unify.rs:63:88 [INFO] [stdout] | [INFO] [stdout] 63 | (TypeParameter { name: n1, bounds: b1 }, TypeParameter { name: n2, bounds: b2 }) => { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `generic` [INFO] [stdout] --> src/typechecker/constraint.rs:184:43 [INFO] [stdout] | [INFO] [stdout] 184 | ConstraintKind::Instantiate { generic, args } => { [INFO] [stdout] | ^^^^^^^ help: try ignoring the field: `generic: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `args` [INFO] [stdout] --> src/typechecker/constraint.rs:184:52 [INFO] [stdout] | [INFO] [stdout] 184 | ConstraintKind::Instantiate { generic, args } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `args: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `main_signature_valid` is assigned to, but never used [INFO] [stdout] --> src/typechecker/checker.rs:479:13 [INFO] [stdout] | [INFO] [stdout] 479 | let mut main_signature_valid = true; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_main_signature_valid` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `main_signature_valid` is never read [INFO] [stdout] --> src/typechecker/checker.rs:486:25 [INFO] [stdout] | [INFO] [stdout] 486 | main_signature_valid = false; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:551:28 [INFO] [stdout] | [INFO] [stdout] 551 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Struct(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:571:28 [INFO] [stdout] | [INFO] [stdout] 571 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Class(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:585:28 [INFO] [stdout] | [INFO] [stdout] 585 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Interface(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:602:28 [INFO] [stdout] | [INFO] [stdout] 602 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Trait(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:623:28 [INFO] [stdout] | [INFO] [stdout] 623 | if let Err(e) = self.env.register_type(name.clone(), TypeInfo::Enum(info)) { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:631:28 [INFO] [stdout] | [INFO] [stdout] 631 | if let Err(e) = self.env.register_type( [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/typechecker/checker.rs:671:30 [INFO] [stdout] | [INFO] [stdout] 671 | Stmt::ClassDef { name, interfaces, traits, methods, span, .. } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:766:31 [INFO] [stdout] | [INFO] [stdout] 766 | .map_err(|e| TypeError::new(TypeErrorKind::DuplicateDefinition(name.clone()), *span))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `e` [INFO] [stdout] --> src/typechecker/checker.rs:749:31 [INFO] [stdout] | [INFO] [stdout] 749 | .map_err(|e| TypeError::new(TypeErrorKind::DuplicateDefinition(name.clone()), *span))?; [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_e` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:721:38 [INFO] [stdout] | [INFO] [stdout] 721 | Stmt::Expression { expr, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:725:33 [INFO] [stdout] | [INFO] [stdout] 725 | Stmt::Print { expr, span, .. } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/typechecker/checker.rs:905:27 [INFO] [stdout] | [INFO] [stdout] 905 | Stmt::FnDef { name, type_params, params, return_type, body, span, .. } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:975:34 [INFO] [stdout] | [INFO] [stdout] 975 | Stmt::Throw { value, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/typechecker/checker.rs:1218:27 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `start: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/typechecker/checker.rs:1218:34 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^ help: try ignoring the field: `end: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inclusive` [INFO] [stdout] --> src/typechecker/checker.rs:1218:39 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^^^^^^^ help: try ignoring the field: `inclusive: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1218:50 [INFO] [stdout] | [INFO] [stdout] 1218 | Expr::Range { start, end, inclusive, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1223:56 [INFO] [stdout] | [INFO] [stdout] 1223 | Expr::Closure { params, return_type, body, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `force` [INFO] [stdout] --> src/typechecker/checker.rs:1373:45 [INFO] [stdout] | [INFO] [stdout] 1373 | Expr::Cast { expr, target_type, force, span } => { [INFO] [stdout] | ^^^^^ help: try ignoring the field: `force: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1373:52 [INFO] [stdout] | [INFO] [stdout] 1373 | Expr::Cast { expr, target_type, force, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expr_ty` [INFO] [stdout] --> src/typechecker/checker.rs:1374:21 [INFO] [stdout] | [INFO] [stdout] 1374 | let expr_ty = self.infer_expr(expr)?; [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expr_ty` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `check_type` [INFO] [stdout] --> src/typechecker/checker.rs:1379:37 [INFO] [stdout] | [INFO] [stdout] 1379 | Expr::TypeCheck { expr, check_type, span } => { [INFO] [stdout] | ^^^^^^^^^^ help: try ignoring the field: `check_type: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1379:49 [INFO] [stdout] | [INFO] [stdout] 1379 | Expr::TypeCheck { expr, check_type, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `span` [INFO] [stdout] --> src/typechecker/checker.rs:1384:30 [INFO] [stdout] | [INFO] [stdout] 1384 | Expr::Go { call, span } => { [INFO] [stdout] | ^^^^ help: try ignoring the field: `span: _` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `main_file` [INFO] [stdout] --> src/main.rs:333:5 [INFO] [stdout] | [INFO] [stdout] 333 | main_file: Option<&Path>, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_main_file` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `build_compile_context` is never used [INFO] [stdout] --> src/main.rs:394:4 [INFO] [stdout] | [INFO] [stdout] 394 | fn build_compile_context(file_path: &Path) -> CompileContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Ja` is never constructed [INFO] [stdout] --> src/i18n/mod.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Locale { [INFO] [stdout] | ------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 19 | Ja, [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `Locale` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_str`, `code`, `name`, and `from_env` are never used [INFO] [stdout] --> src/i18n/mod.rs:24:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl Locale { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 23 | /// 从字符串解析语言 [INFO] [stdout] 24 | pub fn from_str(s: &str) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub fn code(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn name(&self) -> &'static str { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn from_env() -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_message_named` is never used [INFO] [stdout] --> src/i18n/mod.rs:86:8 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn format_message_named(key: &str, locale: Locale, args: &[(&str, &str)]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/parser/parser.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum ParseErrorKind { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 34 | /// 意外的 token [INFO] [stdout] 35 | UnexpectedToken, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | /// 期望的 token 未找到 [INFO] [stdout] 37 | ExpectedToken, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 38 | /// 意外的文件结束 [INFO] [stdout] 39 | UnexpectedEof, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | InvalidExpression, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 44 | /// 重复定义 [INFO] [stdout] 45 | DuplicateDefinition, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 46 | /// 无效的赋值目标 [INFO] [stdout] 47 | InvalidAssignmentTarget, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 48 | /// 无效的类型 [INFO] [stdout] 49 | InvalidType, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseErrorKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `kind`, `expected`, and `found` are never read [INFO] [stdout] --> src/parser/parser.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct ParseError { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 60 | pub kind: ParseErrorKind, [INFO] [stdout] | ^^^^ [INFO] [stdout] 61 | /// 期望的内容(如果有) [INFO] [stdout] 62 | pub expected: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 63 | /// 实际得到的内容 [INFO] [stdout] 64 | pub found: Option, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParseError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_kind`, `expected_token`, `unexpected_token`, `unexpected_eof`, and `with_hint` are never used [INFO] [stdout] --> src/parser/parser.rs:83:8 [INFO] [stdout] | [INFO] [stdout] 69 | impl ParseError { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 83 | fn with_kind(message: String, span: Span, kind: ParseErrorKind) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | fn expected_token(expected: &str, found: &str, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn unexpected_token(found: &str, context: &str, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn unexpected_eof(context: &str, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn with_hint(mut self, hint: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `parse_where_clauses`, `parse_single_where_clause`, `synchronize_to`, `report_error`, and `expect_one_of` are never used [INFO] [stdout] --> src/parser/parser.rs:1019:8 [INFO] [stdout] | [INFO] [stdout] 166 | impl Parser { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 1019 | fn parse_where_clauses(&mut self) -> Result, ParseError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1063 | fn parse_single_where_clause(&mut self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3419 | fn synchronize_to(&mut self, kinds: &[TokenKind]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3434 | fn report_error(&mut self, error: ParseError) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3442 | fn expect_one_of(&mut self, kinds: &[TokenKind]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/vm/vm.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl RuntimeError { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 65 | /// 创建新的运行时错误 [INFO] [stdout] 66 | pub fn new(message: String, line: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vtable_registry` and `inline_cache` are never read [INFO] [stdout] --> src/vm/vm.rs:141:5 [INFO] [stdout] | [INFO] [stdout] 123 | pub struct VM { [INFO] [stdout] | -- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 141 | vtable_registry: super::vtable::VTableRegistry, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | inline_cache: std::collections::HashMap<(String, String), u16>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vm/vm.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 152 | impl VM { [INFO] [stdout] | ------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn with_preempt(chunk: Arc, locale: Locale, preempt_flag: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | pub fn set_preempt_flag(&mut self, flag: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn request_preempt(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 221 | pub fn lookup_method_cached(&mut self, type_name: &str, method_name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn clear_inline_cache(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn scan_gc_roots(&self, mut callback: F) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub fn stack_roots(&self) -> impl std::iter::Iterator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn stack_depth(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn frame_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6124 | pub fn ip(&self) -> usize { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 6130 | pub fn set_ip_value(&mut self, ip: usize) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6136 | pub fn current_base(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6142 | pub fn set_current_base(&mut self, base: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6147 | pub fn save_stack(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6152 | pub fn restore_stack(&mut self, stack: &[Value]) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6158 | pub fn save_frames(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6167 | pub fn restore_frames(&mut self, frames: &[crate::runtime::context::CallFrameSnapshot]) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6181 | pub fn push_value(&mut self, value: Value) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6188 | pub fn step(&mut self) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 6236 | fn step_sync(&mut self) -> Result<(), RuntimeError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6484 | pub fn get_or_create_vtable(&mut self, type_name: &str) -> std::sync::Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6489 | pub fn register_vtable(&mut self, vtable: super::vtable::VTable) -> std::sync::Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6494 | pub fn value_implements_trait(&self, value: &Value, trait_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6513 | pub fn vtable_dispatch(&mut self, receiver: &Value, method_name: &str, args: Vec) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6554 | pub fn init_type_vtable(&mut self, type_name: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6581 | pub fn get_runtime_type_info(&self, value: &Value) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `func_index` are never read [INFO] [stdout] --> src/vm/vtable.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct VTableEntry { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 17 | /// 方法名 [INFO] [stdout] 18 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 19 | /// 方法在常量池中的索引 [INFO] [stdout] 20 | pub func_index: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VTableEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `type_id`, `type_name`, `methods`, `method_slots`, `trait_impls`, and `parent` are never read [INFO] [stdout] --> src/vm/vtable.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct VTable { [INFO] [stdout] | ------ fields in this struct [INFO] [stdout] 26 | /// 类型 ID [INFO] [stdout] 27 | pub type_id: TypeId, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 28 | /// 类型名称 [INFO] [stdout] 29 | pub type_name: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 30 | /// 方法表(方法名 -> 函数索引) [INFO] [stdout] 31 | pub methods: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 32 | /// 有序的方法列表(用于虚方法调用) [INFO] [stdout] 33 | pub method_slots: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 34 | /// 实现的 Trait(trait名 -> TraitVTable) [INFO] [stdout] 35 | pub trait_impls: HashMap, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 36 | /// 父类 VTable(用于继承) [INFO] [stdout] 37 | pub parent: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VTable` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vm/vtable.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 40 | impl VTable { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 41 | /// 创建新的 VTable [INFO] [stdout] 42 | pub fn new(type_id: TypeId, type_name: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn with_parent(type_id: TypeId, type_name: impl Into, parent: VTable) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn register_method(&mut self, name: impl Into, func_index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn lookup_method(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn get_method_func_index(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn get_slot_func_index(&self, slot_index: MethodIndex) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn register_trait_impl(&mut self, trait_name: impl Into, trait_vtable: TraitVTable) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn lookup_trait(&self, trait_name: &str) -> Option<&TraitVTable> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn implements_trait(&self, trait_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn get_parent_method(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `trait_name` and `methods` are never read [INFO] [stdout] --> src/vm/vtable.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 126 | pub struct TraitVTable { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 127 | /// Trait 名称 [INFO] [stdout] 128 | pub trait_name: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 129 | /// 方法映射(trait 方法名 -> 实现方法的函数索引) [INFO] [stdout] 130 | pub methods: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TraitVTable` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `register_method`, and `lookup_method` are never used [INFO] [stdout] --> src/vm/vtable.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 133 | impl TraitVTable { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 134 | /// 创建新的 TraitVTable [INFO] [stdout] 135 | pub fn new(trait_name: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn register_method(&mut self, name: impl Into, func_index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn lookup_method(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vtables`, `vtables_by_id`, and `next_type_id` are never read [INFO] [stdout] --> src/vm/vtable.rs:157:5 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct VTableRegistry { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 156 | /// 类型名到 VTable 的映射 [INFO] [stdout] 157 | vtables: HashMap>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 158 | /// 类型 ID 到 VTable 的映射(用于快速查找) [INFO] [stdout] 159 | vtables_by_id: HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 160 | /// 下一个类型 ID [INFO] [stdout] 161 | next_type_id: TypeId, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VTableRegistry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `allocate_type_id`, `register`, `lookup_by_name`, `lookup_by_id`, `get_or_create`, and `create_with_parent` are never used [INFO] [stdout] --> src/vm/vtable.rs:175:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl VTableRegistry { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn allocate_type_id(&mut self) -> TypeId { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn register(&mut self, vtable: VTable) -> Arc { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 190 | pub fn lookup_by_name(&self, name: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn lookup_by_id(&self, id: TypeId) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 200 | pub fn get_or_create(&mut self, type_name: &str) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub fn create_with_parent(&mut self, type_name: &str, parent_name: &str) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuntimeTypeInfo` is never constructed [INFO] [stdout] --> src/vm/vtable.rs:220:12 [INFO] [stdout] | [INFO] [stdout] 220 | pub struct RuntimeTypeInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FieldInfo` is never constructed [INFO] [stdout] --> src/vm/vtable.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 233 | pub struct FieldInfo { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_field`, `get_field_index`, and `set_vtable` are never used [INFO] [stdout] --> src/vm/vtable.rs:244:12 [INFO] [stdout] | [INFO] [stdout] 242 | impl RuntimeTypeInfo { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 243 | /// 创建新的类型信息 [INFO] [stdout] 244 | pub fn new(type_id: TypeId, type_name: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | pub fn add_field(&mut self, name: impl Into, is_mutable: bool) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 265 | pub fn get_field_index(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn set_vtable(&mut self, vtable: Arc) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `YOUNG_GEN_THRESHOLD` is never used [INFO] [stdout] --> src/vm/gc.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const YOUNG_GEN_THRESHOLD: usize = 1024 * 1024; // 1MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OLD_GEN_THRESHOLD` is never used [INFO] [stdout] --> src/vm/gc.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const OLD_GEN_THRESHOLD: usize = 8 * 1024 * 1024; // 8MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROMOTION_AGE` is never used [INFO] [stdout] --> src/vm/gc.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const PROMOTION_AGE: u8 = 3; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ALLOCATION_THRESHOLD` is never used [INFO] [stdout] --> src/vm/gc.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | const ALLOCATION_THRESHOLD: usize = 10000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GcHeader` is never constructed [INFO] [stdout] --> src/vm/gc.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct GcHeader { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AtomicU8` is never constructed [INFO] [stdout] --> src/vm/gc.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct AtomicU8(AtomicUsize); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `load`, `store`, and `fetch_add` are never used [INFO] [stdout] --> src/vm/gc.rs:49:18 [INFO] [stdout] | [INFO] [stdout] 48 | impl AtomicU8 { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 49 | pub const fn new(v: u8) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn load(&self, order: Ordering) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn store(&self, v: u8, order: Ordering) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn fetch_add(&self, v: u8, order: Ordering) -> u8 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/vm/gc.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl GcHeader { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] 67 | pub fn new(size: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_frees`, `minor_gc_count`, `major_gc_count`, `last_gc_time_ns`, and `total_pause_time_ns` are never read [INFO] [stdout] --> src/vm/gc.rs:87:9 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct GcStats { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 87 | pub total_frees: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub minor_gc_count: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 92 | /// Major GC 次数 [INFO] [stdout] 93 | pub major_gc_count: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 94 | /// 上次 GC 耗时(纳秒) [INFO] [stdout] 95 | pub last_gc_time_ns: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 96 | /// 总 GC 暂停时间(纳秒) [INFO] [stdout] 97 | pub total_pause_time_ns: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GcStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ptr`, `tag`, `size`, `marked`, `age`, and `in_old_gen` are never read [INFO] [stdout] --> src/vm/gc.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 105 | struct AllocatedObject { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 106 | /// 对象指针 [INFO] [stdout] 107 | ptr: u64, [INFO] [stdout] | ^^^ [INFO] [stdout] 108 | /// 堆标签 [INFO] [stdout] 109 | tag: HeapTag, [INFO] [stdout] | ^^^ [INFO] [stdout] 110 | /// 对象大小 [INFO] [stdout] 111 | size: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 112 | /// 是否已标记 [INFO] [stdout] 113 | marked: bool, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 114 | /// 对象年龄 [INFO] [stdout] 115 | age: u8, [INFO] [stdout] | ^^^ [INFO] [stdout] 116 | /// 是否在老年代 [INFO] [stdout] 117 | in_old_gen: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `old_gen`, `old_size`, and `gc_running` are never read [INFO] [stdout] --> src/vm/gc.rs:125:5 [INFO] [stdout] | [INFO] [stdout] 121 | pub struct Heap { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 125 | old_gen: Mutex>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | old_size: AtomicUsize, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | gc_running: AtomicBool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `should_gc`, `should_major_gc`, `stats`, `set_enabled`, and `is_gc_running` are never used [INFO] [stdout] --> src/vm/gc.rs:183:12 [INFO] [stdout] | [INFO] [stdout] 140 | impl Heap { [INFO] [stdout] | --------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn should_gc(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn should_major_gc(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn stats(&self) -> GcStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn set_enabled(&self, enabled: bool) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn is_gc_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MarkSweepGc` is never constructed [INFO] [stdout] --> src/vm/gc.rs:223:12 [INFO] [stdout] | [INFO] [stdout] 223 | pub struct MarkSweepGc { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vm/gc.rs:230:12 [INFO] [stdout] | [INFO] [stdout] 228 | impl MarkSweepGc { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 229 | /// 创建新的 GC [INFO] [stdout] 230 | pub fn new(heap: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 235 | pub fn minor_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | fn do_minor_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn major_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 356 | fn do_major_gc(&self, root_scanner: F) -> GcResult [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | fn mark_value(&self, value: &Value, marked: &mut HashSet) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 449 | fn mark_references(&self, value: &Value, marked: &mut HashSet) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 514 | fn free_object(&self, obj: &AllocatedObject) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GcResult` is never used [INFO] [stdout] --> src/vm/gc.rs:581:10 [INFO] [stdout] | [INFO] [stdout] 581 | pub enum GcResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `gc_should_run` is never used [INFO] [stdout] --> src/vm/gc.rs:614:8 [INFO] [stdout] | [INFO] [stdout] 614 | pub fn gc_should_run() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `gc_stats` is never used [INFO] [stdout] --> src/vm/gc.rs:619:8 [INFO] [stdout] | [INFO] [stdout] 619 | pub fn gc_stats() -> GcStats { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ConcurrentMarkState` is never used [INFO] [stdout] --> src/vm/gc.rs:629:10 [INFO] [stdout] | [INFO] [stdout] 629 | pub enum ConcurrentMarkState { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConcurrentMarkGc` is never constructed [INFO] [stdout] --> src/vm/gc.rs:648:12 [INFO] [stdout] | [INFO] [stdout] 648 | pub struct ConcurrentMarkGc { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vm/gc.rs:662:12 [INFO] [stdout] | [INFO] [stdout] 660 | impl ConcurrentMarkGc { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 661 | /// 创建并发标记 GC [INFO] [stdout] 662 | pub fn new(heap: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 673 | pub fn state(&self) -> ConcurrentMarkState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 678 | pub fn start_cycle(&self, root_scanner: F) -> bool [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 715 | pub fn incremental_mark(&self, max_objects: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 749 | pub fn remark(&self, root_scanner: F) -> bool [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 797 | pub fn concurrent_sweep(&self) -> GcResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 862 | pub fn write_barrier(&self, ptr: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 869 | fn mark_object_references(&self, ptr: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `decl` and `members` are never read [INFO] [stdout] --> src/package/resolver.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct ResolvedImport { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 27 | /// 原始导入声明 [INFO] [stdout] 28 | pub decl: ImportDecl, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub members: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ResolvedImport` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_stdlib_dir`, `is_builtin`, and `get_builtin_exports` are never used [INFO] [stdout] --> src/package/resolver.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 47 | impl PackageResolver { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn set_stdlib_dir(&mut self, path: PathBuf) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn is_builtin(&self, module_path: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn get_builtin_exports(&self, module_path: &str) -> Option<&Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `StdlibFn` is never used [INFO] [stdout] --> src/stdlib/mod.rs:21:10 [INFO] [stdout] | [INFO] [stdout] 21 | pub type StdlibFn = fn(&[Value]) -> Result; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Stop` is never constructed [INFO] [stdout] --> src/stdlib/mod.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 30 | pub enum CallbackRequest { [INFO] [stdout] | --------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 41 | Stop, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CallbackRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `stop` is never used [INFO] [stdout] --> src/stdlib/mod.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 62 | impl CallbackChannel { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn stop(&self) -> Result<(), String> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `exports` and `call` are never used [INFO] [stdout] --> src/stdlib/mod.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 112 | pub trait StdlibModule: Send + Sync { [INFO] [stdout] | ------------ methods in this trait [INFO] [stdout] ... [INFO] [stdout] 117 | fn exports(&self) -> Vec<&'static str>; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn call(&self, name: &str, args: &[Value]) -> Result; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get`, `has_module`, and `call` are never used [INFO] [stdout] --> src/stdlib/mod.rs:196:12 [INFO] [stdout] | [INFO] [stdout] 173 | impl StdlibRegistry { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 196 | pub fn get(&self, name: &str) -> Option<&dyn StdlibModule> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub fn has_module(&self, name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn call(&self, module: &str, func: &str, args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/stdlib/vmtest.rs:17:8 [INFO] [stdout] | [INFO] [stdout] 11 | impl VmTestLib { [INFO] [stdout] | -------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 17 | fn assert(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 38 | fn assert_equal(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | fn assert_true(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | fn assert_false(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | fn assert_null(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | fn assert_not_null(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | fn fail(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_throwable_type` is never used [INFO] [stdout] --> src/stdlib/exception.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | pub fn is_throwable_type(type_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_exception_parent` is never used [INFO] [stdout] --> src/stdlib/exception.rs:65:8 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn get_exception_parent(class_name: &str) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/stdlib/exception.rs:96:8 [INFO] [stdout] | [INFO] [stdout] 90 | impl ExceptionLib { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 96 | fn create_exception_instance(class_name: &str, message: String, cause: Option) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | fn create_throwable(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | fn create_error(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | fn create_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | fn runtime_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | fn null_pointer_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | fn index_out_of_bounds(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn illegal_argument(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | fn arithmetic_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | fn io_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 231 | fn is_throwable(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 258 | fn is_exception(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 295 | fn get_exception_type(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | fn get_exception_message(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 350 | fn get_exception_cause(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 367 | fn is_instance_of(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `thread_pool` is never read [INFO] [stdout] --> src/stdlib/net/mod.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct NetTcpLib { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 15 | thread_pool: Arc, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_socket_ptr` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:419:4 [INFO] [stdout] | [INFO] [stdout] 419 | fn extract_socket_ptr(value: &Value) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `extract_listener_ptr` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:425:4 [INFO] [stdout] | [INFO] [stdout] 425 | fn extract_listener_ptr(value: &Value) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tcp_socket_value` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:432:4 [INFO] [stdout] | [INFO] [stdout] 432 | fn create_tcp_socket_value(ptr: u64) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_tcp_listener_value` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:437:4 [INFO] [stdout] | [INFO] [stdout] 437 | fn create_tcp_listener_value(ptr: u64) -> Value { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_connect` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:442:8 [INFO] [stdout] | [INFO] [stdout] 442 | pub fn socket_connect(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_send` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:447:8 [INFO] [stdout] | [INFO] [stdout] 447 | pub fn socket_send(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_receive` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:480:8 [INFO] [stdout] | [INFO] [stdout] 480 | pub fn socket_receive(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_close` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:516:8 [INFO] [stdout] | [INFO] [stdout] 516 | pub fn socket_close(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_set_read_timeout` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:542:8 [INFO] [stdout] | [INFO] [stdout] 542 | pub fn socket_set_read_timeout(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_set_write_timeout` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:568:8 [INFO] [stdout] | [INFO] [stdout] 568 | pub fn socket_set_write_timeout(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_set_nodelay` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:594:8 [INFO] [stdout] | [INFO] [stdout] 594 | pub fn socket_set_nodelay(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `socket_shutdown` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:620:8 [INFO] [stdout] | [INFO] [stdout] 620 | pub fn socket_shutdown(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `listener_bind` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:643:8 [INFO] [stdout] | [INFO] [stdout] 643 | pub fn listener_bind(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `listener_accept` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:648:8 [INFO] [stdout] | [INFO] [stdout] 648 | pub fn listener_accept(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `listener_close` is never used [INFO] [stdout] --> src/stdlib/net/tcp.rs:677:8 [INFO] [stdout] | [INFO] [stdout] 677 | pub fn listener_close(args: &[Value]) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEFAULT_BUFFER_SIZE` is never used [INFO] [stdout] --> src/stdlib/net/http.rs:35:7 [INFO] [stdout] | [INFO] [stdout] 35 | const DEFAULT_BUFFER_SIZE: usize = 8192; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `protocol` and `query_params` are never read [INFO] [stdout] --> src/stdlib/net/http.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct ParsedUrl { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 44 | /// 协议(http/https) [INFO] [stdout] 45 | pub protocol: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub query_params: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsedUrl` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `url_encode` is never used [INFO] [stdout] --> src/stdlib/net/http.rs:186:4 [INFO] [stdout] | [INFO] [stdout] 186 | fn url_encode(s: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `status_text` is never read [INFO] [stdout] --> src/stdlib/net/http.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 259 | pub struct HttpResponseData { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 263 | pub status_text: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpResponseData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `host` and `port` are never read [INFO] [stdout] --> src/stdlib/net/http.rs:448:5 [INFO] [stdout] | [INFO] [stdout] 444 | pub struct HttpServerHandle { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 448 | host: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 449 | /// 端口号 [INFO] [stdout] 450 | port: u16, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_running` is never used [INFO] [stdout] --> src/stdlib/net/http.rs:479:8 [INFO] [stdout] | [INFO] [stdout] 455 | impl HttpServerHandle { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 479 | fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `workers` and `sender` are never read [INFO] [stdout] --> src/stdlib/net/io_thread_pool.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct IoThreadPool { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 8 | workers: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 9 | sender: Sender, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `execute` is never used [INFO] [stdout] --> src/stdlib/net/io_thread_pool.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 12 | impl IoThreadPool { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn execute(&self, f: F) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `thread` is never read [INFO] [stdout] --> src/stdlib/net/io_thread_pool.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 31 | struct Worker { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] 32 | thread: Option>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `GoId` is never used [INFO] [stdout] --> src/runtime/mod.rs:34:10 [INFO] [stdout] | [INFO] [stdout] 34 | pub type GoId = u64; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `num_processors` is never used [INFO] [stdout] --> src/runtime/mod.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn num_processors() -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `GoroutineStatus` is never used [INFO] [stdout] --> src/runtime/goroutine.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum GoroutineStatus { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Goroutine` is never constructed [INFO] [stdout] --> src/runtime/goroutine.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Goroutine { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/goroutine.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 68 | impl Goroutine { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 69 | /// 创建新的协程 [INFO] [stdout] 70 | pub fn new(id: GoId, func: Arc, args: Vec) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn new_main(id: GoId) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn new_idle(id: GoId) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn status(&self) -> GoroutineStatus { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn set_status(&self, status: GoroutineStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn cas_status(&self, expected: GoroutineStatus, new: GoroutineStatus) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn is_runnable(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn is_waiting(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn is_dead(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 163 | pub fn should_preempt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn request_preempt(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn clear_preempt(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn inc_schedule_count(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub fn schedule_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn reset(&self, id: GoId, func: Arc, args: Vec) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 213 | pub fn mark_dead(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 220 | pub fn park(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | pub fn unpark(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GoroutineHandle` is never constructed [INFO] [stdout] --> src/runtime/goroutine.rs:248:12 [INFO] [stdout] | [INFO] [stdout] 248 | pub struct GoroutineHandle { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `id`, `status`, `is_done`, and `inner` are never used [INFO] [stdout] --> src/runtime/goroutine.rs:254:12 [INFO] [stdout] | [INFO] [stdout] 252 | impl GoroutineHandle { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 253 | /// 创建新的句柄 [INFO] [stdout] 254 | pub fn new(g: Arc) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 259 | pub fn id(&self) -> GoId { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 264 | pub fn status(&self) -> GoroutineStatus { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub fn is_done(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 274 | pub fn inner(&self) -> &Arc { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StackOverflow` is never constructed [INFO] [stdout] --> src/runtime/stack.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct StackOverflow; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Stack` is never constructed [INFO] [stdout] --> src/runtime/stack.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct Stack { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/stack.rs:36:15 [INFO] [stdout] | [INFO] [stdout] 34 | impl Stack { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 35 | /// 初始栈大小:2KB [INFO] [stdout] 36 | pub const INITIAL_SIZE: usize = 2 * 1024; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 37 | /// 最大栈大小:1MB [INFO] [stdout] 38 | pub const MAX_SIZE: usize = 1024 * 1024; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 39 | /// 栈对齐:16 字节 [INFO] [stdout] 40 | const ALIGNMENT: usize = 16; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn new() -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn with_capacity(capacity: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn base(&self) -> *mut u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn top(&self) -> *mut u8 { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn sp(&self) -> usize { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn set_sp(&mut self, sp: usize) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn size(&self) -> usize { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 118 | pub fn capacity(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn needs_grow(&self, additional: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn grow(&mut self) -> Result<(), StackOverflow> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn push(&mut self, value: T) -> Result<(), StackOverflow> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 209 | pub fn pop(&mut self) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StackFrameInfo` is never constructed [INFO] [stdout] --> src/runtime/stack.rs:256:12 [INFO] [stdout] | [INFO] [stdout] 256 | pub struct StackFrameInfo { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StackScanContext` is never constructed [INFO] [stdout] --> src/runtime/stack.rs:268:12 [INFO] [stdout] | [INFO] [stdout] 268 | pub struct StackScanContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `add_frame`, and `scan_roots` are never used [INFO] [stdout] --> src/runtime/stack.rs:279:12 [INFO] [stdout] | [INFO] [stdout] 277 | impl StackScanContext { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 278 | /// 创建新的扫描上下文 [INFO] [stdout] 279 | pub fn new(stack: &Stack) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 288 | pub fn add_frame(&mut self, info: StackFrameInfo) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 295 | pub fn scan_roots(&self, mut callback: F) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `GcRootScanner` is never used [INFO] [stdout] --> src/runtime/stack.rs:315:11 [INFO] [stdout] | [INFO] [stdout] 315 | pub trait GcRootScanner { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LOCAL_QUEUE_SIZE` is never used [INFO] [stdout] --> src/runtime/queue.rs:12:7 [INFO] [stdout] | [INFO] [stdout] 12 | const LOCAL_QUEUE_SIZE: usize = 256; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LocalQueue` is never constructed [INFO] [stdout] --> src/runtime/queue.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct LocalQueue { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/queue.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 28 | impl LocalQueue { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 29 | /// 创建新的本地队列 [INFO] [stdout] 30 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub fn is_full(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn push(&self, g: Arc) -> bool { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn pop(&self) -> Option> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn steal(&self) -> Option> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn steal_batch(&self, dst: &LocalQueue) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn steal_batch_to_vec(&self, max: usize) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StealStats` is never constructed [INFO] [stdout] --> src/runtime/queue.rs:222:12 [INFO] [stdout] | [INFO] [stdout] 222 | pub struct StealStats { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record_attempt`, `success_rate`, `recent_success_rate`, and `avg_stolen_per_success` are never used [INFO] [stdout] --> src/runtime/queue.rs:235:18 [INFO] [stdout] | [INFO] [stdout] 233 | impl StealStats { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 234 | /// 创建新的统计 [INFO] [stdout] 235 | pub const fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub fn record_attempt(&self, success: bool, tasks_stolen: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 261 | pub fn success_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 272 | pub fn recent_success_rate(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 277 | pub fn avg_stolen_per_success(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AdaptiveStealStrategy` is never constructed [INFO] [stdout] --> src/runtime/queue.rs:297:12 [INFO] [stdout] | [INFO] [stdout] 297 | pub struct AdaptiveStealStrategy { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `record`, `suggested_interval`, `stats`, and `should_steal` are never used [INFO] [stdout] --> src/runtime/queue.rs:310:12 [INFO] [stdout] | [INFO] [stdout] 308 | impl AdaptiveStealStrategy { [INFO] [stdout] | -------------------------- associated items in this implementation [INFO] [stdout] 309 | /// 创建新的自适应策略 [INFO] [stdout] 310 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn record(&self, success: bool, tasks_stolen: usize) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 336 | pub fn suggested_interval(&self) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 342 | pub fn stats(&self) -> &StealStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 349 | pub fn should_steal(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GlobalQueue` is never constructed [INFO] [stdout] --> src/runtime/queue.rs:389:12 [INFO] [stdout] | [INFO] [stdout] 389 | pub struct GlobalQueue { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/queue.rs:396:12 [INFO] [stdout] | [INFO] [stdout] 394 | impl GlobalQueue { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 395 | /// 创建新的全局队列 [INFO] [stdout] 396 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 405 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 411 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 416 | pub fn push(&self, g: Arc) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | pub fn push_batch(&self, batch: Vec>) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 433 | pub fn pop(&self) -> Option> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 444 | pub fn pop_batch(&self, max: usize) -> Vec> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ProcessorStatus` is never used [INFO] [stdout] --> src/runtime/processor.rs:16:10 [INFO] [stdout] | [INFO] [stdout] 16 | pub enum ProcessorStatus { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Processor` is never constructed [INFO] [stdout] --> src/runtime/processor.rs:42:12 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct Processor { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/processor.rs:63:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl Processor { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 62 | /// 创建新的处理器 [INFO] [stdout] 63 | pub fn new(id: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn status(&self) -> ProcessorStatus { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn set_status(&self, status: ProcessorStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn is_idle(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn current(&self) -> Option> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn set_current(&self, g: Option>) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn set_next(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 140 | pub fn take_next(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn push(&self, g: Arc) -> bool { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn pop(&self) -> Option> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | pub fn queue_len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn bind_machine(&self, machine_id: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | pub fn unbind_machine(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn machine_id(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 185 | pub fn inc_schedule_count(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn schedule_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 196 | pub fn update_schedule_time(&self, time_ns: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | pub fn last_schedule_time(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn enter_syscall(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn exit_syscall(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Machine` is never constructed [INFO] [stdout] --> src/runtime/machine.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct Machine { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/machine.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 36 | impl Machine { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 37 | /// 创建新的工作线程 [INFO] [stdout] 38 | pub fn new(id: u64) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn set_scheduler(&self, scheduler: *mut Scheduler) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | fn scheduler(&self) -> Option<&Scheduler> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn processor(&self) -> Option<&Processor> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn bind_processor(&self, p: &Processor) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn unbind_processor(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn start(self: &Arc) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | fn run_loop(&self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | fn find_work(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | fn execute(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | pub fn park(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub fn unpark(&self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn is_parking(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 223 | pub fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 229 | pub fn join(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn goroutine_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `SCHEDULER` is never used [INFO] [stdout] --> src/runtime/scheduler.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub static SCHEDULER: OnceLock = OnceLock::new(); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_scheduler` is never used [INFO] [stdout] --> src/runtime/scheduler.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | pub fn get_scheduler() -> &'static Scheduler { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SchedulerConfig` is never constructed [INFO] [stdout] --> src/runtime/scheduler.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 29 | pub struct SchedulerConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Scheduler` is never constructed [INFO] [stdout] --> src/runtime/scheduler.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct Scheduler { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/scheduler.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 80 | impl Scheduler { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 81 | /// 创建新的调度器 [INFO] [stdout] 82 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn with_config(config: SchedulerConfig) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn set_chunk(&self, chunk: Arc) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn chunk(&self) -> Option> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn set_executor(&self, executor: F) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn start(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn stop(&self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn next_goid(&self) -> GoId { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub fn goroutine_count(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn spawn(&self, func: Arc, args: Vec) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn schedule(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | pub fn get_from_global(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn get_batch_from_global(&self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | pub fn steal_work(&self, thief: &Processor) -> Option> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 289 | pub fn steal_work_batch(&self, thief: &Processor, batch_size: usize) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 318 | fn get_idle_processor(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | fn mark_processor_busy(&self, idx: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub fn mark_processor_idle(&self, idx: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 339 | fn wake_machine(&self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 350 | pub fn execute_goroutine(&self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub fn finish_goroutine(&self, _g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 362 | pub fn yield_goroutine(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 368 | pub fn park_goroutine(&self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 373 | pub fn unpark_goroutine(&self, g: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 379 | pub fn should_preempt(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 386 | pub fn elapsed(&self) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | pub fn num_processors(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 397 | pub fn processor(&self, idx: usize) -> Option<&Arc> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 403 | pub fn global_queue_len(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub fn stats(&self) -> SchedulerStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SchedulerStats` is never constructed [INFO] [stdout] --> src/runtime/scheduler.rs:436:12 [INFO] [stdout] | [INFO] [stdout] 436 | pub struct SchedulerStats { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `CHANNEL_ID` is never used [INFO] [stdout] --> src/runtime/channel.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | static CHANNEL_ID: AtomicU64 = AtomicU64::new(1); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ChannelStatus` is never used [INFO] [stdout] --> src/runtime/channel.rs:18:10 [INFO] [stdout] | [INFO] [stdout] 18 | pub enum ChannelStatus { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Waiter` is never constructed [INFO] [stdout] --> src/runtime/channel.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | struct Waiter { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Channel` is never constructed [INFO] [stdout] --> src/runtime/channel.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct Channel { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/channel.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl Channel { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 55 | /// 创建无缓冲 Channel [INFO] [stdout] 56 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn with_capacity(capacity: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn id(&self) -> u64 { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn capacity(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn len(&self) -> usize { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn is_closed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn send(&self, value: Value) -> Result<(), Value> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn try_send(&self, value: Value) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | fn try_send_internal(&self, value: Value) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn receive(&self) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | pub fn try_receive(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | pub fn close(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 232 | pub fn send_waiters_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub fn recv_waiters_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TypedChannel` is never constructed [INFO] [stdout] --> src/runtime/channel.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 263 | pub struct TypedChannel { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/channel.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 268 | impl + TryFrom> TypedChannel { [INFO] [stdout] | ----------------------------------------------------- associated items in this implementation [INFO] [stdout] 269 | /// 创建无缓冲 Channel [INFO] [stdout] 270 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 278 | pub fn with_capacity(capacity: usize) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn send(&self, value: T) -> Result<(), T> [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 297 | pub fn try_send(&self, value: T) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 302 | pub fn receive(&self) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | pub fn try_receive(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn close(&self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 317 | pub fn is_closed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SelectCase` is never used [INFO] [stdout] --> src/runtime/channel.rs:334:10 [INFO] [stdout] | [INFO] [stdout] 334 | pub enum SelectCase { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SelectResult` is never used [INFO] [stdout] --> src/runtime/channel.rs:350:10 [INFO] [stdout] | [INFO] [stdout] 350 | pub enum SelectResult { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `select` is never used [INFO] [stdout] --> src/runtime/channel.rs:368:8 [INFO] [stdout] | [INFO] [stdout] 368 | pub fn select(cases: &[SelectCase]) -> SelectResult { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_select` is never used [INFO] [stdout] --> src/runtime/channel.rs:411:8 [INFO] [stdout] | [INFO] [stdout] 411 | pub fn try_select(cases: &[SelectCase]) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `select_timeout` is never used [INFO] [stdout] --> src/runtime/channel.rs:418:8 [INFO] [stdout] | [INFO] [stdout] 418 | pub fn select_timeout(cases: &[SelectCase], timeout: std::time::Duration) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_select_once` is never used [INFO] [stdout] --> src/runtime/channel.rs:456:4 [INFO] [stdout] | [INFO] [stdout] 456 | fn try_select_once(cases: &[SelectCase]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CallFrameSnapshot` is never constructed [INFO] [stdout] --> src/runtime/context.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | pub struct CallFrameSnapshot { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VMState` is never constructed [INFO] [stdout] --> src/runtime/context.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct VMState { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `reset` are never used [INFO] [stdout] --> src/runtime/context.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 31 | impl VMState { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 32 | /// 创建空的 VM 状态 [INFO] [stdout] 33 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Context` is never constructed [INFO] [stdout] --> src/runtime/context.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct Context { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WaitReason` is never used [INFO] [stdout] --> src/runtime/context.rs:74:10 [INFO] [stdout] | [INFO] [stdout] 74 | pub enum WaitReason { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/context.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 91 | impl Context { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 92 | /// 创建新的执行上下文 [INFO] [stdout] 93 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 103 | pub fn with_ip(ip: usize) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn mark_started(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn mark_finished(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn is_waiting(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn wait_for(&mut self, reason: WaitReason) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn clear_wait(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ExecuteResult` is never used [INFO] [stdout] --> src/runtime/coroutine_vm.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum ExecuteResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CoroutineVM` is never constructed [INFO] [stdout] --> src/runtime/coroutine_vm.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct CoroutineVM { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `set_time_slice`, `init_from_goroutine`, `save_to_goroutine`, `execute`, and `execute_to_completion` are never used [INFO] [stdout] --> src/runtime/coroutine_vm.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl CoroutineVM { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 44 | /// 创建新的协程 VM [INFO] [stdout] 45 | pub fn new(chunk: Arc, locale: Locale) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn set_time_slice(&mut self, instructions: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn init_from_goroutine(&mut self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn save_to_goroutine(&self, g: &Goroutine) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn execute(&mut self, g: &Goroutine) -> ExecuteResult { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn execute_to_completion(&mut self, g: &Goroutine) -> ExecuteResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VMCoroutineExt` is never used [INFO] [stdout] --> src/runtime/coroutine_vm.rs:198:11 [INFO] [stdout] | [INFO] [stdout] 198 | pub trait VMCoroutineExt { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreemptConfig` is never constructed [INFO] [stdout] --> src/runtime/preempt.rs:10:12 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct PreemptConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreemptState` is never constructed [INFO] [stdout] --> src/runtime/preempt.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 30 | pub struct PreemptState { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `configure`, `is_enabled`, `time_slice`, and `safepoint_interval` are never used [INFO] [stdout] --> src/runtime/preempt.rs:41:18 [INFO] [stdout] | [INFO] [stdout] 39 | impl PreemptState { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 40 | /// 创建新的抢占状态 [INFO] [stdout] 41 | pub const fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn configure(&self, config: &PreemptConfig) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub fn is_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn time_slice(&self) -> Duration { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn safepoint_interval(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `PREEMPT_STATE` is never used [INFO] [stdout] --> src/runtime/preempt.rs:76:12 [INFO] [stdout] | [INFO] [stdout] 76 | pub static PREEMPT_STATE: PreemptState = PreemptState::new(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreemptTracker` is never constructed [INFO] [stdout] --> src/runtime/preempt.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 81 | pub struct PreemptTracker { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `reset`, `check`, `force_preempt`, `elapsed`, and `instruction_count` are never used [INFO] [stdout] --> src/runtime/preempt.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 90 | impl PreemptTracker { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 91 | /// 创建新的追踪器 [INFO] [stdout] 92 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub fn check(&mut self) -> bool { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn force_preempt(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn elapsed(&self) -> Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn instruction_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PreemptGuard` is never constructed [INFO] [stdout] --> src/runtime/preempt.rs:219:12 [INFO] [stdout] | [INFO] [stdout] 219 | pub struct PreemptGuard { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `disable` is never used [INFO] [stdout] --> src/runtime/preempt.rs:225:12 [INFO] [stdout] | [INFO] [stdout] 223 | impl PreemptGuard { [INFO] [stdout] | ----------------- associated function in this implementation [INFO] [stdout] 224 | /// 禁用抢占并创建守卫 [INFO] [stdout] 225 | pub fn disable() -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init` is never used [INFO] [stdout] --> src/runtime/preempt.rs:205:12 [INFO] [stdout] | [INFO] [stdout] 205 | pub fn init() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `request_preempt` is never used [INFO] [stdout] --> src/runtime/preempt.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 211 | pub fn request_preempt(_thread_id: u64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuntimeConfig` is never constructed [INFO] [stdout] --> src/runtime/runtime.rs:23:12 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct RuntimeConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Runtime` is never constructed [INFO] [stdout] --> src/runtime/runtime.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct Runtime { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/runtime/runtime.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 63 | impl Runtime { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 64 | /// 创建新的运行时 [INFO] [stdout] 65 | pub fn new(chunk: Arc, config: RuntimeConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn with_chunk(chunk: Arc) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn run(&self) -> Result<(), RuntimeError> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn spawn(&self, func: Arc, args: Vec) -> Option { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn create_channel(&self, capacity: usize) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub fn is_running(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn stats(&self) -> super::scheduler::SchedulerStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuntimeHandle` is never constructed [INFO] [stdout] --> src/runtime/runtime.rs:161:12 [INFO] [stdout] | [INFO] [stdout] 161 | pub struct RuntimeHandle { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `go`, and `yield_now` are never used [INFO] [stdout] --> src/runtime/runtime.rs:169:12 [INFO] [stdout] | [INFO] [stdout] 167 | impl RuntimeHandle { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 168 | /// 创建新的运行时句柄 [INFO] [stdout] 169 | pub fn new(chunk: Arc, locale: Locale) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn go(&self, func: Arc, args: Vec) -> Option { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub fn yield_now(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `set_runtime_handle` is never used [INFO] [stdout] --> src/runtime/runtime.rs:194:8 [INFO] [stdout] | [INFO] [stdout] 194 | pub fn set_runtime_handle(handle: RuntimeHandle) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `with_runtime_handle` is never used [INFO] [stdout] --> src/runtime/runtime.rs:201:8 [INFO] [stdout] | [INFO] [stdout] 201 | pub fn with_runtime_handle(f: F) -> Option [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `initialized` are never read [INFO] [stdout] --> src/typechecker/environment.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct VariableInfo { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 11 | /// 变量名 [INFO] [stdout] 12 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub initialized: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VariableInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, `is_method`, and `owner_type` are never read [INFO] [stdout] --> src/typechecker/environment.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub struct FunctionInfo { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 24 | /// 函数名 [INFO] [stdout] 25 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 26 | /// 泛型参数 [INFO] [stdout] 27 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub is_method: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 38 | /// 所属类型(如果是方法) [INFO] [stdout] 39 | pub owner_type: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, `interfaces`, `traits`, `static_fields`, and `static_methods` are never read [INFO] [stdout] --> src/typechecker/environment.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 44 | pub struct ClassInfo { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 45 | /// 类名 [INFO] [stdout] 46 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 47 | /// 泛型参数 [INFO] [stdout] 48 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub interfaces: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 53 | /// 使用的 Trait [INFO] [stdout] 54 | pub traits: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub static_fields: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 61 | /// 静态方法 [INFO] [stdout] 62 | pub static_methods: HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, and `interfaces` are never read [INFO] [stdout] --> src/typechecker/environment.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 69 | pub struct StructInfo { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 70 | /// 结构体名 [INFO] [stdout] 71 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 72 | /// 泛型参数 [INFO] [stdout] 73 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 74 | /// 实现的接口 [INFO] [stdout] 75 | pub interfaces: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StructInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `is_mutable`, and `visibility` are never read [INFO] [stdout] --> src/typechecker/environment.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct FieldInfo { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 85 | /// 字段名 [INFO] [stdout] 86 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub is_mutable: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 91 | /// 可见性 [INFO] [stdout] 92 | pub visibility: Visibility, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FieldInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, and `super_traits` are never read [INFO] [stdout] --> src/typechecker/environment.rs:108:9 [INFO] [stdout] | [INFO] [stdout] 106 | pub struct TraitInfo { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 107 | /// Trait 名 [INFO] [stdout] 108 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 109 | /// 泛型参数 [INFO] [stdout] 110 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 111 | /// 父 Trait [INFO] [stdout] 112 | pub super_traits: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TraitInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `type_params`, and `super_interfaces` are never read [INFO] [stdout] --> src/typechecker/environment.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 121 | pub struct InterfaceInfo { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 122 | /// 接口名 [INFO] [stdout] 123 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 124 | /// 泛型参数 [INFO] [stdout] 125 | pub type_params: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 126 | /// 父接口 [INFO] [stdout] 127 | pub super_interfaces: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InterfaceInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `variants`, and `methods` are never read [INFO] [stdout] --> src/typechecker/environment.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct EnumInfo { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] 135 | /// 枚举名 [INFO] [stdout] 136 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 137 | /// 变体 [INFO] [stdout] 138 | pub variants: HashMap, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 139 | /// 方法 [INFO] [stdout] 140 | pub methods: HashMap, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EnumInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `value_type`, and `fields` are never read [INFO] [stdout] --> src/typechecker/environment.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 145 | pub struct EnumVariantInfo { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 146 | /// 变体名 [INFO] [stdout] 147 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 148 | /// 关联值类型(如果有) [INFO] [stdout] 149 | pub value_type: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 150 | /// 关联数据字段 [INFO] [stdout] 151 | pub fields: Vec<(String, Type)>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `EnumVariantInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/typechecker/environment.rs:161:10 [INFO] [stdout] | [INFO] [stdout] 161 | Enum(EnumInfo), [INFO] [stdout] | ---- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `TypeInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 161 - Enum(EnumInfo), [INFO] [stdout] 161 + Enum(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name` and `actual_type` are never read [INFO] [stdout] --> src/typechecker/environment.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 163 | Alias { [INFO] [stdout] | ----- fields in this variant [INFO] [stdout] 164 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 165 | actual_type: Type, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_type_param` is never used [INFO] [stdout] --> src/typechecker/environment.rs:218:12 [INFO] [stdout] | [INFO] [stdout] 182 | impl TypeScope { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 218 | pub fn get_type_param(&self, name: &str) -> Option<&GenericParam> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `trait_impls` is never read [INFO] [stdout] --> src/typechecker/environment.rs:235:5 [INFO] [stdout] | [INFO] [stdout] 225 | pub struct TypeEnvironment { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 235 | trait_impls: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeEnvironment` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `lookup_type_param`, `register_trait_impl`, `find_trait_impl`, `type_matches`, `set_this_type`, and `resolve_type` are never used [INFO] [stdout] --> src/typechecker/environment.rs:303:12 [INFO] [stdout] | [INFO] [stdout] 242 | impl TypeEnvironment { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 303 | pub fn lookup_type_param(&self, name: &str) -> Option<&GenericParam> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | pub fn register_trait_impl(&mut self, impl_: TraitImpl) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 357 | pub fn find_trait_impl(&self, ty: &Type, trait_name: &str) -> Option<&TraitImpl> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 364 | fn type_matches(&self, pattern: &Type, actual: &Type) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 370 | pub fn set_this_type(&mut self, ty: Option) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 390 | pub fn resolve_type(&self, name: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `UnifyResult` is never used [INFO] [stdout] --> src/typechecker/unify.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | pub type UnifyResult = Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Unifier` is never constructed [INFO] [stdout] --> src/typechecker/unify.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Unifier { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/typechecker/unify.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl Unifier { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 20 | /// 创建新的统一器 [INFO] [stdout] 21 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn with_substitution(substitution: Substitution) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn unify(&mut self, t1: &Type, t2: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | fn unify_internal(&mut self, t1: &Type, t2: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | fn unify_var(&mut self, var: &TypeVar, ty: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 243 | fn occurs_in(&self, var: &TypeVar, ty: &Type) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 271 | pub fn apply(&self, ty: &Type) -> Type { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | pub fn get_substitution(&self) -> &Substitution { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 281 | pub fn into_substitution(self) -> Substitution { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unify` is never used [INFO] [stdout] --> src/typechecker/unify.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn unify(t1: &Type, t2: &Type, span: Span) -> UnifyResult { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unify_with_subst` is never used [INFO] [stdout] --> src/typechecker/unify.rs:299:8 [INFO] [stdout] | [INFO] [stdout] 299 | pub fn unify_with_subst( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Equal`, `Subtype`, `TraitBound`, and `Instantiate` are never constructed [INFO] [stdout] --> src/typechecker/constraint.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ConstraintKind { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 13 | /// 类型相等约束 T1 = T2 [INFO] [stdout] 14 | Equal(Type, Type), [INFO] [stdout] | ^^^^^ [INFO] [stdout] 15 | /// 子类型约束 T1 <: T2 [INFO] [stdout] 16 | Subtype { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 21 | TraitBound { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | Instantiate { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConstraintKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `reason` is never read [INFO] [stdout] --> src/typechecker/constraint.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct Constraint { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 40 | pub reason: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Constraint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new`, `equal`, `subtype`, and `trait_bound` are never used [INFO] [stdout] --> src/typechecker/constraint.rs:45:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl Constraint { [INFO] [stdout] | --------------- associated functions in this implementation [INFO] [stdout] 44 | /// 创建新的约束 [INFO] [stdout] 45 | pub fn new(kind: ConstraintKind, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn equal(t1: Type, t2: Type, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | pub fn subtype(sub: Type, super_: Type, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn trait_bound(ty: Type, bound: TypeBound, span: Span, reason: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_constraint`, `add_constraints`, `get_substitution`, and `get_var_constraints` are never used [INFO] [stdout] --> src/typechecker/constraint.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 89 | impl ConstraintSolver { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn add_constraint(&mut self, constraint: Constraint) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn add_constraints(&mut self, constraints: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 401 | pub fn get_substitution(&self) -> &Substitution { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn get_var_constraints(&self, var_id: u64) -> Option<&Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/typechecker/error.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum TypeErrorKind { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 18 | UnknownType(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | UndefinedFunction(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | ConstraintNotSatisfied { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | CyclicTypeDependency(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 69 | /// 不可空类型赋值 null [INFO] [stdout] 70 | NullNotAllowed(Type), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 71 | /// 无效的类型转换 [INFO] [stdout] 72 | InvalidCast { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | UnreachableCode, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeErrorKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `notes` is never read [INFO] [stdout] --> src/typechecker/error.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 122 | pub struct TypeError { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 128 | pub notes: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TypeError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `with_note`, `undefined_function`, and `constraint_not_satisfied` are never used [INFO] [stdout] --> src/typechecker/error.rs:142:12 [INFO] [stdout] | [INFO] [stdout] 131 | impl TypeError { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn with_note(mut self, note: impl Into) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub fn undefined_function(name: impl Into, span: Span) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | pub fn constraint_not_satisfied( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_context` is never used [INFO] [stdout] --> src/typechecker/checker.rs:351:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl TypeChecker { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn set_context(&mut self, context: CompileContext) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `new` and `from_types` are never used [INFO] [stdout] --> src/typechecker/monomorphize.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 20 | impl MonoKey { [INFO] [stdout] | ------------ associated functions in this implementation [INFO] [stdout] 21 | /// 创建新的单态化键 [INFO] [stdout] 22 | pub fn new(base_name: impl Into, type_args: Vec) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn from_types(base_name: impl Into, type_args: &[Type]) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mangle_type` is never used [INFO] [stdout] --> src/typechecker/monomorphize.rs:54:4 [INFO] [stdout] | [INFO] [stdout] 54 | fn mangle_type(ty: &Type) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:99:9 [INFO] [stdout] | [INFO] [stdout] 97 | pub struct MonomorphizedClass { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 98 | /// 单态化后的名称 [INFO] [stdout] 99 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 100 | /// 原始名称 [INFO] [stdout] 101 | pub original_name: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 102 | /// 类型替换表 [INFO] [stdout] 103 | pub substitution: Substitution, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 104 | /// 字段(类型已替换) [INFO] [stdout] 105 | pub fields: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 106 | /// 方法(类型已替换) [INFO] [stdout] 107 | pub methods: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 108 | /// 父类(如果有) [INFO] [stdout] 109 | pub parent: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 110 | /// 是否是抽象类 [INFO] [stdout] 111 | pub is_abstract: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedClass` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `original_name`, `substitution`, `fields`, and `methods` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:118:9 [INFO] [stdout] | [INFO] [stdout] 116 | pub struct MonomorphizedStruct { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 117 | /// 单态化后的名称 [INFO] [stdout] 118 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 119 | /// 原始名称 [INFO] [stdout] 120 | pub original_name: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 121 | /// 类型替换表 [INFO] [stdout] 122 | pub substitution: Substitution, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 123 | /// 字段(类型已替换) [INFO] [stdout] 124 | pub fields: Vec, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 125 | /// 方法(类型已替换) [INFO] [stdout] 126 | pub methods: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedStruct` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `ty`, and `is_mutable` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:132:9 [INFO] [stdout] | [INFO] [stdout] 131 | pub struct MonomorphizedField { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] 132 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 133 | pub ty: Type, [INFO] [stdout] | ^^ [INFO] [stdout] 134 | pub is_mutable: bool, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedField` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `param_types`, `param_names`, `return_type`, and `is_static` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 139 | pub struct MonomorphizedMethod { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 140 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 141 | pub param_types: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 142 | pub param_names: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 143 | pub return_type: Type, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 144 | pub is_static: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedMethod` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `original_name`, `substitution`, `param_types`, `param_names`, and `return_type` are never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 149 | pub struct MonomorphizedFunction { [INFO] [stdout] | --------------------- fields in this struct [INFO] [stdout] 150 | /// 单态化后的名称 [INFO] [stdout] 151 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 152 | /// 原始名称 [INFO] [stdout] 153 | pub original_name: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 154 | /// 类型替换表 [INFO] [stdout] 155 | pub substitution: Substitution, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 156 | /// 参数类型 [INFO] [stdout] 157 | pub param_types: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 158 | /// 参数名 [INFO] [stdout] 159 | pub param_names: Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 160 | /// 返回类型 [INFO] [stdout] 161 | pub return_type: Type, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MonomorphizedFunction` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:192:5 [INFO] [stdout] | [INFO] [stdout] 191 | struct ClassDefInfo { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 192 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClassDefInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:203:5 [INFO] [stdout] | [INFO] [stdout] 202 | struct StructDefInfo { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 203 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StructDefInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/typechecker/monomorphize.rs:212:5 [INFO] [stdout] | [INFO] [stdout] 211 | struct FunctionDefInfo { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 212 | name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FunctionDefInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/typechecker/monomorphize.rs:317:12 [INFO] [stdout] | [INFO] [stdout] 229 | impl Monomorphizer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 317 | pub fn request_class(&mut self, name: &str, type_args: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn request_struct(&mut self, name: &str, type_args: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn request_function(&mut self, name: &str, type_args: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 502 | pub fn get_monomorphized_class(&self, key: &MonoKey) -> Option<&MonomorphizedClass> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | pub fn get_monomorphized_struct(&self, key: &MonoKey) -> Option<&MonomorphizedStruct> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 512 | pub fn get_monomorphized_function(&self, key: &MonoKey) -> Option<&MonomorphizedFunction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 517 | pub fn all_classes(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | pub fn all_structs(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 527 | pub fn all_functions(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.36s [INFO] running `Command { std: "docker" "inspect" "9def23565bcc070a577f164a470d39e78323bdc8021933ec2d9396dc48c88fff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9def23565bcc070a577f164a470d39e78323bdc8021933ec2d9396dc48c88fff", kill_on_drop: false }` [INFO] [stdout] 9def23565bcc070a577f164a470d39e78323bdc8021933ec2d9396dc48c88fff