1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 09:57:35 +00:00

LibJS: Implement 'in' operator

This commit is contained in:
Linus Groh 2020-04-23 16:06:01 +01:00 committed by Andreas Kling
parent 396ecfa2d7
commit 11728b7db5
6 changed files with 54 additions and 0 deletions

View file

@ -382,6 +382,14 @@ Value eq(Interpreter& interpreter, Value lhs, Value rhs)
return Value(false);
}
Value in(Interpreter& interpreter, Value lhs, Value rhs)
{
if (!rhs.is_object())
return interpreter.throw_exception<TypeError>("'in' operator must be used on object");
return Value(rhs.as_object().get(lhs.to_string()).has_value());
}
Value instance_of(Interpreter&, Value lhs, Value rhs)
{
if (!lhs.is_object() || !rhs.is_object())

View file

@ -222,6 +222,7 @@ Value mod(Interpreter&, Value lhs, Value rhs);
Value exp(Interpreter&, Value lhs, Value rhs);
Value eq(Interpreter&, Value lhs, Value rhs);
Value typed_eq(Interpreter&, Value lhs, Value rhs);
Value in(Interpreter&, Value lhs, Value rhs);
Value instance_of(Interpreter&, Value lhs, Value rhs);
const LogStream& operator<<(const LogStream&, const Value&);