mirror of
https://github.com/RGBCube/serenity
synced 2025-07-23 13:27:35 +00:00
LibJS: Forgot to move add/sub/typed_eq to Value.cpp
This commit is contained in:
parent
f3a9eba987
commit
0d42097cf1
3 changed files with 43 additions and 37 deletions
|
@ -91,43 +91,6 @@ Value WhileStatement::execute(Interpreter& interpreter) const
|
||||||
return last_value;
|
return last_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Value add(Value lhs, Value rhs)
|
|
||||||
{
|
|
||||||
ASSERT(lhs.is_number());
|
|
||||||
ASSERT(rhs.is_number());
|
|
||||||
return Value(lhs.as_double() + rhs.as_double());
|
|
||||||
}
|
|
||||||
|
|
||||||
Value sub(Value lhs, Value rhs)
|
|
||||||
{
|
|
||||||
ASSERT(lhs.is_number());
|
|
||||||
ASSERT(rhs.is_number());
|
|
||||||
return Value(lhs.as_double() - rhs.as_double());
|
|
||||||
}
|
|
||||||
|
|
||||||
const Value typed_eq(const Value lhs, const Value rhs)
|
|
||||||
{
|
|
||||||
if (rhs.type() != lhs.type())
|
|
||||||
return Value(false);
|
|
||||||
|
|
||||||
switch (lhs.type()) {
|
|
||||||
case Value::Type::Undefined:
|
|
||||||
return Value(true);
|
|
||||||
case Value::Type::Null:
|
|
||||||
return Value(true);
|
|
||||||
case Value::Type::Number:
|
|
||||||
return Value(lhs.as_double() == rhs.as_double());
|
|
||||||
case Value::Type::String:
|
|
||||||
return Value(lhs.as_string() == rhs.as_string());
|
|
||||||
case Value::Type::Boolean:
|
|
||||||
return Value(lhs.as_bool() == rhs.as_bool());
|
|
||||||
case Value::Type::Object:
|
|
||||||
return Value(lhs.as_object() == rhs.as_object());
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSERT_NOT_REACHED();
|
|
||||||
}
|
|
||||||
|
|
||||||
Value BinaryExpression::execute(Interpreter& interpreter) const
|
Value BinaryExpression::execute(Interpreter& interpreter) const
|
||||||
{
|
{
|
||||||
auto lhs_result = m_lhs->execute(interpreter);
|
auto lhs_result = m_lhs->execute(interpreter);
|
||||||
|
|
|
@ -144,6 +144,46 @@ Value right_shift(Value lhs, Value rhs)
|
||||||
return Value((i32)lhs.as_double() >> (i32)rhs.as_double());
|
return Value((i32)lhs.as_double() >> (i32)rhs.as_double());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Value add(Value lhs, Value rhs)
|
||||||
|
|
||||||
|
{
|
||||||
|
ASSERT(lhs.is_number());
|
||||||
|
ASSERT(rhs.is_number());
|
||||||
|
return Value(lhs.as_double() + rhs.as_double());
|
||||||
|
}
|
||||||
|
|
||||||
|
Value sub(Value lhs, Value rhs)
|
||||||
|
{
|
||||||
|
ASSERT(lhs.is_number());
|
||||||
|
ASSERT(rhs.is_number());
|
||||||
|
return Value(lhs.as_double() - rhs.as_double());
|
||||||
|
}
|
||||||
|
|
||||||
|
Value typed_eq(Value lhs, Value rhs)
|
||||||
|
{
|
||||||
|
if (rhs.type() != lhs.type())
|
||||||
|
return Value(false);
|
||||||
|
|
||||||
|
switch (lhs.type()) {
|
||||||
|
case Value::Type::Undefined:
|
||||||
|
return Value(true);
|
||||||
|
case Value::Type::Null:
|
||||||
|
return Value(true);
|
||||||
|
case Value::Type::Number:
|
||||||
|
return Value(lhs.as_double() == rhs.as_double());
|
||||||
|
case Value::Type::String:
|
||||||
|
return Value(lhs.as_string() == rhs.as_string());
|
||||||
|
case Value::Type::Boolean:
|
||||||
|
return Value(lhs.as_bool() == rhs.as_bool());
|
||||||
|
case Value::Type::Object:
|
||||||
|
return Value(lhs.as_object() == rhs.as_object());
|
||||||
|
}
|
||||||
|
|
||||||
|
ASSERT_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const LogStream& operator<<(const LogStream& stream, const Value& value)
|
const LogStream& operator<<(const LogStream& stream, const Value& value)
|
||||||
{
|
{
|
||||||
return stream << value.to_string();
|
return stream << value.to_string();
|
||||||
|
|
|
@ -166,6 +166,9 @@ Value bitwise_xor(Value lhs, Value rhs);
|
||||||
Value bitwise_not(Value);
|
Value bitwise_not(Value);
|
||||||
Value left_shift(Value lhs, Value rhs);
|
Value left_shift(Value lhs, Value rhs);
|
||||||
Value right_shift(Value lhs, Value rhs);
|
Value right_shift(Value lhs, Value rhs);
|
||||||
|
Value add(Value lhs, Value rhs);
|
||||||
|
Value sub(Value lhs, Value rhs);
|
||||||
|
Value typed_eq(Value lhs, Value rhs);
|
||||||
|
|
||||||
const LogStream& operator<<(const LogStream&, const Value&);
|
const LogStream& operator<<(const LogStream&, const Value&);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue