Skip to content
This repository was archived by the owner on Oct 12, 2026. It is now read-only.

Commit ed7a61a

Browse files
committed
feat: new builtin list_remove
1 parent 4bf29cd commit ed7a61a

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

‎examples/list.lbd‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ a: List = (list)
99
(list_append a "World")
1010
(print "list: " a "\n")
1111
(print "list[1]: " (list_get a 1) "\n")
12+
13+
(list_append a "Foo")
14+
(print "list: " a "\n")
15+
(list_remove a 2)
16+
(print "list: " a "\n")

‎src/intp/builtins.cpp‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ namespace intp::interp {
124124
if (index >= list_v->elements.size()) {
125125
options_v.logger.error({}, "runtime error: list index out of range, index is ", index);
126126
}
127-
Value &value = list_v->elements[index];
128-
list_v->elements.erase(list_v->elements.begin() + index);
127+
Value value = list_v->elements[index];
128+
list_v->elements.erase(list_v->elements.begin() + static_cast<std::vector<Value>::difference_type>(index));
129129
return value;
130130
}
131131

@@ -185,7 +185,10 @@ namespace intp::interp {
185185
" signature: List -> Float -> List""\n"
186186
"runtime error: expected <Float> got ", arg1);
187187
}
188-
return std::make_pair(Value{list_get(std::get<std::shared_ptr<List> >(arg0), std::get<double>(arg1))},
188+
return std::make_pair(Value{
189+
list_get(std::get<std::shared_ptr<List> >(arg0),
190+
static_cast<size_t>(std::get<double>(arg1)))
191+
},
189192
ResultOptions{});
190193
}
191194
};
@@ -212,7 +215,9 @@ namespace intp::interp {
212215
"runtime error: expected <Float> got ", arg1);
213216
}
214217
return std::make_pair(
215-
Value{list_remove(std::get<std::shared_ptr<List> >(arg0), std::get<double>(arg1))},
218+
Value{
219+
list_remove(std::get<std::shared_ptr<List> >(arg0), static_cast<size_t>(std::get<double>(arg1)))
220+
},
216221
ResultOptions{});
217222
}
218223
};
@@ -249,6 +254,7 @@ namespace intp::interp {
249254
{make_list()},
250255
{make_list_size()},
251256
{make_list_get()},
257+
{make_list_remove()},
252258
{make_list_append()}
253259
};
254260
}

0 commit comments

Comments
 (0)