Fix NullReferenceException in takeWhilePlusLast with single-element sequences #728
+21
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using
ImplieswithReplaythrewNullReferenceExceptionwhen the condition evaluated to false, as Replay mode produces single-element sequences that exposed a bug intakeWhilePlusLast.Root Cause
takeWhilePlusLasthad independent conditionals forMoveNext()and the predicate check:After the sequence exhausts,
MoveNext()returns false, but the code still evaluatespredicate en.Current, accessing the enumerator in an undefined state.Changes
MoveNext()conditional to ensureen.Currentis only accessed when validOnArgumentsinvocation into Passed/Failed branches (rejected tests have no meaningful arguments to report)ImplieswithReplayThe bug manifested specifically with Replay because it forces single-test execution, guaranteeing the sequence exhausts on the first iteration.
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.