major behavior changes to layouting #53
Merged
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.
Layouts are ended when it is detected that such event happens
regardless of whether it is correct to do so. This allows for
stronger error recovery as the parser can reliably detect where
a layout ends.
Layouts now terminates at the end of each statements or blocks, rather
than collecting up to the next statement.
Layout termination now plays a lot nicer in recovery scenarios by
issuing a forced change to the scanner state. This makes the parser
respects layout termination during recovery, resulting in much better
syntax tree on errors.
The body of an indented statement list is now optional. While this
construct cannot be generated by normal means as the scanner must see
content to even start a block, they can happen due to errors within
the block. Allowing the block to be empty in this case gives
tree-sitter a safe avenue to rollback instead of rolling back the
entire large structure, which can be seen in keywords break AST #42
Fixes #42
Fixes #45