pub struct SourceMap { /* private fields */ }
Implementations§
Source§impl SourceMap
impl SourceMap
Sourcepub fn new(hash_kind: SourceFileHashAlgorithm) -> Self
pub fn new(hash_kind: SourceFileHashAlgorithm) -> Self
Creates a new empty source map with the given hash algorithm.
Sourcepub fn load_file(&self, path: &Path) -> Result<Arc<SourceFile>>
pub fn load_file(&self, path: &Path) -> Result<Arc<SourceFile>>
Loads a file from the given path.
Sourcepub fn load_stdin(&self) -> Result<Arc<SourceFile>>
pub fn load_stdin(&self) -> Result<Arc<SourceFile>>
Loads stdin
.
Sourcepub fn new_dummy_source_file(
&self,
path: PathBuf,
src: String,
) -> Result<Arc<SourceFile>>
pub fn new_dummy_source_file( &self, path: PathBuf, src: String, ) -> Result<Arc<SourceFile>>
Loads a file with the given source string.
This is useful for testing.
Sourcepub fn new_source_file(
&self,
filename: FileName,
get_src: impl FnOnce() -> Result<String>,
) -> Result<Arc<SourceFile>>
pub fn new_source_file( &self, filename: FileName, get_src: impl FnOnce() -> Result<String>, ) -> Result<Arc<SourceFile>>
Creates a new SourceFile
.
If a file already exists in the SourceMap
with the same ID, that file is returned
unmodified.
Returns an error if the file is larger than 4GiB or other errors occur while creating the
SourceFile
.
pub fn files(&self) -> ReadGuard<'_, Vec<Arc<SourceFile>>>
pub fn source_file_by_file_name( &self, filename: &FileName, ) -> Option<Arc<SourceFile>>
pub fn source_file_by_stable_id( &self, stable_id: StableSourceFileId, ) -> Option<Arc<SourceFile>>
pub fn filename_for_diagnostics<'a>( &self, filename: &'a FileName, ) -> FileNameDisplay<'a>
Sourcepub fn is_multiline(&self, span: Span) -> bool
pub fn is_multiline(&self, span: Span) -> bool
Returns true
if the given span is multi-line.
Sourcepub fn span_to_snippet(&self, span: Span) -> Result<String, SpanSnippetError>
pub fn span_to_snippet(&self, span: Span) -> Result<String, SpanSnippetError>
Returns the source snippet as String
corresponding to the given Span
.
Sourcepub fn lookup_byte_offset(&self, bpos: BytePos) -> SourceFileAndBytePos
pub fn lookup_byte_offset(&self, bpos: BytePos) -> SourceFileAndBytePos
For a global BytePos
, computes the local offset within the containing SourceFile
.
Sourcepub fn lookup_source_file_idx(&self, pos: BytePos) -> usize
pub fn lookup_source_file_idx(&self, pos: BytePos) -> usize
Returns the index of the SourceFile
(in self.files
) that contains pos
.
This index is guaranteed to be valid for the lifetime of this SourceMap
.
Sourcepub fn lookup_source_file(&self, pos: BytePos) -> Arc<SourceFile>
pub fn lookup_source_file(&self, pos: BytePos) -> Arc<SourceFile>
Return the SourceFile that contains the given BytePos
.
Sourcepub fn lookup_char_pos(&self, pos: BytePos) -> Loc
pub fn lookup_char_pos(&self, pos: BytePos) -> Loc
Looks up source information about a BytePos
.
Sourcepub fn lookup_line(
&self,
pos: BytePos,
) -> Result<SourceFileAndLine, Arc<SourceFile>>
pub fn lookup_line( &self, pos: BytePos, ) -> Result<SourceFileAndLine, Arc<SourceFile>>
If the corresponding SourceFile
is empty, does not return a line number.
Sourcepub fn span_to_prev_source(&self, sp: Span) -> Result<String, SpanSnippetError>
pub fn span_to_prev_source(&self, sp: Span) -> Result<String, SpanSnippetError>
Returns the source snippet as String
before the given Span
.
pub fn is_valid_span(&self, sp: Span) -> Result<(Loc, Loc), SpanLinesError>
pub fn is_line_before_span_empty(&self, sp: Span) -> bool
pub fn span_to_lines(&self, sp: Span) -> FileLinesResult
Sourcepub fn span_to_diagnostic_string(&self, sp: Span) -> String
pub fn span_to_diagnostic_string(&self, sp: Span) -> String
Format the span location to be printed in diagnostics. Must not be emitted to build artifacts as this may leak local file paths. Use span_to_embeddable_string for string suitable for embedding.
pub fn span_to_string(&self, sp: Span) -> String
pub fn span_to_location_info( &self, sp: Span, ) -> (Option<Arc<SourceFile>>, usize, usize, usize, usize)
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for SourceMap
impl !RefUnwindSafe for SourceMap
impl Send for SourceMap
impl Sync for SourceMap
impl Unpin for SourceMap
impl UnwindSafe for SourceMap
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more