From f821f6838fd50281fbe9826a2a4dcec3ce46dd84 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Wed, 9 Sep 2026 15:14:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20CI=20=E4=BF=AE=E5=A4=8D=E2=80=94?= =?UTF-8?q?=E2=80=94emit=5Fprogram=20=E6=B5=8B=E8=AF=95=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E7=82=B9=E8=A1=A5=20repl=5Fpersist=20=E5=8F=82=E6=95=B0=20+=20?= =?UTF-8?q?clippy=20=E5=91=8A=E8=AD=A6=E6=B8=85=E9=9B=B6=20+=20=E5=88=A0?= =?UTF-8?q?=E7=A9=BA=20bench=5Ftests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_builtins/src/console.rs | 4 ++-- crates/oxide_cfg/tests/regression.rs | 4 ++-- crates/oxide_dce/tests/precise_eq.rs | 8 ++++---- crates/oxide_dce/tests/runtime_eq.rs | 4 ++-- crates/oxide_liveness/tests/smoke.rs | 2 +- crates/oxide_regalloc/tests/b005_samples.rs | 2 +- .../tests/nested_parent_slot_regress.rs | 2 +- crates/oxide_regalloc/tests/reg_count.rs | 2 +- crates/oxide_regalloc/tests/runtime_eq.rs | 4 ++-- crates/oxide_regalloc/tests/smoke.rs | 2 +- crates/oxide_vm/src/session_arena.rs | 2 +- crates/oxide_vm/tests/bench_tests.rs | 12 ------------ crates/oxide_vm/tests/mem_tests.rs | 2 -- 13 files changed, 18 insertions(+), 32 deletions(-) delete mode 100644 crates/oxide_vm/tests/bench_tests.rs diff --git a/crates/oxide_builtins/src/console.rs b/crates/oxide_builtins/src/console.rs index 6959483d..5e6cf7bf 100644 --- a/crates/oxide_builtins/src/console.rs +++ b/crates/oxide_builtins/src/console.rs @@ -9,12 +9,12 @@ use oxide_types::value::JsValue; fn multi_string(vm: &mut H, args: &[u8]) -> String { let mut output = String::new(); let mut first = true; - for i in 1..args.len() as usize { + for &idx in args.iter().skip(1) { if !first { output.push(' '); } first = false; - let val = vm.reg(args[i]); + let val = vm.reg(idx); let part = if val.is_string() { oxide_runtime_api::to_string(val) } else { diff --git a/crates/oxide_cfg/tests/regression.rs b/crates/oxide_cfg/tests/regression.rs index 5352d372..00d79d24 100644 --- a/crates/oxide_cfg/tests/regression.rs +++ b/crates/oxide_cfg/tests/regression.rs @@ -9,7 +9,7 @@ use oxide_cfg::EdgeKind; fn cfg_from_source(src: &str) -> oxide_cfg::Cfg { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); build_cfg(&ir) } @@ -53,7 +53,7 @@ fn nested_function_cfgs_are_independent() { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, "function outer(){ var x = 0; while(x<3){x=x+1;} }").expect("parse failed"); - let ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); for nested in &ir.nested { let cfg = build_cfg(nested); assert!(!cfg.blocks.is_empty()); diff --git a/crates/oxide_dce/tests/precise_eq.rs b/crates/oxide_dce/tests/precise_eq.rs index f72c623b..15e118c8 100644 --- a/crates/oxide_dce/tests/precise_eq.rs +++ b/crates/oxide_dce/tests/precise_eq.rs @@ -12,7 +12,7 @@ use oxide_vm::JsValue; fn run_source(src: &str, precise: bool) -> Result { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); oxide_dce::dce(&mut ir); // 保守轮恒定(两跑一致) if precise { let cfg = oxide_cfg::build_cfg(&ir); @@ -71,7 +71,7 @@ fn precise_dce_semantics_preserved() { fn top_level_store_var_survives_precise() { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, "var x = 1; 2;").expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); oxide_dce::dce(&mut ir); let cfg = oxide_cfg::build_cfg(&ir); let live = oxide_liveness::liveness(&ir, &cfg); @@ -93,7 +93,7 @@ fn top_level_store_var_survives_precise() { fn precise_removes_dead_local_store() { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, "function f() { var y = 1; return 5; } f();").expect("parse failed"); - let ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); assert_eq!(ir.nested.len(), 1); let mut sub = ir.nested[0].clone(); oxide_dce::dce(&mut sub); @@ -108,7 +108,7 @@ fn precise_removes_dead_local_store() { fn top_level_flag_filled_by_emit() { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, "var x = 1; function g() { return 2; }").expect("parse failed"); - let ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); assert!(ir.is_top_level, "顶层脚本 is_top_level 应为 true"); assert!(ir.nested.iter().any(|sub| !sub.is_top_level), "嵌套函数 is_top_level 应为 false"); } diff --git a/crates/oxide_dce/tests/runtime_eq.rs b/crates/oxide_dce/tests/runtime_eq.rs index 8385bef5..39e38248 100644 --- a/crates/oxide_dce/tests/runtime_eq.rs +++ b/crates/oxide_dce/tests/runtime_eq.rs @@ -11,7 +11,7 @@ use oxide_vm::JsValue; fn run_source(src: &str, dce: bool) -> Result { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); if dce { oxide_dce::dce(&mut ir); } @@ -73,7 +73,7 @@ fn top_level_store_var_kept() { let src = "let x = 0; class C { [x = 1]() { return 2; } } new C();"; let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); oxide_dce::dce(&mut ir); let module = oxide_ir::lower::lower(&ir).expect("lower failed"); let has_store_var = module diff --git a/crates/oxide_liveness/tests/smoke.rs b/crates/oxide_liveness/tests/smoke.rs index ef5fcd05..a432e34f 100644 --- a/crates/oxide_liveness/tests/smoke.rs +++ b/crates/oxide_liveness/tests/smoke.rs @@ -6,7 +6,7 @@ use oxide_liveness::{liveness, LiveInfo}; fn run_liveness(src: &str) -> (LiveInfo, oxide_cfg::Cfg, usize) { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse"); - let ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit"); + let ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit"); let cfg = build_cfg(&ir); let info = liveness(&ir, &cfg); (info, cfg, ir.insts.len()) diff --git a/crates/oxide_regalloc/tests/b005_samples.rs b/crates/oxide_regalloc/tests/b005_samples.rs index fecd5145..76fb9096 100644 --- a/crates/oxide_regalloc/tests/b005_samples.rs +++ b/crates/oxide_regalloc/tests/b005_samples.rs @@ -10,7 +10,7 @@ use oxide_bytecode::module::CompiledModule; fn compile_source(src: &str, regalloc: bool) -> Result { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); oxide_dce::dce(&mut ir); if regalloc { let cfg = oxide_cfg::build_cfg(&ir); diff --git a/crates/oxide_regalloc/tests/nested_parent_slot_regress.rs b/crates/oxide_regalloc/tests/nested_parent_slot_regress.rs index ae7380f4..1517c3e8 100644 --- a/crates/oxide_regalloc/tests/nested_parent_slot_regress.rs +++ b/crates/oxide_regalloc/tests/nested_parent_slot_regress.rs @@ -13,7 +13,7 @@ fn run_source(src: &str, regalloc: bool) -> (bool, String) { Ok(p) => p, Err(e) => return (false, format!("parse error: {}", e[0].message)), }; - let mut ir = match oxide_emit::Emitter::new().emit_program(&program) { + let mut ir = match oxide_emit::Emitter::new().emit_program(&program, false) { Ok(i) => i, Err(e) => return (false, format!("emit error: {e}")), }; diff --git a/crates/oxide_regalloc/tests/reg_count.rs b/crates/oxide_regalloc/tests/reg_count.rs index daaeb6f7..24643220 100644 --- a/crates/oxide_regalloc/tests/reg_count.rs +++ b/crates/oxide_regalloc/tests/reg_count.rs @@ -3,7 +3,7 @@ fn n_registers(src: &str, regalloc: bool) -> Result { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); oxide_dce::dce(&mut ir); if regalloc { let cfg = oxide_cfg::build_cfg(&ir); diff --git a/crates/oxide_regalloc/tests/runtime_eq.rs b/crates/oxide_regalloc/tests/runtime_eq.rs index 8825b0b9..84e82a13 100644 --- a/crates/oxide_regalloc/tests/runtime_eq.rs +++ b/crates/oxide_regalloc/tests/runtime_eq.rs @@ -11,7 +11,7 @@ use oxide_vm::JsValue; fn run_source(src: &str, regalloc: bool) -> Result { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse failed"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit failed"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit failed"); oxide_dce::dce(&mut ir); if regalloc { let cfg = oxide_cfg::build_cfg(&ir); @@ -123,7 +123,7 @@ fn large_and_spill_samples_run_correctly() { // 字节码扫描:spill 样例经 alloc + lower 后应含 SPILL 与 UNSPILL opcode let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, &src_spill).expect("parse"); - let mut ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit"); + let mut ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit"); oxide_dce::dce(&mut ir); let cfg = oxide_cfg::build_cfg(&ir); let live = oxide_liveness::liveness(&ir, &cfg); diff --git a/crates/oxide_regalloc/tests/smoke.rs b/crates/oxide_regalloc/tests/smoke.rs index 62f6717b..5d73e992 100644 --- a/crates/oxide_regalloc/tests/smoke.rs +++ b/crates/oxide_regalloc/tests/smoke.rs @@ -6,7 +6,7 @@ use std::collections::BTreeSet; fn run_color(src: &str) -> (AllocMap, oxide_ir::IRFunction) { let allocator = oxide_parser::Allocator::default(); let program = oxide_parser::parse(&allocator, src).expect("parse"); - let ir = oxide_emit::Emitter::new().emit_program(&program).expect("emit"); + let ir = oxide_emit::Emitter::new().emit_program(&program, false).expect("emit"); let cfg = oxide_cfg::build_cfg(&ir); let live = oxide_liveness::liveness(&ir, &cfg); let m = oxide_regalloc::color(&ir, &live).expect("color"); diff --git a/crates/oxide_vm/src/session_arena.rs b/crates/oxide_vm/src/session_arena.rs index d5a49212..02618737 100644 --- a/crates/oxide_vm/src/session_arena.rs +++ b/crates/oxide_vm/src/session_arena.rs @@ -142,7 +142,7 @@ mod tests { ptr } - fn is_epoch_object(vm: &Vm, value: JsValue) -> bool { + fn is_epoch_object(_vm: &Vm, value: JsValue) -> bool { value.is_object() && unsafe { (&*value.as_js_object_ptr()).is_epoch() } } diff --git a/crates/oxide_vm/tests/bench_tests.rs b/crates/oxide_vm/tests/bench_tests.rs deleted file mode 100644 index bf64b23b..00000000 --- a/crates/oxide_vm/tests/bench_tests.rs +++ /dev/null @@ -1,12 +0,0 @@ -use oxide_bytecode::module::CompiledModule; -use oxide_compiler::compiler::Compiler; -use oxide_parser::Allocator; -use oxide_vm::vm::Vm; - -fn compile(source: &str) -> CompiledModule { - let allocator = Allocator::default(); - let program = oxide_parser::parse(&allocator, source).expect("parse failed"); - Compiler::new().compile(&program).expect("compile failed") -} - - diff --git a/crates/oxide_vm/tests/mem_tests.rs b/crates/oxide_vm/tests/mem_tests.rs index 44a54f40..ac538d14 100644 --- a/crates/oxide_vm/tests/mem_tests.rs +++ b/crates/oxide_vm/tests/mem_tests.rs @@ -1,5 +1,3 @@ -use std::time::Instant; - use oxide_types::mem::{Epoch, P}; #[test]