Skip to content

Commit 0143849

Browse files
authored
Merge pull request #2 from oboard/feat/overloaded_literal
Feat/overloaded_literal
2 parents 0028972 + 825d63b commit 0143849

21 files changed

+274
-241
lines changed

src/interpreter/array.mbt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,22 @@ let array_zip_fn : RuntimeFunction = ctx => match ctx.args {
5757
///|
5858
/// 数组make操作
5959
let array_make_fn : RuntimeFunction = ctx => match ctx.args {
60-
[{ val: Int(len), .. }, { val, .. }] => Array(Array::make(len, val))
60+
[{ val: Int(len, ..), .. }, { val, .. }] => Array(Array::make(len, val))
6161
_ => Unit
6262
}
6363

6464
///|
6565
/// 数组new操作
6666
let array_new_fn : RuntimeFunction = ctx => match ctx.args {
67-
[{ val: Int(len), kind: LabelledOption("capacity") }] =>
67+
[{ val: Int(len, ..), kind: LabelledOption("capacity") }] =>
6868
Array(Array::new(capacity=len))
6969
_ => Array(Array::new())
7070
}
7171

7272
///|
7373
/// 数组长度
7474
let array_length_fn : RuntimeFunction = ctx => match ctx.args {
75-
[{ val: Array(arr), .. }] => Int(arr.length())
75+
[{ val: Array(arr), .. }] => Int(arr.length(), raw=None)
7676
_ => Unit
7777
}
7878

@@ -128,7 +128,7 @@ let array_join_fn : RuntimeFunction = ctx => match ctx.args {
128128
///|
129129
/// 数组swap操作
130130
let array_swap_fn : RuntimeFunction = ctx => match ctx.args {
131-
[{ val: Array(arr), .. }, { val: Int(i), .. }, { val: Int(j), .. }] => {
131+
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }, { val: Int(j, ..), .. }] => {
132132
arr.swap(i, j)
133133
Unit
134134
}
@@ -138,7 +138,7 @@ let array_swap_fn : RuntimeFunction = ctx => match ctx.args {
138138
///|
139139
/// 数组get操作
140140
let array_get_fn : RuntimeFunction = ctx => match ctx.args {
141-
[{ val: Array(arr), .. }, { val: Int(i), .. }] =>
141+
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }] =>
142142
RuntimeValue::from_option(arr.get(i))
143143
_ => Unit
144144
}
@@ -156,7 +156,7 @@ let array_append_fn : RuntimeFunction = ctx => match ctx.args {
156156
///|
157157
/// 数组set操作
158158
let array_set_fn : RuntimeFunction = ctx => match ctx.args {
159-
[{ val: Array(arr), .. }, { val: Int(i), .. }, { val, .. }] => {
159+
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }, { val, .. }] => {
160160
arr[i] = val
161161
Unit
162162
}
@@ -173,7 +173,7 @@ let array_pop_fn : RuntimeFunction = ctx => match ctx.args {
173173
///|
174174
/// 数组insert操作
175175
let array_insert_fn : RuntimeFunction = ctx => match ctx.args {
176-
[{ val: Array(arr), .. }, { val: Int(i), .. }, { val, .. }] => {
176+
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }, { val, .. }] => {
177177
arr.insert(i, val)
178178
Unit
179179
}
@@ -183,7 +183,7 @@ let array_insert_fn : RuntimeFunction = ctx => match ctx.args {
183183
///|
184184
/// 数组remove操作
185185
let array_remove_fn : RuntimeFunction = ctx => match ctx.args {
186-
[{ val: Array(arr), .. }, { val: Int(i), .. }] => arr.remove(i)
186+
[{ val: Array(arr), .. }, { val: Int(i, ..), .. }] => arr.remove(i)
187187
_ => Unit
188188
}
189189

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

205205
///|
206206
/// 数组capacity操作
207207
let array_capacity_fn : RuntimeFunction = ctx => match ctx.args {
208-
[{ val: Array(arr), .. }] => Int(arr.capacity())
208+
[{ val: Array(arr), .. }] => Int(arr.capacity(), raw=None)
209209
_ => Unit
210210
}
211211

@@ -214,7 +214,7 @@ let array_capacity_fn : RuntimeFunction = ctx => match ctx.args {
214214
let array_resize_fn : RuntimeFunction = ctx => match ctx.args {
215215
[
216216
{ val: Array(arr), .. },
217-
{ val: Int(new_size), .. },
217+
{ val: Int(new_size, ..), .. },
218218
{ val: fill_val, .. },
219219
..,
220220
] => {
@@ -227,7 +227,7 @@ let array_resize_fn : RuntimeFunction = ctx => match ctx.args {
227227
///|
228228
/// 数组truncate操作
229229
let array_truncate_fn : RuntimeFunction = ctx => match ctx.args {
230-
[{ val: Array(arr), .. }, { val: Int(len), .. }] => {
230+
[{ val: Array(arr), .. }, { val: Int(len, ..), .. }] => {
231231
arr.truncate(len)
232232
Unit
233233
}
@@ -237,7 +237,7 @@ let array_truncate_fn : RuntimeFunction = ctx => match ctx.args {
237237
///|
238238
/// 数组reserve_capacity操作
239239
let array_reserve_capacity_fn : RuntimeFunction = ctx => match ctx.args {
240-
[{ val: Array(arr), .. }, { val: Int(additional), .. }] => {
240+
[{ val: Array(arr), .. }, { val: Int(additional, ..), .. }] => {
241241
arr.reserve_capacity(additional)
242242
Unit
243243
}
@@ -262,7 +262,7 @@ let array_eachi_fn : RuntimeFunction = ctx => match ctx.args {
262262
[{ val: Array(arr), .. }, { val: Fn(f), .. }] => {
263263
arr.eachi(fn(i, val) {
264264
ctx.context.call(f.val, ctx.pkg, [
265-
{ val: Int(i), kind: Positional },
265+
{ val: Int(i, raw=None), kind: Positional },
266266
{ val, kind: Positional },
267267
])
268268
|> ignore
@@ -290,7 +290,7 @@ let array_mapi_fn : RuntimeFunction = ctx => match ctx.args {
290290
[{ val: Array(arr), .. }, { val: Fn(f), .. }] => {
291291
let new_arr = arr.mapi(fn(i, val) {
292292
ctx.context.call(f.val, ctx.pkg, [
293-
{ val: Int(i), kind: Positional },
293+
{ val: Int(i, raw=None), kind: Positional },
294294
{ val, kind: Positional },
295295
])
296296
})
@@ -333,7 +333,7 @@ let array_search_by_fn : RuntimeFunction = ctx => match ctx.args {
333333
{ val, kind: Positional },
334334
]))
335335
is Ok(Bool(true)))
336-
RuntimeValue::from_option(index.map(Int(_)))
336+
RuntimeValue::from_option(index.map(Int(_, raw=None)))
337337
}
338338
_ => Unit
339339
}
@@ -350,7 +350,7 @@ let array_iter2_fn : RuntimeFunction = ctx => match ctx.args {
350350
[{ val: Array(arr), .. }] =>
351351
Iter2(
352352
Iter2::new(yield_ => for i, v in arr {
353-
guard yield_(Int(i), v) is IterContinue else { break IterEnd }
353+
guard yield_(Int(i, raw=None), v) is IterContinue else { break IterEnd }
354354
} else {
355355
IterContinue
356356
}),

src/interpreter/array_view.mbt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub let array_view_methods : Map[String, RuntimeFunction] = {
2929
///|
3030
/// 数组长度
3131
let array_view_length_fn : RuntimeFunction = ctx => match ctx.args {
32-
[{ val: ArrayView(arr), .. }] => Int(arr.length())
32+
[{ val: ArrayView(arr), .. }] => Int(arr.length(), raw=None)
3333
_ => Unit
3434
}
3535

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

5959
///|
6060
/// ArrayView len 方法
6161
let array_view_len_fn : RuntimeFunction = ctx => match ctx.args {
62-
[{ val: ArrayView(arr), .. }] => Int(arr.len())
62+
[{ val: ArrayView(arr), .. }] => Int(arr.len(), raw=None)
6363
_ => Unit
6464
}
6565

@@ -114,7 +114,7 @@ let array_view_each_fn : RuntimeFunction = ctx => match ctx.args {
114114
let array_view_eachi_fn : RuntimeFunction = ctx => match ctx.args {
115115
[{ val: ArrayView(arr), .. }, { val: Fn(f), .. }] => {
116116
arr.eachi((i, elem) => ctx.context.call(f.val, ctx.pkg, [
117-
{ val: Int(i), kind: Positional },
117+
{ val: Int(i, raw=None), kind: Positional },
118118
{ val: elem, kind: Positional },
119119
])
120120
|> ignore)
@@ -155,7 +155,7 @@ let array_view_foldi_fn : RuntimeFunction = ctx => match ctx.args {
155155
[{ val: ArrayView(arr), .. }, { val: init, .. }, { val: Fn(f), .. }] =>
156156
arr.foldi(init~, fn(i, acc, elem) {
157157
ctx.context.call(f.val, ctx.pkg, [
158-
{ val: Int(i), kind: Positional },
158+
{ val: Int(i, raw=None), kind: Positional },
159159
{ val: acc, kind: Positional },
160160
{ val: elem, kind: Positional },
161161
])
@@ -176,7 +176,7 @@ let array_view_iter2_fn : RuntimeFunction = ctx => match ctx.args {
176176
[{ val: ArrayView(self), .. }] =>
177177
Iter2(
178178
Iter2::new(yield_ => for i, v in self {
179-
guard yield_(Int(i), v) is IterContinue else { break IterEnd }
179+
guard yield_(Int(i, raw=None), v) is IterContinue else { break IterEnd }
180180
} else {
181181
IterContinue
182182
}),
@@ -210,7 +210,7 @@ let array_view_mapi_fn : RuntimeFunction = ctx => match ctx.args {
210210
[{ val: ArrayView(arr), .. }, { val: Fn(f), .. }] =>
211211
Array(
212212
arr.mapi((i, elem) => ctx.context.call(f.val, ctx.pkg, [
213-
{ val: Int(i), kind: Positional },
213+
{ val: Int(i, raw=None), kind: Positional },
214214
{ val: elem, kind: Positional },
215215
])),
216216
)
@@ -236,7 +236,7 @@ let array_view_rev_foldi_fn : RuntimeFunction = ctx => match ctx.args {
236236
[{ val: ArrayView(arr), .. }, { val: init, .. }, { val: Fn(f), .. }] =>
237237
arr.rev_foldi(init~, fn(i, acc, elem) {
238238
ctx.context.call(f.val, ctx.pkg, [
239-
{ val: Int(i), kind: Positional },
239+
{ val: Int(i, raw=None), kind: Positional },
240240
{ val: acc, kind: Positional },
241241
{ val: elem, kind: Positional },
242242
])

src/interpreter/assignment_operations.mbt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,16 @@ fn ClosureInterpreter::visit_field_augmented_assignment(
4040
Object(refer) =>
4141
match accessor {
4242
Label(label) => {
43-
let current_val = refer.val.get(label.name).unwrap_or(Int(0))
43+
let current_val = refer.val
44+
.get(label.name)
45+
.unwrap_or(Int(0, raw=None))
4446
let new_val = runtime_value_infix(base_op, current_val, right_val)
4547
refer.val.set(label.name, new_val)
4648
}
4749
Index(tuple_index~, ..) => {
4850
let current_val = refer.val
4951
.get(tuple_index.to_string())
50-
.unwrap_or(Int(0))
52+
.unwrap_or(Int(0, raw=None))
5153
let new_val = runtime_value_infix(base_op, current_val, right_val)
5254
refer.val.set(tuple_index.to_string(), new_val)
5355
}
@@ -92,7 +94,7 @@ fn ClosureInterpreter::visit_array_set(
9294
Array(arr) => {
9395
let index = self.visit(index)
9496
match index {
95-
Int(index) => {
97+
Int(index, ..) => {
9698
let value = self.visit(value)
9799
arr[index] = value
98100
}

0 commit comments

Comments
 (0)