Skip to content

Commit f678369

Browse files
committed
Changes error reporting to an Error, Warn, and Ignore model
1 parent 4bb0453 commit f678369

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

src/config/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ create_config! {
179179
or they are left with trailing whitespaces";
180180
ignore: IgnoreList, IgnoreList::default(), false,
181181
"Skip formatting the specified files and directories";
182-
ignore_missing_submod: bool, false, false, "Ignore missing submodule error";
182+
report_missing_submod: ReportMissingSubmod, ReportMissingSubmod::Error, false,
183+
"Report missing submodule";
183184

184185
// Not user-facing
185186
verbose: Verbosity, Verbosity::Normal, false, "How much to information to emit to the user";
@@ -698,7 +699,7 @@ show_parse_errors = true
698699
error_on_line_overflow = false
699700
error_on_unformatted = false
700701
ignore = []
701-
ignore_missing_submod = false
702+
report_missing_submod = "Error"
702703
emit_mode = "Files"
703704
make_backup = false
704705
"#,

src/config/options.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,3 +494,14 @@ pub enum StyleEdition {
494494
/// [Edition 2024]().
495495
Edition2024,
496496
}
497+
498+
/// Controls whether to report missing submodules and whether rustfmt will format.
499+
#[config_type]
500+
pub enum ReportMissingSubmod {
501+
/// Missing modules will lead to module not found errors and rustfmt won't format anything.
502+
Error,
503+
/// Missing modules will lead to module not found warnings and rustfmt will format.
504+
Warn,
505+
/// Ignores missing submodule error and rustfmt will format.
506+
Ignore,
507+
}

src/formatting.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ fn format_project<T: FormatHandler>(
135135
&context.parse_session,
136136
directory_ownership.unwrap_or(DirectoryOwnership::UnownedViaBlock),
137137
!input_is_stdin && !config.skip_children(),
138-
config.ignore_missing_submod(),
138+
config.report_missing_submod(),
139139
)
140140
.visit_crate(&krate)?
141141
.into_iter()

src/modules.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use thin_vec::ThinVec;
1010
use thiserror::Error;
1111

1212
use crate::attr::MetaVisitor;
13-
use crate::config::FileName;
13+
use crate::config::{FileName, ReportMissingSubmod};
1414
use crate::items::is_mod_decl;
1515
use crate::parse::parser::{
1616
Directory, DirectoryOwnership, ModError, ModulePathSuccess, Parser, ParserError,
@@ -62,7 +62,7 @@ pub(crate) struct ModResolver<'ast, 'sess> {
6262
directory: Directory,
6363
file_map: FileModMap<'ast>,
6464
recursive: bool,
65-
ignore_missing_submod: bool,
65+
report_missing_submod: ReportMissingSubmod,
6666
}
6767

6868
/// Represents errors while trying to resolve modules.
@@ -106,7 +106,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
106106
parse_sess: &'sess ParseSess,
107107
directory_ownership: DirectoryOwnership,
108108
recursive: bool,
109-
ignore_missing_submod: bool,
109+
report_missing_submod: ReportMissingSubmod,
110110
) -> Self {
111111
ModResolver {
112112
directory: Directory {
@@ -116,7 +116,7 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
116116
file_map: BTreeMap::new(),
117117
parse_sess,
118118
recursive,
119-
ignore_missing_submod,
119+
report_missing_submod,
120120
}
121121
}
122122

@@ -254,10 +254,16 @@ impl<'ast, 'sess, 'c> ModResolver<'ast, 'sess> {
254254
self.find_external_module(item.ident, &item.attrs, sub_mod)
255255
.or_else(|err| match err.kind {
256256
ModuleResolutionErrorKind::NotFound { file: _ }
257-
if self.ignore_missing_submod =>
257+
if self.report_missing_submod == ReportMissingSubmod::Ignore =>
258258
{
259259
Ok(None)
260260
}
261+
ModuleResolutionErrorKind::NotFound { file: _ }
262+
if self.report_missing_submod == ReportMissingSubmod::Warn =>
263+
{
264+
eprintln!("Warning: {}", err);
265+
Ok(None)
266+
}
261267
_ => Err(err),
262268
})
263269
} else {

0 commit comments

Comments
 (0)