LibJS/Bytecode: Perform ToNumeric on accumulator before postfix inc/dec

This ensures we get the expected behavior of code like:

    let a = []
    let b = a++

(Where b should be 0, not [], because JavaScript.)
This commit is contained in:
Andreas Kling 2023-06-16 10:51:40 +02:00
commit d364d99cb8
Notes: sideshowbarker 2024-07-16 22:18:54 +09:00
4 changed files with 26 additions and 0 deletions

View file

@ -1966,6 +1966,7 @@ Bytecode::CodeGenerationErrorOr<void> UpdateExpression::generate_bytecode(Byteco
Optional<Bytecode::Register> previous_value_for_postfix_reg;
if (!m_prefixed) {
previous_value_for_postfix_reg = generator.allocate_register();
generator.emit<Bytecode::Op::ToNumeric>();
generator.emit<Bytecode::Op::Store>(*previous_value_for_postfix_reg);
}