Skip to content

Conversation

@natecook1000
Copy link
Member

Cherry pick to swift/main of #723.

This fixes an issue where capture groups inside a positive lookahead were being reset even upon successful matching of the lookahead. For example, with the pattern `/(?=(\d))/`, matching against a string like `"abc1"` should result in the output `("", "1")`. However, accessing the output traps instead, since the range data for capture 1 is missing even on success. This change resolves the issue by adding a boolean payload to the `fail` instruction that indicates whether to preserve captures when resetting the matching state, which allows any captures inside a lookahead to persist after success. Fixes #713.
@natecook1000
Copy link
Member Author

@swift-ci Please test

@natecook1000 natecook1000 merged commit db96f7c into swift/main Apr 17, 2024
@natecook1000 natecook1000 deleted the swiftmain-allow-lookahead-captures branch April 17, 2024 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants