Skip to content

fix(engine): check iterator completion before requesting rest values (#5648) - #5656

Open
Tushar15769 wants to merge 2 commits into
boa-dev:mainfrom
Tushar15769:fix/iterator-rest-done-check
Open

Tushar15769 wants to merge 2 commits into
boa-dev:mainfrom
Tushar15769:fix/iterator-rest-done-check

Conversation

@Tushar15769

Copy link
Copy Markdown

This PR fixes an issue in array-rest destructuring where next() could be called again even after the iterator was already marked as done.

The problem occurs when earlier elements in the destructuring pattern have already exhausted the iterator. When processing the rest element, iterator_to_array was still calling iterator_next() without checking the iterator's completion state first.

The change adds a completion check before requesting the next iterator result. The existing check after iterator_next() is kept to handle normal iterator exhaustion.

It also adds tests covering the following cases:

  • An iterator that immediately returns done: true.
  • An iterator that yields multiple values before finishing.
  • An exception thrown from next().
  • Normal array-rest destructuring.
  • An iterator exhausted by preceding elements in the destructuring pattern.

The changes are limited to iterator.rs and iterators.rs. No changes were made to the other bugs mentioned in the issue.

Tests run:

  • cargo fmt --all -- --check
  • cargo test -p boa_engine --lib
  • cargo test -p boa_engine --lib -- tests::spread
  • cargo test --workspace

Fixes #5648

@Tushar15769
Tushar15769 requested a review from a team as a code owner November 10, 2026 20:27
@github-actions github-actions Bot added Waiting On Review Waiting on reviews from the maintainers C-Tests Issues and PRs related to the tests. C-VM Issues and PRs related to the Boa Virtual Machine. labels Nov 10, 2026
@github-actions github-actions Bot added this to the v0.23 milestone Nov 10, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-Tests Issues and PRs related to the tests. C-VM Issues and PRs related to the Boa Virtual Machine. Waiting On Review Waiting on reviews from the maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Destructuring bugs (numeric key with default, object rest, extra next()) and async finally { return }

1 participant