mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-04 23:30:20 +00:00
LibJS: Implement +=, -=, *=, and /= assignment operators
This commit is contained in:
parent
0fe87c5fec
commit
2b36b4f09f
Notes:
sideshowbarker
2024-07-19 08:45:04 +09:00
Author: https://github.com/deoxxa
Commit: 2b36b4f09f
Pull-request: https://github.com/SerenityOS/serenity/pull/1425
Reviewed-by: https://github.com/sunverwerth
3 changed files with 48 additions and 0 deletions
|
@ -383,6 +383,22 @@ Value AssignmentExpression::execute(Interpreter& interpreter) const
|
|||
case AssignmentOp::Assign:
|
||||
interpreter.set_variable(name, rhs_result);
|
||||
break;
|
||||
case AssignmentOp::PlusEquals:
|
||||
rhs_result = add(m_lhs->execute(interpreter), rhs_result);
|
||||
interpreter.set_variable(name, rhs_result);
|
||||
break;
|
||||
case AssignmentOp::MinusEquals:
|
||||
rhs_result = sub(m_lhs->execute(interpreter), rhs_result);
|
||||
interpreter.set_variable(name, rhs_result);
|
||||
break;
|
||||
case AssignmentOp::AsteriskEquals:
|
||||
rhs_result = mul(m_lhs->execute(interpreter), rhs_result);
|
||||
interpreter.set_variable(name, rhs_result);
|
||||
break;
|
||||
case AssignmentOp::SlashEquals:
|
||||
rhs_result = div(m_lhs->execute(interpreter), rhs_result);
|
||||
interpreter.set_variable(name, rhs_result);
|
||||
break;
|
||||
}
|
||||
return rhs_result;
|
||||
}
|
||||
|
@ -394,6 +410,18 @@ void AssignmentExpression::dump(int indent) const
|
|||
case AssignmentOp::Assign:
|
||||
op_string = "=";
|
||||
break;
|
||||
case AssignmentOp::PlusEquals:
|
||||
op_string = "+=";
|
||||
break;
|
||||
case AssignmentOp::MinusEquals:
|
||||
op_string = "-=";
|
||||
break;
|
||||
case AssignmentOp::AsteriskEquals:
|
||||
op_string = "*=";
|
||||
break;
|
||||
case AssignmentOp::SlashEquals:
|
||||
op_string = "/=";
|
||||
break;
|
||||
}
|
||||
|
||||
ASTNode::dump(indent);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue