1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:37:35 +00:00

LibJS: Support deleting local variables with operator delete

To make this cleaner i also moved the logic into Reference::delete_.
This commit is contained in:
Idan Horowitz 2021-06-08 04:00:53 +03:00 committed by Linus Groh
parent af58779def
commit 064ed8279e
14 changed files with 82 additions and 10 deletions

View file

@ -685,16 +685,7 @@ Value UnaryExpression::execute(Interpreter& interpreter, GlobalObject& global_ob
auto reference = m_lhs->to_reference(interpreter, global_object);
if (interpreter.exception())
return {};
if (reference.is_unresolvable())
return Value(true);
// FIXME: Support deleting locals
VERIFY(!reference.is_local_variable());
if (reference.is_global_variable())
return Value(global_object.delete_property(reference.name()));
auto* base_object = reference.base().to_object(global_object);
if (!base_object)
return {};
return Value(base_object->delete_property(reference.name()));
return Value(reference.delete_(global_object));
}
Value lhs_result;