SourceMap tracks all the source code used within a single crate, mapping
from integer byte positions to the original source code location. Each bit
of source parsed during crate parsing (typically files, in-memory strings,
or various bits of macro expansion) cover a continuous range of bytes in the
SourceMap and are represented by
SourceFiles. Byte positions are stored in
Span and used pervasively in the compiler. They are absolute positions
SourceMap, which upon request can be converted to line and column
information, source code snippets, etc.
A FileLoader that uses std::fs to load real files.
An abstraction over the fs operations used by the Parser.
Returns the span itself if it doesn't come from a macro expansion,
otherwise return the call site span up to the