LibJS: get_iterator_values() should pass Value to callback (not Value&)

Value& implies that the callback is expected/able to modify the value,
which is not the case.
This commit is contained in:
Andreas Kling 2020-09-08 14:15:13 +02:00
parent b4bfc3ed54
commit d85eed585c
Notes: sideshowbarker 2024-07-19 02:49:48 +09:00
4 changed files with 6 additions and 6 deletions

View File

@ -163,7 +163,7 @@ Value CallExpression::execute(Interpreter& interpreter, GlobalObject& global_obj
if (interpreter.exception())
return {};
if (m_arguments[i].is_spread) {
get_iterator_values(global_object, value, [&](Value& iterator_value) {
get_iterator_values(global_object, value, [&](Value iterator_value) {
if (interpreter.exception())
return IterationDecision::Break;
arguments.append(iterator_value);
@ -419,7 +419,7 @@ Value ForOfStatement::execute(Interpreter& interpreter, GlobalObject& global_obj
if (interpreter.exception())
return {};
get_iterator_values(global_object, rhs_result, [&](Value& value) {
get_iterator_values(global_object, rhs_result, [&](Value value) {
interpreter.set_variable(variable_name, value, global_object);
last_value = interpreter.run(global_object, *m_body);
if (interpreter.exception())
@ -1652,7 +1652,7 @@ Value ArrayExpression::execute(Interpreter& interpreter, GlobalObject& global_ob
return {};
if (element->is_spread_expression()) {
get_iterator_values(global_object, value, [&](Value& iterator_value) {
get_iterator_values(global_object, value, [&](Value iterator_value) {
array->indexed_properties().append(iterator_value);
return IterationDecision::Continue;
});

View File

@ -108,7 +108,7 @@ JS_DEFINE_NATIVE_FUNCTION(ArrayConstructor::from)
array->set_indexed_property_elements(move(elements));
} else {
// * iterable objects
get_iterator_values(global_object, value, [&](Value& element) {
get_iterator_values(global_object, value, [&](Value element) {
if (interpreter.exception())
return IterationDecision::Break;
array->indexed_properties().append(element);

View File

@ -101,7 +101,7 @@ Value create_iterator_result_object(GlobalObject& global_object, Value value, bo
return object;
}
void get_iterator_values(GlobalObject& global_object, Value value, AK::Function<IterationDecision(Value&)> callback)
void get_iterator_values(GlobalObject& global_object, Value value, AK::Function<IterationDecision(Value)> callback)
{
auto& interpreter = global_object.interpreter();

View File

@ -41,6 +41,6 @@ Value create_iterator_result_object(GlobalObject&, Value value, bool done);
Object* iterator_next(Object& iterator, Value value = {});
void iterator_close(Object& iterator);
void get_iterator_values(GlobalObject&, Value value, AK::Function<IterationDecision(Value&)> callback);
void get_iterator_values(GlobalObject&, Value value, AK::Function<IterationDecision(Value)> callback);
}