fix: eval 数组输出改读元素区

This commit is contained in:
2026-09-26 12:40:47 +00:00
parent 27718f27d5
commit 6310e8c671
2 changed files with 14 additions and 1 deletions
+2 -1
View File
@@ -286,7 +286,8 @@ fn format_object(
fn format_array( fn format_array(
vm: &oxide_vm::vm::Vm, string_forge: &PermInterner, shape_forge: &ShapeForge, obj: &JsObject, vm: &oxide_vm::vm::Vm, string_forge: &PermInterner, shape_forge: &ShapeForge, obj: &JsObject,
) -> String { ) -> String {
let len = obj.prop_vec_len(); // 数组元素在独立元素区,命名属性区长度恒 0;元素区未分配时 get_prop_at 自然返回 undefined。
let len = obj.array_prop_count as usize;
let mut items = Vec::new(); let mut items = Vec::new();
for i in 0..len { for i in 0..len {
let val = obj.get_prop_at(i); let val = obj.get_prop_at(i);
+12
View File
@@ -51,6 +51,18 @@ fn run_throw_script() {
assert!(!stderr.is_empty(), "run 失败应输出 stderr: {stderr}"); assert!(!stderr.is_empty(), "run 失败应输出 stderr: {stderr}");
} }
#[test]
fn eval_array_output() {
let output = Command::new(env!("CARGO_BIN_EXE_oxide"))
.args(["eval", "var a = [1, 2, 3]; a"])
.output()
.expect("failed to run oxide eval array");
assert!(output.status.success(), "eval array should exit 0");
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(stdout.trim() == "[1, 2, 3]", "eval 数组应打印元素区内容: {stdout}");
}
#[test] #[test]
fn bench_help() { fn bench_help() {
let output = Command::new(env!("CARGO_BIN_EXE_oxide")) let output = Command::new(env!("CARGO_BIN_EXE_oxide"))