mozilla/rust — pull request #3992 by brson (2012-11-16 23:29:33+00:00)
Title: Make codemap byte-oriented, simpler

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 81d20156cd44358e47e5081635f28ea31c01a757, which does the conversion to using bytes offsets for spans.