Fix example patch tests and stop tracking prev and next tokens #15
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.
Closes #11
The example patch tests were broken because the parser was initialized but never run. Additionally, none of the example patches were complex enough to hit the recursion depth limit. I added a few longer patches and run the parser, which reproduced the recursion depth limit within tests.
To fix the recursion limit, which was caused by deep copying tokens, and by extension all other tokens given that they are doubly linked, I removed tracking of previous and next tokens. This was initially implemented to handle multi-word instructions by traversing to neighboring tokens, but that is now handled by TokenRegistry, and there are no other apparent use cases. If I find that I need that functionality in the future, it can be re-implemented and the _clone method can be rewritten to avoid deeply copying neighboring tokens.