Handle multiply-referenced files

Fixes #645
This commit is contained in:
Nick Cameron 2015-11-23 15:22:00 +13:00
parent e3f39941de
commit 2661592d59
3 changed files with 14 additions and 4 deletions

View File

@ -298,7 +298,7 @@ fn fmt_ast(krate: &ast::Crate,
println!("Formatting {}", path);
}
let mut visitor = FmtVisitor::from_codemap(parse_session, config, Some(mode));
visitor.format_separate_mod(module, path);
visitor.format_separate_mod(module);
file_map.insert(path.to_owned(), visitor.buffer);
}
file_map
@ -404,7 +404,7 @@ pub fn format_string(input: String, config: &Config, mode: WriteMode) -> FileMap
// do the actual formatting
let mut visitor = FmtVisitor::from_codemap(&parse_session, config, Some(mode));
visitor.format_separate_mod(&krate.module, path);
visitor.format_separate_mod(&krate.module);
// append final newline
visitor.buffer.push_str("\n");

View File

@ -463,8 +463,8 @@ impl<'a> FmtVisitor<'a> {
}
}
pub fn format_separate_mod(&mut self, m: &ast::Mod, filename: &str) {
let filemap = self.codemap.get_filemap(filename);
pub fn format_separate_mod(&mut self, m: &ast::Mod) {
let filemap = self.codemap.lookup_char_pos(m.inner.lo).file;
self.last_pos = filemap.start_pos;
self.block_indent = Indent::empty();
self.walk_mod_items(m);

View File

@ -0,0 +1,10 @@
// Tests that where a single file is referred to in multiple places, we don't
// crash.
#[cfg(all(foo))]
#[path = "closure.rs"]
pub mod imp;
#[cfg(all(bar))]
#[path = "closure.rs"]
pub mod imp;