Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions src/interpreter/array.mbt
Original file line number Diff line number Diff line change
Expand Up @@ -57,22 +57,22 @@ let array_zip_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组make操作
let array_make_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Int(len), .. }, { val, .. }] => Array(Array::make(len, val))
[{ val: Int(len, ..), .. }, { val, .. }] => Array(Array::make(len, val))
_ => Unit
}

///|
/// 数组new操作
let array_new_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Int(len), kind: LabelledOption("capacity") }] =>
[{ val: Int(len, ..), kind: LabelledOption("capacity") }] =>
Array(Array::new(capacity=len))
_ => Array(Array::new())
}

///|
/// 数组长度
let array_length_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }] => Int(arr.length())
[{ val: Array(arr), .. }] => Int(arr.length(), raw=None)
_ => Unit
}

Expand Down Expand Up @@ -128,7 +128,7 @@ let array_join_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组swap操作
let array_swap_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(i), .. }, { val: Int(j), .. }] => {
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }, { val: Int(j, ..), .. }] => {
arr.swap(i, j)
Unit
}
Expand All @@ -138,7 +138,7 @@ let array_swap_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组get操作
let array_get_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(i), .. }] =>
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }] =>
RuntimeValue::from_option(arr.get(i))
_ => Unit
}
Expand All @@ -156,7 +156,7 @@ let array_append_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组set操作
let array_set_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(i), .. }, { val, .. }] => {
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }, { val, .. }] => {
arr[i] = val
Unit
}
Expand All @@ -173,7 +173,7 @@ let array_pop_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组insert操作
let array_insert_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(i), .. }, { val, .. }] => {
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }, { val, .. }] => {
arr.insert(i, val)
Unit
}
Expand All @@ -183,7 +183,7 @@ let array_insert_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组remove操作
let array_remove_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(i), .. }] => arr.remove(i)
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }] => arr.remove(i)
_ => Unit
}

Expand All @@ -198,14 +198,14 @@ let array_contains_fn : RuntimeFunction = ctx => match ctx.args {
/// 数组search操作
let array_search_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val, .. }] =>
RuntimeValue::from_option(arr.search(val).map(fn(i) { Int(i) }))
RuntimeValue::from_option(arr.search(val).map(fn(i) { Int(i, raw=None) }))
_ => Unit
}

///|
/// 数组capacity操作
let array_capacity_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }] => Int(arr.capacity())
[{ val: Array(arr), .. }] => Int(arr.capacity(), raw=None)
_ => Unit
}

Expand All @@ -214,7 +214,7 @@ let array_capacity_fn : RuntimeFunction = ctx => match ctx.args {
let array_resize_fn : RuntimeFunction = ctx => match ctx.args {
[
{ val: Array(arr), .. },
{ val: Int(new_size), .. },
{ val: Int(new_size, ..), .. },
{ val: fill_val, .. },
..,
] => {
Expand All @@ -227,7 +227,7 @@ let array_resize_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组truncate操作
let array_truncate_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(len), .. }] => {
[{ val: Array(arr), .. }, { val: Int(len, ..), .. }] => {
arr.truncate(len)
Unit
}
Expand All @@ -237,7 +237,7 @@ let array_truncate_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// 数组reserve_capacity操作
let array_reserve_capacity_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Int(additional), .. }] => {
[{ val: Array(arr), .. }, { val: Int(additional, ..), .. }] => {
arr.reserve_capacity(additional)
Unit
}
Expand All @@ -262,7 +262,7 @@ let array_eachi_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Fn(f), .. }] => {
arr.eachi(fn(i, val) {
ctx.context.call(f.val, ctx.pkg, [
{ val: Int(i), kind: Positional },
{ val: Int(i, raw=None), kind: Positional },
{ val, kind: Positional },
])
|> ignore
Expand Down Expand Up @@ -290,7 +290,7 @@ let array_mapi_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }, { val: Fn(f), .. }] => {
let new_arr = arr.mapi(fn(i, val) {
ctx.context.call(f.val, ctx.pkg, [
{ val: Int(i), kind: Positional },
{ val: Int(i, raw=None), kind: Positional },
{ val, kind: Positional },
])
})
Expand Down Expand Up @@ -333,7 +333,7 @@ let array_search_by_fn : RuntimeFunction = ctx => match ctx.args {
{ val, kind: Positional },
]))
is Ok(Bool(true)))
RuntimeValue::from_option(index.map(Int(_)))
RuntimeValue::from_option(index.map(Int(_, raw=None)))
}
_ => Unit
}
Expand All @@ -350,7 +350,7 @@ let array_iter2_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: Array(arr), .. }] =>
Iter2(
Iter2::new(yield_ => for i, v in arr {
guard yield_(Int(i), v) is IterContinue else { break IterEnd }
guard yield_(Int(i, raw=None), v) is IterContinue else { break IterEnd }
} else {
IterContinue
}),
Expand Down
16 changes: 8 additions & 8 deletions src/interpreter/array_view.mbt
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ pub let array_view_methods : Map[String, RuntimeFunction] = {
///|
/// 数组长度
let array_view_length_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }] => Int(arr.length())
[{ val: ArrayView(arr), .. }] => Int(arr.length(), raw=None)
_ => Unit
}

Expand All @@ -52,14 +52,14 @@ let array_view_buf_fn : RuntimeFunction = ctx => match ctx.args {
///|
/// ArrayView start 方法 - 返回起始索引
let array_view_start_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }] => Int(arr.start())
[{ val: ArrayView(arr), .. }] => Int(arr.start(), raw=None)
_ => Unit
}

///|
/// ArrayView len 方法
let array_view_len_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }] => Int(arr.len())
[{ val: ArrayView(arr), .. }] => Int(arr.len(), raw=None)
_ => Unit
}

Expand Down Expand Up @@ -114,7 +114,7 @@ let array_view_each_fn : RuntimeFunction = ctx => match ctx.args {
let array_view_eachi_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }, { val: Fn(f), .. }] => {
arr.eachi((i, elem) => ctx.context.call(f.val, ctx.pkg, [
{ val: Int(i), kind: Positional },
{ val: Int(i, raw=None), kind: Positional },
{ val: elem, kind: Positional },
])
|> ignore)
Expand Down Expand Up @@ -155,7 +155,7 @@ let array_view_foldi_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }, { val: init, .. }, { val: Fn(f), .. }] =>
arr.foldi(init~, fn(i, acc, elem) {
ctx.context.call(f.val, ctx.pkg, [
{ val: Int(i), kind: Positional },
{ val: Int(i, raw=None), kind: Positional },
{ val: acc, kind: Positional },
{ val: elem, kind: Positional },
])
Expand All @@ -176,7 +176,7 @@ let array_view_iter2_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(self), .. }] =>
Iter2(
Iter2::new(yield_ => for i, v in self {
guard yield_(Int(i), v) is IterContinue else { break IterEnd }
guard yield_(Int(i, raw=None), v) is IterContinue else { break IterEnd }
} else {
IterContinue
}),
Expand Down Expand Up @@ -210,7 +210,7 @@ let array_view_mapi_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }, { val: Fn(f), .. }] =>
Array(
arr.mapi((i, elem) => ctx.context.call(f.val, ctx.pkg, [
{ val: Int(i), kind: Positional },
{ val: Int(i, raw=None), kind: Positional },
{ val: elem, kind: Positional },
])),
)
Expand All @@ -236,7 +236,7 @@ let array_view_rev_foldi_fn : RuntimeFunction = ctx => match ctx.args {
[{ val: ArrayView(arr), .. }, { val: init, .. }, { val: Fn(f), .. }] =>
arr.rev_foldi(init~, fn(i, acc, elem) {
ctx.context.call(f.val, ctx.pkg, [
{ val: Int(i), kind: Positional },
{ val: Int(i, raw=None), kind: Positional },
{ val: acc, kind: Positional },
{ val: elem, kind: Positional },
])
Expand Down
8 changes: 5 additions & 3 deletions src/interpreter/assignment_operations.mbt
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,16 @@ fn ClosureInterpreter::visit_field_augmented_assignment(
Object(refer) =>
match accessor {
Label(label) => {
let current_val = refer.val.get(label.name).unwrap_or(Int(0))
let current_val = refer.val
.get(label.name)
.unwrap_or(Int(0, raw=None))
let new_val = runtime_value_infix(base_op, current_val, right_val)
refer.val.set(label.name, new_val)
}
Index(tuple_index~, ..) => {
let current_val = refer.val
.get(tuple_index.to_string())
.unwrap_or(Int(0))
.unwrap_or(Int(0, raw=None))
let new_val = runtime_value_infix(base_op, current_val, right_val)
refer.val.set(tuple_index.to_string(), new_val)
}
Expand Down Expand Up @@ -92,7 +94,7 @@ fn ClosureInterpreter::visit_array_set(
Array(arr) => {
let index = self.visit(index)
match index {
Int(index) => {
Int(index, ..) => {
let value = self.visit(value)
arr[index] = value
}
Expand Down
Loading