pub(crate) fn gen_next(
i: &mut Interp,
this: Value,
a: &[Value],
) -> Result<Value, Value>Expand description
async function* () {}(非同期 generator)の .next() が仕様上必ず Promise を
返すべきところ(AsyncGenerator.prototype.next)、is_async フラグが is_ generator のチェックに常に先を越されて完全に無視されており(call_value の
分岐順序)、普通の同期 generator と全く同じ {value,done} プレーンオブジェクトを
直接返してしまっていたバグ。await gen.next() は非 Promise 値をそのまま返す
簡略実装のおかげで見かけ上は動いていたが、gen.next() instanceof Promise 等の
型チェックは常に false になっていた。