Skip to content

Commit 6692e05

Browse files
authored
Do not reorder module declaration with #![macro_use] (#4284)
1 parent a8a73f5 commit 6692e05

File tree

15 files changed

+186
-66
lines changed

15 files changed

+186
-66
lines changed

Diff for: src/formatting.rs

+19-7
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub(crate) use syntux::session::ParseSess;
1010
use crate::config::{Config, FileName};
1111
use crate::formatting::{
1212
comment::{CharClasses, FullCodeCharKind},
13-
modules::Module,
13+
modules::{FileModMap, Module},
1414
newline_style::apply_newline_style,
1515
report::NonFormattedRange,
1616
syntux::parser::{DirectoryOwnership, Parser, ParserError},
@@ -107,6 +107,11 @@ fn format_project(
107107
}
108108
};
109109

110+
if !operation_setting.recursive {
111+
// Suppress error output for sub-modules if we are not in recurisve mode.
112+
parse_session.set_silent_emitter();
113+
}
114+
110115
let files = modules::ModResolver::new(
111116
&parse_session,
112117
directory_ownership.unwrap_or(DirectoryOwnership::UnownedViaMod),
@@ -119,9 +124,9 @@ fn format_project(
119124
// Suppress error output if we have to do any further parsing.
120125
parse_session.set_silent_emitter();
121126

122-
for (path, module) in files {
127+
for (path, module) in &files {
123128
let should_ignore = !input_is_stdin && parse_session.ignore_file(&path);
124-
if (!operation_setting.recursive && path != main_file) || should_ignore {
129+
if (!operation_setting.recursive && path != &main_file) || should_ignore {
125130
continue;
126131
}
127132
should_emit_verbose(input_is_stdin, operation_setting.verbosity, || {
@@ -134,6 +139,7 @@ fn format_project(
134139
path,
135140
&module,
136141
&format_report,
142+
&files,
137143
original_snippet.clone(),
138144
)?;
139145
}
@@ -154,14 +160,20 @@ fn format_file(
154160
parse_session: &ParseSess,
155161
config: &Config,
156162
krate: &ast::Crate,
157-
path: FileName,
163+
path: &FileName,
158164
module: &Module<'_>,
159165
report: &FormatReport,
166+
file_mod_map: &FileModMap<'_>,
160167
original_snippet: Option<String>,
161168
) -> Result<(), OperationError> {
162169
let snippet_provider = parse_session.snippet_provider(module.as_ref().inner);
163-
let mut visitor =
164-
FmtVisitor::from_parse_sess(&parse_session, config, &snippet_provider, report.clone());
170+
let mut visitor = FmtVisitor::from_parse_sess(
171+
&parse_session,
172+
config,
173+
&snippet_provider,
174+
file_mod_map,
175+
report.clone(),
176+
);
165177
visitor.skip_context.update_with_attrs(&krate.attrs);
166178
visitor.last_pos = snippet_provider.start_pos();
167179
visitor.skip_empty_lines(snippet_provider.end_pos());
@@ -210,7 +222,7 @@ fn format_file(
210222
original_text,
211223
config.newline_style(),
212224
);
213-
report.add_format_result(path, format_result);
225+
report.add_format_result(path.clone(), format_result);
214226

215227
Ok(())
216228
}

0 commit comments

Comments
 (0)