Make line counts reflect all line endings #691
Closed
+29
−13
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.
Summary
Metro included a few functions to count source lines, some of which didn't correctly count all line terminators specified in the ECMAScript standard. This PR replaces those implementations with the correct one found in
packages/metro/src/shared/output/RamBundle/util.js
.The user-facing issue which led me to this was that importing a file with CRLF line endings caused
/symbolicate
to return incorrect mappings for all files after that one in the bundle. Metro-transform-worker was double-counting the line endings and getExplodedSourceMap was carrying that erroneous offset through.Test plan
There's a new test for a variety of line endings, and the several existing tests that exercise countLines pass without modification.