Skip to content

Commit

Permalink
fix(rustfmt): load nested out-of-line mods correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
calebcartwright committed Jun 18, 2021
1 parent a6bc43e commit d2f2237
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/tools/rustfmt/src/modules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
self.directory = directory;
}
match (sub_mod.ast_mod_kind, sub_mod.items) {
(Some(Cow::Borrowed(ast::ModKind::Loaded(items, ast::Inline::No, _))), _) => {
(Some(Cow::Borrowed(ast::ModKind::Loaded(items, _, _))), _) => {
self.visit_mod_from_ast(&items)
}
(Some(Cow::Owned(..)), Cow::Owned(items)) => self.visit_mod_outside_ast(items),
Expand Down
1 change: 1 addition & 0 deletions src/tools/rustfmt/src/test/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ use crate::source_file;
use crate::{is_nightly_channel, FormatReport, FormatReportFormatterBuilder, Input, Session};

mod configuration_snippet;
mod mod_resolver;
mod parser;

const DIFF_CONTEXT_SIZE: usize = 3;
Expand Down
25 changes: 25 additions & 0 deletions src/tools/rustfmt/src/test/mod_resolver.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
use std::io;
use std::path::PathBuf;

use super::read_config;

use crate::{FileName, Input, Session};

#[test]
fn nested_out_of_line_mods_loaded() {
// See also https://github.com/rust-lang/rustfmt/issues/4874
let filename = "tests/mod-resolver/issue-4874/main.rs";
let input_file = PathBuf::from(filename);
let config = read_config(&input_file);
let mut session = Session::<io::Stdout>::new(config, None);
let report = session
.format(Input::File(filename.into()))
.expect("Should not have had any execution errors");
let errors_by_file = &report.internal.borrow().0;
assert!(errors_by_file.contains_key(&FileName::Real(PathBuf::from(
"tests/mod-resolver/issue-4874/bar/baz.rs",
))));
assert!(errors_by_file.contains_key(&FileName::Real(PathBuf::from(
"tests/mod-resolver/issue-4874/foo/qux.rs",
))));
}
5 changes: 5 additions & 0 deletions src/tools/rustfmt/tests/mod-resolver/issue-4874/bar/baz.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fn
fail_fmt_check
(

) {}
1 change: 1 addition & 0 deletions src/tools/rustfmt/tests/mod-resolver/issue-4874/foo.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mod qux;
5 changes: 5 additions & 0 deletions src/tools/rustfmt/tests/mod-resolver/issue-4874/foo/qux.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
fn
badly_formatted
(

) {}
8 changes: 8 additions & 0 deletions src/tools/rustfmt/tests/mod-resolver/issue-4874/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
fn main() {
println!("Hello, world!");
}

mod foo;
mod bar {
mod baz;
}

0 comments on commit d2f2237

Please sign in to comment.