Fix parsing errors on implementation keywords in conditional branches
#300
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.
In 5072681, we implemented keyword case-insensitivity directly into the grammar. This gave us a small performance boost, but quietly impaired our ability to track
directiveNestingwhile lexing a source file.We were using the case-sensitive
String#startsWithto check for a particular compiler directive while lexing the token, which used to work because the input actually was lowercase before. Now, we need to do a case-insensitive comparison because the input is using the original casing.This
directiveNestingissue introduced some subtle issues in cases where:implementationsectionimplementationkeywords are nested within conditional directives ($IF(DEF),$SLSE)Fixes #299.