@@ -10,7 +10,7 @@ pub(crate) use syntux::session::ParseSess;
10
10
use crate :: config:: { Config , FileName } ;
11
11
use crate :: formatting:: {
12
12
comment:: { CharClasses , FullCodeCharKind } ,
13
- modules:: Module ,
13
+ modules:: { FileModMap , Module } ,
14
14
newline_style:: apply_newline_style,
15
15
report:: NonFormattedRange ,
16
16
syntux:: parser:: { DirectoryOwnership , Parser , ParserError } ,
@@ -107,6 +107,11 @@ fn format_project(
107
107
}
108
108
} ;
109
109
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
+
110
115
let files = modules:: ModResolver :: new (
111
116
& parse_session,
112
117
directory_ownership. unwrap_or ( DirectoryOwnership :: UnownedViaMod ) ,
@@ -119,9 +124,9 @@ fn format_project(
119
124
// Suppress error output if we have to do any further parsing.
120
125
parse_session. set_silent_emitter ( ) ;
121
126
122
- for ( path, module) in files {
127
+ for ( path, module) in & files {
123
128
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 {
125
130
continue ;
126
131
}
127
132
should_emit_verbose ( input_is_stdin, operation_setting. verbosity , || {
@@ -134,6 +139,7 @@ fn format_project(
134
139
path,
135
140
& module,
136
141
& format_report,
142
+ & files,
137
143
original_snippet. clone ( ) ,
138
144
) ?;
139
145
}
@@ -154,14 +160,20 @@ fn format_file(
154
160
parse_session : & ParseSess ,
155
161
config : & Config ,
156
162
krate : & ast:: Crate ,
157
- path : FileName ,
163
+ path : & FileName ,
158
164
module : & Module < ' _ > ,
159
165
report : & FormatReport ,
166
+ file_mod_map : & FileModMap < ' _ > ,
160
167
original_snippet : Option < String > ,
161
168
) -> Result < ( ) , OperationError > {
162
169
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
+ ) ;
165
177
visitor. skip_context . update_with_attrs ( & krate. attrs ) ;
166
178
visitor. last_pos = snippet_provider. start_pos ( ) ;
167
179
visitor. skip_empty_lines ( snippet_provider. end_pos ( ) ) ;
@@ -210,7 +222,7 @@ fn format_file(
210
222
original_text,
211
223
config. newline_style ( ) ,
212
224
) ;
213
- report. add_format_result ( path, format_result) ;
225
+ report. add_format_result ( path. clone ( ) , format_result) ;
214
226
215
227
Ok ( ( ) )
216
228
}
0 commit comments