[INFO] cloning repository https://github.com/Bylx666/key-lang
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Bylx666/key-lang" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBylx666%2Fkey-lang", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBylx666%2Fkey-lang'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 51abb176cee53da57b07e423a1c29df289020771
[INFO] checking Bylx666/key-lang against try#f77b5bc6c7c84df104f86b0dd01d9490e3923fa8 for pr-147834
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBylx666%2Fkey-lang" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-2-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/Bylx666/key-lang
[INFO] finished tweaking git repo https://github.com/Bylx666/key-lang
[INFO] tweaked toml for git repo https://github.com/Bylx666/key-lang written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Bylx666/key-lang on toolchain f77b5bc6c7c84df104f86b0dd01d9490e3923fa8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Bylx666/key-lang 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" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e6e42e3d14a1e6dc2980b6874b12e69bdd794bf96b3b141691597c7b8a81f891
[INFO] running `Command { std: "docker" "start" "-a" "e6e42e3d14a1e6dc2980b6874b12e69bdd794bf96b3b141691597c7b8a81f891", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e6e42e3d14a1e6dc2980b6874b12e69bdd794bf96b3b141691597c7b8a81f891", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e6e42e3d14a1e6dc2980b6874b12e69bdd794bf96b3b141691597c7b8a81f891", kill_on_drop: false }`
[INFO] [stdout] e6e42e3d14a1e6dc2980b6874b12e69bdd794bf96b3b141691597c7b8a81f891
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3779390015ac219a7940af61297ade481a4e15bf4a506ea1244244a451d92d29
[INFO] running `Command { std: "docker" "start" "-a" "3779390015ac219a7940af61297ade481a4e15bf4a506ea1244244a451d92d29", kill_on_drop: false }`
[INFO] [stderr]     Checking key-lang v0.1.6 (/opt/rustwide/workdir)
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/runtime/externer.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |       extern fn $fname($($arg:usize,)*)-> usize {
[INFO] [stdout]    |       ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] ...
[INFO] [stdout] 56 |           Local(f)=> translate_local_impl! { f 
[INFO] [stdout]    |  ____________________-
[INFO] [stdout] 57 | |           0  agent0 ()
[INFO] [stdout] 58 | |           1  agent1 (a)
[INFO] [stdout] 59 | |           2  agent2 (a,b)
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |           7  agent7 (a,b,c,d,e,f,g)
[INFO] [stdout] 65 | |         },
[INFO] [stdout]    | |_________- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `translate_local_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/runtime/externer.rs:90:26
[INFO] [stdout]     |
[INFO] [stdout]  90 |               let callable:extern fn($($arg:usize,)*)-> usize = unsafe {transmute(f.ptr)};
[INFO] [stdout]     |                            ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] ...
[INFO] [stdout] 107 | /   impl_arg!{
[INFO] [stdout] 108 | |     0
[INFO] [stdout] 109 | |     1  a
[INFO] [stdout] 110 | |     2  a b
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     15 a b c d e f g h i j k l m n o
[INFO] [stdout] 124 | |   }
[INFO] [stdout]     | |___- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `impl_arg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/c.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 20 |   extern {
[INFO] [stdout]    |   ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/runtime/externer.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |       extern fn $fname($($arg:usize,)*)-> usize {
[INFO] [stdout]    |       ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] ...
[INFO] [stdout] 56 |           Local(f)=> translate_local_impl! { f 
[INFO] [stdout]    |  ____________________-
[INFO] [stdout] 57 | |           0  agent0 ()
[INFO] [stdout] 58 | |           1  agent1 (a)
[INFO] [stdout] 59 | |           2  agent2 (a,b)
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |           7  agent7 (a,b,c,d,e,f,g)
[INFO] [stdout] 65 | |         },
[INFO] [stdout]    | |_________- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `translate_local_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]    --> src/runtime/externer.rs:90:26
[INFO] [stdout]     |
[INFO] [stdout]  90 |               let callable:extern fn($($arg:usize,)*)-> usize = unsafe {transmute(f.ptr)};
[INFO] [stdout]     |                            ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] ...
[INFO] [stdout] 107 | /   impl_arg!{
[INFO] [stdout] 108 | |     0
[INFO] [stdout] 109 | |     1  a
[INFO] [stdout] 110 | |     2  a b
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     15 a b c d e f g h i j k l m n o
[INFO] [stdout] 124 | |   }
[INFO] [stdout]     | |___- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `impl_arg` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `extern` declarations without an explicit ABI are deprecated
[INFO] [stdout]   --> src/c.rs:20:3
[INFO] [stdout]    |
[INFO] [stdout] 20 |   extern {
[INFO] [stdout]    |   ^^^^^^ help: explicitly specify the "C" ABI: `extern "C"`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `scope` is never read
[INFO] [stdout]   --> src/runtime/outlive.rs:91:7
[INFO] [stdout]    |
[INFO] [stdout] 91 |       scope.ptr = std::ptr::null_mut();
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `scope` is never read
[INFO] [stdout]   --> src/runtime/outlive.rs:91:7
[INFO] [stdout]    |
[INFO] [stdout] 91 |       scope.ptr = std::ptr::null_mut();
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClassFunc` is never constructed
[INFO] [stdout]    --> src/scan/stmt.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct ClassFunc {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `kself` is never read
[INFO] [stdout]    --> src/runtime/mod.rs:218:7
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub struct RunResult {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 218 |   pub kself: Litr
[INFO] [stdout]     |       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RunResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/main.rs:56:24
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let opts = unsafe {&mut GLOBAL_OPTIONS};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let opts = unsafe {&raw mut GLOBAL_OPTIONS};
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/main.rs:78:16
[INFO] [stdout]    |
[INFO] [stdout] 78 |       for n in runtime::call::CALL_STACK.iter().rev() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/main.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let mut n = native::WAITING.lock().unwrap();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/main.rs:97:11
[INFO] [stdout]    |
[INFO] [stdout] 97 |       n = native::WAITING_CVAR.wait(n).unwrap();
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scan/stmt.rs:576:43
[INFO] [stdout]     |
[INFO] [stdout] 576 |         let mut file_dir = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 576 |         let mut file_dir = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scan/stmt.rs:590:45
[INFO] [stdout]     |
[INFO] [stdout] 590 |           let mut file_dir = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 590 |           let mut file_dir = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scan/literal.rs:345:13
[INFO] [stdout]     |
[INFO] [stdout] 345 |             super::expr::ON_PIPE.take().expect("管道占位符只能在管道操作符'|>'后使用")
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/runtime/calc.rs:411:44
[INFO] [stdout]     |
[INFO] [stdout] 411 |           let can_access_private = unsafe {(*inst.cls).cx.exports} == this.exports;
[INFO] [stdout]     |                                            ^^--------^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]     = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout]     = note: `#[deny(dangerous_implicit_autorefs)]` on by default
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 411 |           let can_access_private = unsafe {(&(*inst.cls).cx).exports} == this.exports;
[INFO] [stdout]     |                                            ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/runtime/calc.rs:512:44
[INFO] [stdout]     |
[INFO] [stdout] 512 |           let can_access_private = unsafe {(*inst.cls).cx.exports} == this.exports;
[INFO] [stdout]     |                                            ^^--------^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]     = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 512 |           let can_access_private = unsafe {(&(*inst.cls).cx).exports} == this.exports;
[INFO] [stdout]     |                                            ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/runtime/call.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 |     if CALL_STACK.len()>MAX_CALL_COUNT {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/runtime/call.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     CALL_STACK.push(CallStackElem{file, line:LINE, fname})
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/runtime/call.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 |   unsafe{CALL_STACK.pop();}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]   --> src/runtime/call.rs:82:45
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let cannot_access_private = unsafe {(*inst.cls).cx.exports} != self.exports;
[INFO] [stdout]    |                                             ^^--------^^^^^^^^^^^^
[INFO] [stdout]    |                                               |
[INFO] [stdout]    |                                               this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]    |
[INFO] [stdout]    = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]    = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let cannot_access_private = unsafe {(&(*inst.cls).cx).exports} != self.exports;
[INFO] [stdout]    |                                             ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/runtime/call.rs:152:42
[INFO] [stdout]     |
[INFO] [stdout] 152 |       let mut file_path = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 152 |       let mut file_path = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/runtime/externer.rs:48:24
[INFO] [stdout]    |
[INFO] [stdout] 48 |     Int(n)=> unsafe{Ok(transmute(*n))},
[INFO] [stdout]    |                        ---------^^^^
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        help: replace this with: `isize::cast_unsigned`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/runtime/externer.rs:50:26
[INFO] [stdout]    |
[INFO] [stdout] 50 |     Float(n)=> unsafe{Ok(transmute(*n))},
[INFO] [stdout]    |                          ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: replace this with
[INFO] [stdout]    |
[INFO] [stdout] 50 -     Float(n)=> unsafe{Ok(transmute(*n))},
[INFO] [stdout] 50 +     Float(n)=> unsafe{Ok(f64::to_bits(*n) as usize)},
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/runtime/externer.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let exec = unsafe {EXEC.as_mut().expect("未找到extern函数，这是bug")};
[INFO] [stdout]    |                            ^^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 56 |           Local(f)=> translate_local_impl! { f 
[INFO] [stdout]    |  ____________________-
[INFO] [stdout] 57 | |           0  agent0 ()
[INFO] [stdout] 58 | |           1  agent1 (a)
[INFO] [stdout] 59 | |           2  agent2 (a,b)
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |           7  agent7 (a,b,c,d,e,f,g)
[INFO] [stdout] 65 | |         },
[INFO] [stdout]    | |_________- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: this warning originates in the macro `translate_local_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/primitive/mod.rs:77:22
[INFO] [stdout]    |
[INFO] [stdout] 77 |   if let Some(cls) = &mut CLASSES {
[INFO] [stdout]    |                      ^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 77 |   if let Some(cls) = &raw mut CLASSES {
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/primitive/mod.rs:102:40
[INFO] [stdout]     |
[INFO] [stdout] 102 |       let can_access_private = unsafe {(*inst.cls).cx.exports} == this.exports;
[INFO] [stdout]     |                                        ^^--------^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]     = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 102 |       let can_access_private = unsafe {(&(*inst.cls).cx).exports} == this.exports;
[INFO] [stdout]     |                                        ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/primitive/litr.rs:284:56
[INFO] [stdout]     |
[INFO] [stdout] 284 |           (Function::Native(l), Function::Native(r))=> l==r,
[INFO] [stdout]     |                                                        ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]     = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 284 -           (Function::Native(l), Function::Native(r))=> l==r,
[INFO] [stdout] 284 +           (Function::Native(l), Function::Native(r))=> std::ptr::fn_addr_eq(*l, *r),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/primitive/kstd.rs:50:39
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let mut file_dir = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let mut file_dir = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/primitive/int.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |     b"as16"=> Litr::Buf(unsafe{std::mem::transmute::<_,[u8;2]>(n as u16)}.to_vec()),
[INFO] [stdout]    |                                -------------------------------^^^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: replace this with: `u16::to_ne_bytes`
[INFO] [stdout]    |
[INFO] [stdout]    = help: there's also `to_le_bytes` and `to_be_bytes` if you expect a particular byte order
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/primitive/int.rs:73:32
[INFO] [stdout]    |
[INFO] [stdout] 73 |     b"as32"=> Litr::Buf(unsafe{std::mem::transmute::<_,[u8;4]>(n as u32)}.to_vec()),
[INFO] [stdout]    |                                -------------------------------^^^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: replace this with: `u32::to_ne_bytes`
[INFO] [stdout]    |
[INFO] [stdout]    = help: there's also `to_le_bytes` and `to_be_bytes` if you expect a particular byte order
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/primitive/float.rs:89:14
[INFO] [stdout]    |
[INFO] [stdout] 89 |       unsafe{std::mem::transmute(b)}
[INFO] [stdout]    |              -------------------^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: replace this with: `f64::from_ne_bytes`
[INFO] [stdout]    |
[INFO] [stdout]    = help: there's also `from_le_bytes` and `from_be_bytes` if you expect a particular byte order
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/utils.rs:52:16
[INFO] [stdout]    |
[INFO] [stdout] 52 |       buf.push(&crate::FILE_PATH);
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 52 |       buf.push(&raw const crate::FILE_PATH);
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/native.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 |   unsafe{*WAITING.lock().unwrap() += 1}
[INFO] [stdout]     |           ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/native.rs:130:6
[INFO] [stdout]     |
[INFO] [stdout] 130 |     *WAITING.lock().unwrap() -= 1;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/native.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     WAITING_CVAR.notify_one();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `key-lang` (bin "key-lang" test) due to 4 previous errors; 30 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: struct `ClassFunc` is never constructed
[INFO] [stdout]    --> src/scan/stmt.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct ClassFunc {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `kself` is never read
[INFO] [stdout]    --> src/runtime/mod.rs:218:7
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub struct RunResult {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 218 |   pub kself: Litr
[INFO] [stdout]     |       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RunResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/main.rs:56:24
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let opts = unsafe {&mut GLOBAL_OPTIONS};
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let opts = unsafe {&raw mut GLOBAL_OPTIONS};
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/main.rs:78:16
[INFO] [stdout]    |
[INFO] [stdout] 78 |       for n in runtime::call::CALL_STACK.iter().rev() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/main.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let mut n = native::WAITING.lock().unwrap();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/main.rs:97:11
[INFO] [stdout]    |
[INFO] [stdout] 97 |       n = native::WAITING_CVAR.wait(n).unwrap();
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scan/stmt.rs:576:43
[INFO] [stdout]     |
[INFO] [stdout] 576 |         let mut file_dir = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 576 |         let mut file_dir = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scan/stmt.rs:590:45
[INFO] [stdout]     |
[INFO] [stdout] 590 |           let mut file_dir = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 590 |           let mut file_dir = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]     |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/scan/literal.rs:345:13
[INFO] [stdout]     |
[INFO] [stdout] 345 |             super::expr::ON_PIPE.take().expect("管道占位符只能在管道操作符'|>'后使用")
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/runtime/calc.rs:411:44
[INFO] [stdout]     |
[INFO] [stdout] 411 |           let can_access_private = unsafe {(*inst.cls).cx.exports} == this.exports;
[INFO] [stdout]     |                                            ^^--------^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]     = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout]     = note: `#[deny(dangerous_implicit_autorefs)]` on by default
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 411 |           let can_access_private = unsafe {(&(*inst.cls).cx).exports} == this.exports;
[INFO] [stdout]     |                                            ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/runtime/calc.rs:512:44
[INFO] [stdout]     |
[INFO] [stdout] 512 |           let can_access_private = unsafe {(*inst.cls).cx.exports} == this.exports;
[INFO] [stdout]     |                                            ^^--------^^^^^^^^^^^^
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]     = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 512 |           let can_access_private = unsafe {(&(*inst.cls).cx).exports} == this.exports;
[INFO] [stdout]     |                                            ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/runtime/call.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 |     if CALL_STACK.len()>MAX_CALL_COUNT {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/runtime/call.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     CALL_STACK.push(CallStackElem{file, line:LINE, fname})
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/runtime/call.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 |   unsafe{CALL_STACK.pop();}
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]   --> src/runtime/call.rs:82:45
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let cannot_access_private = unsafe {(*inst.cls).cx.exports} != self.exports;
[INFO] [stdout]    |                                             ^^--------^^^^^^^^^^^^
[INFO] [stdout]    |                                               |
[INFO] [stdout]    |                                               this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]    |
[INFO] [stdout]    = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]    = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let cannot_access_private = unsafe {(&(*inst.cls).cx).exports} != self.exports;
[INFO] [stdout]    |                                             ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/runtime/call.rs:152:42
[INFO] [stdout]     |
[INFO] [stdout] 152 |       let mut file_path = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]     |
[INFO] [stdout] 152 |       let mut file_path = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/runtime/externer.rs:48:24
[INFO] [stdout]    |
[INFO] [stdout] 48 |     Int(n)=> unsafe{Ok(transmute(*n))},
[INFO] [stdout]    |                        ---------^^^^
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        help: replace this with: `isize::cast_unsigned`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unnecessary_transmutes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/runtime/externer.rs:50:26
[INFO] [stdout]    |
[INFO] [stdout] 50 |     Float(n)=> unsafe{Ok(transmute(*n))},
[INFO] [stdout]    |                          ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: replace this with
[INFO] [stdout]    |
[INFO] [stdout] 50 -     Float(n)=> unsafe{Ok(transmute(*n))},
[INFO] [stdout] 50 +     Float(n)=> unsafe{Ok(f64::to_bits(*n) as usize)},
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/runtime/externer.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let exec = unsafe {EXEC.as_mut().expect("未找到extern函数，这是bug")};
[INFO] [stdout]    |                            ^^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 56 |           Local(f)=> translate_local_impl! { f 
[INFO] [stdout]    |  ____________________-
[INFO] [stdout] 57 | |           0  agent0 ()
[INFO] [stdout] 58 | |           1  agent1 (a)
[INFO] [stdout] 59 | |           2  agent2 (a,b)
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |           7  agent7 (a,b,c,d,e,f,g)
[INFO] [stdout] 65 | |         },
[INFO] [stdout]    | |_________- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: this warning originates in the macro `translate_local_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/primitive/mod.rs:77:22
[INFO] [stdout]    |
[INFO] [stdout] 77 |   if let Some(cls) = &mut CLASSES {
[INFO] [stdout]    |                      ^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 77 |   if let Some(cls) = &raw mut CLASSES {
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: implicit autoref creates a reference to the dereference of a raw pointer
[INFO] [stdout]    --> src/primitive/mod.rs:102:40
[INFO] [stdout]     |
[INFO] [stdout] 102 |       let can_access_private = unsafe {(*inst.cls).cx.exports} == this.exports;
[INFO] [stdout]     |                                        ^^--------^^^^^^^^^^^^
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          this raw pointer has type `*const stmt::ClassDef`
[INFO] [stdout]     |
[INFO] [stdout]     = note: creating a reference requires the pointer target to be valid and imposes aliasing requirements
[INFO] [stdout]     = note: references are created through calls to explicit `Deref(Mut)::deref(_mut)` implementations
[INFO] [stdout] help: try using a raw pointer method instead; or if this reference is intentional, make it explicit
[INFO] [stdout]     |
[INFO] [stdout] 102 |       let can_access_private = unsafe {(&(*inst.cls).cx).exports} == this.exports;
[INFO] [stdout]     |                                        ++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]    --> src/primitive/litr.rs:284:56
[INFO] [stdout]     |
[INFO] [stdout] 284 |           (Function::Native(l), Function::Native(r))=> l==r,
[INFO] [stdout]     |                                                        ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the address of the same function can vary between different codegen units
[INFO] [stdout]     = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]     = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]     = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint
[INFO] [stdout]     |
[INFO] [stdout] 284 -           (Function::Native(l), Function::Native(r))=> l==r,
[INFO] [stdout] 284 +           (Function::Native(l), Function::Native(r))=> std::ptr::fn_addr_eq(*l, *r),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/primitive/kstd.rs:50:39
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let mut file_dir = std::mem::take(&mut crate::FILE_PATH);
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let mut file_dir = std::mem::take(&raw mut crate::FILE_PATH);
[INFO] [stdout]    |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/primitive/int.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |     b"as16"=> Litr::Buf(unsafe{std::mem::transmute::<_,[u8;2]>(n as u16)}.to_vec()),
[INFO] [stdout]    |                                -------------------------------^^^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: replace this with: `u16::to_ne_bytes`
[INFO] [stdout]    |
[INFO] [stdout]    = help: there's also `to_le_bytes` and `to_be_bytes` if you expect a particular byte order
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/primitive/int.rs:73:32
[INFO] [stdout]    |
[INFO] [stdout] 73 |     b"as32"=> Litr::Buf(unsafe{std::mem::transmute::<_,[u8;4]>(n as u32)}.to_vec()),
[INFO] [stdout]    |                                -------------------------------^^^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: replace this with: `u32::to_ne_bytes`
[INFO] [stdout]    |
[INFO] [stdout]    = help: there's also `to_le_bytes` and `to_be_bytes` if you expect a particular byte order
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary transmute
[INFO] [stdout]   --> src/primitive/float.rs:89:14
[INFO] [stdout]    |
[INFO] [stdout] 89 |       unsafe{std::mem::transmute(b)}
[INFO] [stdout]    |              -------------------^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: replace this with: `f64::from_ne_bytes`
[INFO] [stdout]    |
[INFO] [stdout]    = help: there's also `from_le_bytes` and `from_be_bytes` if you expect a particular byte order
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/utils.rs:52:16
[INFO] [stdout]    |
[INFO] [stdout] 52 |       buf.push(&crate::FILE_PATH);
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 52 |       buf.push(&raw const crate::FILE_PATH);
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/native.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 |   unsafe{*WAITING.lock().unwrap() += 1}
[INFO] [stdout]     |           ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/native.rs:130:6
[INFO] [stdout]     |
[INFO] [stdout] 130 |     *WAITING.lock().unwrap() -= 1;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]    --> src/native.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     WAITING_CVAR.notify_one();
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `key-lang` (bin "key-lang") due to 4 previous errors; 30 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "3779390015ac219a7940af61297ade481a4e15bf4a506ea1244244a451d92d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3779390015ac219a7940af61297ade481a4e15bf4a506ea1244244a451d92d29", kill_on_drop: false }`
[INFO] [stdout] 3779390015ac219a7940af61297ade481a4e15bf4a506ea1244244a451d92d29
