diff options
| author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-02-27 17:11:14 +0100 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2018-03-02 10:48:52 +0100 |
| commit | b74e97cf42e647d87d67a03c134a0494b6aaa811 (patch) | |
| tree | a66e948a4d31dd9681cb6984a3b1fb774bebae4a /src/libsyntax/codemap.rs | |
| parent | 878f5b05147480182ea4d8a855acc55bfeb16c22 (diff) | |
| download | rust-b74e97cf42e647d87d67a03c134a0494b6aaa811.tar.gz rust-b74e97cf42e647d87d67a03c134a0494b6aaa811.zip | |
Replace Rc with Lrc for shared data
Diffstat (limited to 'src/libsyntax/codemap.rs')
| -rw-r--r-- | src/libsyntax/codemap.rs | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index fcd2b236213..53ddbfbfd4a 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -24,11 +24,11 @@ pub use self::ExpnFormat::*; use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::stable_hasher::StableHasher; +use rustc_data_structures::sync::Lrc; use std::cell::{RefCell, Ref}; use std::cmp; use std::hash::Hash; use std::path::{Path, PathBuf}; -use std::rc::Rc; use std::env; use std::fs; @@ -126,12 +126,12 @@ impl StableFilemapId { // pub struct CodeMap { - pub(super) files: RefCell<Vec<Rc<FileMap>>>, + pub(super) files: RefCell<Vec<Lrc<FileMap>>>, file_loader: Box<FileLoader>, // This is used to apply the file path remapping as specified via // --remap-path-prefix to all FileMaps allocated within this CodeMap. path_mapping: FilePathMapping, - stable_id_to_filemap: RefCell<FxHashMap<StableFilemapId, Rc<FileMap>>>, + stable_id_to_filemap: RefCell<FxHashMap<StableFilemapId, Lrc<FileMap>>>, /// In case we are in a doctest, replace all file names with the PathBuf, /// and add the given offsets to the line info doctest_offset: Option<(FileName, isize)>, @@ -177,7 +177,7 @@ impl CodeMap { self.file_loader.file_exists(path) } - pub fn load_file(&self, path: &Path) -> io::Result<Rc<FileMap>> { + pub fn load_file(&self, path: &Path) -> io::Result<Lrc<FileMap>> { let src = self.file_loader.read_file(path)?; let filename = if let Some((ref name, _)) = self.doctest_offset { name.clone() @@ -187,11 +187,11 @@ impl CodeMap { Ok(self.new_filemap(filename, src)) } - pub fn files(&self) -> Ref<Vec<Rc<FileMap>>> { + pub fn files(&self) -> Ref<Vec<Lrc<FileMap>>> { self.files.borrow() } - pub fn filemap_by_stable_id(&self, stable_id: StableFilemapId) -> Option<Rc<FileMap>> { + pub fn filemap_by_stable_id(&self, stable_id: StableFilemapId) -> Option<Lrc<FileMap>> { self.stable_id_to_filemap.borrow().get(&stable_id).map(|fm| fm.clone()) } @@ -207,7 +207,7 @@ impl CodeMap { /// Creates a new filemap without setting its line information. If you don't /// intend to set the line information yourself, you should use new_filemap_and_lines. - pub fn new_filemap(&self, filename: FileName, src: String) -> Rc<FileMap> { + pub fn new_filemap(&self, filename: FileName, src: String) -> Lrc<FileMap> { let start_pos = self.next_start_pos(); let mut files = self.files.borrow_mut(); @@ -225,7 +225,7 @@ impl CodeMap { }, other => (other, false), }; - let filemap = Rc::new(FileMap::new( + let filemap = Lrc::new(FileMap::new( filename, was_remapped, unmapped_path, @@ -243,7 +243,7 @@ impl CodeMap { } /// Creates a new filemap and sets its line information. - pub fn new_filemap_and_lines(&self, filename: &Path, src: &str) -> Rc<FileMap> { + pub fn new_filemap_and_lines(&self, filename: &Path, src: &str) -> Lrc<FileMap> { let fm = self.new_filemap(filename.to_owned().into(), src.to_owned()); let mut byte_pos: u32 = fm.start_pos.0; for line in src.lines() { @@ -271,7 +271,7 @@ impl CodeMap { mut file_local_lines: Vec<BytePos>, mut file_local_multibyte_chars: Vec<MultiByteChar>, mut file_local_non_narrow_chars: Vec<NonNarrowChar>) - -> Rc<FileMap> { + -> Lrc<FileMap> { let start_pos = self.next_start_pos(); let mut files = self.files.borrow_mut(); @@ -290,7 +290,7 @@ impl CodeMap { *swc = *swc + start_pos; } - let filemap = Rc::new(FileMap { + let filemap = Lrc::new(FileMap { name: filename, name_was_remapped, unmapped_path: None, @@ -398,7 +398,7 @@ impl CodeMap { } // If the relevant filemap is empty, we don't return a line number. - pub fn lookup_line(&self, pos: BytePos) -> Result<FileMapAndLine, Rc<FileMap>> { + pub fn lookup_line(&self, pos: BytePos) -> Result<FileMapAndLine, Lrc<FileMap>> { let idx = self.lookup_filemap_idx(pos); let files = self.files.borrow(); @@ -730,7 +730,7 @@ impl CodeMap { } } - pub fn get_filemap(&self, filename: &FileName) -> Option<Rc<FileMap>> { + pub fn get_filemap(&self, filename: &FileName) -> Option<Lrc<FileMap>> { for fm in self.files.borrow().iter() { if *filename == fm.name { return Some(fm.clone()); @@ -827,7 +827,7 @@ impl CodeMapper for CodeMap { } sp } - fn ensure_filemap_source_present(&self, file_map: Rc<FileMap>) -> bool { + fn ensure_filemap_source_present(&self, file_map: Lrc<FileMap>) -> bool { file_map.add_external_src( || match file_map.name { FileName::Real(ref name) => self.file_loader.read_file(name).ok(), @@ -883,7 +883,7 @@ impl FilePathMapping { mod tests { use super::*; use std::borrow::Cow; - use std::rc::Rc; + use rustc_data_structures::sync::Lrc; #[test] fn t1 () { @@ -1104,7 +1104,7 @@ mod tests { /// `substring` in `source_text`. trait CodeMapExtension { fn span_substr(&self, - file: &Rc<FileMap>, + file: &Lrc<FileMap>, source_text: &str, substring: &str, n: usize) @@ -1113,7 +1113,7 @@ mod tests { impl CodeMapExtension for CodeMap { fn span_substr(&self, - file: &Rc<FileMap>, + file: &Lrc<FileMap>, source_text: &str, substring: &str, n: usize) |
