Skip to content

Conversation

brson
Copy link
Contributor

@brson brson commented Nov 16, 2012

r? @graydon

This is preparation for #2176

This series makes the codemap completely byte-oriented, only converting to char offsets on demand. This is necessary so that the parser doesn't have to 'map' an entire file at a time before beginning parsing of other files (future parser changes will require immediately starting another parser when they hit 'mod foo;' statements).

As a bonus, this modernizes the style of codemap, using proper naming conventions, object-orientation, makes it more typesafe by adding types for byte positions and char positions, makes the interaction between Parsers and the CodeMap less error prone by moving all responsibility for managing offsets between FileMaps directly into the CodeMap, probably fixes some lurking bugs in include!.

There are a lot steps here but the real action is in 81d2015, which does the conversion to using byte offsets for spans.

The remaining complexity, dealing with the FileSubstr type, should disappear with #ast.

@graydon
Copy link
Contributor

graydon commented Nov 17, 2012

r+ if you can explain a bit about how absolute byte positions work, if we're scanning multiple files (esp. in parallel in the future?) It seems to me a little wonky if this forces us to consider a crate as a contiguous source stream, but I might be misinterpreting what I see.

Excellent work in terms of careful transition, otherwise.

@brson brson merged commit e621e68 into rust-lang:incoming Nov 18, 2012
RalfJung added a commit to RalfJung/rust that referenced this pull request Nov 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants