Fix comprehension instruction evaluation order

This commit is contained in:
Jeong Yunwon 2022-05-20 08:05:12 +09:00
parent dc1d6616ca
commit da3d41ce27

View file

@ -2095,7 +2095,7 @@ impl Compiler {
&|compiler| { &|compiler| {
compiler.compile_comprehension_element(elt)?; compiler.compile_comprehension_element(elt)?;
compiler.emit(Instruction::ListAppend { compiler.emit(Instruction::ListAppend {
i: (1 + generators.len()) as u32, i: generators.len() as u32,
}); });
Ok(()) Ok(())
}, },
@ -2112,7 +2112,7 @@ impl Compiler {
&|compiler| { &|compiler| {
compiler.compile_comprehension_element(elt)?; compiler.compile_comprehension_element(elt)?;
compiler.emit(Instruction::SetAdd { compiler.emit(Instruction::SetAdd {
i: (1 + generators.len()) as u32, i: generators.len() as u32,
}); });
Ok(()) Ok(())
}, },
@ -2137,7 +2137,7 @@ impl Compiler {
compiler.compile_expression(value)?; compiler.compile_expression(value)?;
compiler.emit(Instruction::MapAddRev { compiler.emit(Instruction::MapAddRev {
i: (1 + generators.len()) as u32, i: generators.len() as u32,
}); });
Ok(()) Ok(())