Make error message clearer about creating new module
This commit is contained in:
parent
2890b37b86
commit
8de1ec9ce0
@ -18,6 +18,7 @@
|
||||
|
||||
use log::{debug, trace};
|
||||
use std::mem;
|
||||
use std::path::PathBuf;
|
||||
|
||||
const TURBOFISH: &str = "use `::<...>` instead of `<...>` to specify type arguments";
|
||||
|
||||
@ -40,29 +41,15 @@ pub(super) fn dummy_arg(ident: Ident) -> Param {
|
||||
}
|
||||
|
||||
pub enum Error {
|
||||
FileNotFoundForModule {
|
||||
mod_name: String,
|
||||
default_path: String,
|
||||
secondary_path: String,
|
||||
dir_path: String,
|
||||
},
|
||||
DuplicatePaths {
|
||||
mod_name: String,
|
||||
default_path: String,
|
||||
secondary_path: String,
|
||||
},
|
||||
FileNotFoundForModule { mod_name: String, default_path: PathBuf },
|
||||
DuplicatePaths { mod_name: String, default_path: String, secondary_path: String },
|
||||
UselessDocComment,
|
||||
}
|
||||
|
||||
impl Error {
|
||||
fn span_err(self, sp: impl Into<MultiSpan>, handler: &Handler) -> DiagnosticBuilder<'_> {
|
||||
match self {
|
||||
Error::FileNotFoundForModule {
|
||||
ref mod_name,
|
||||
ref default_path,
|
||||
ref secondary_path,
|
||||
ref dir_path,
|
||||
} => {
|
||||
Error::FileNotFoundForModule { ref mod_name, ref default_path } => {
|
||||
let mut err = struct_span_err!(
|
||||
handler,
|
||||
sp,
|
||||
@ -71,8 +58,9 @@ fn span_err(self, sp: impl Into<MultiSpan>, handler: &Handler) -> DiagnosticBuil
|
||||
mod_name,
|
||||
);
|
||||
err.help(&format!(
|
||||
"name the file either {} or {} inside the directory \"{}\"",
|
||||
default_path, secondary_path, dir_path,
|
||||
"to create the module `{}`, create file \"{}\"",
|
||||
mod_name,
|
||||
default_path.display(),
|
||||
));
|
||||
err
|
||||
}
|
||||
|
@ -234,12 +234,9 @@ pub fn default_submod_path(
|
||||
path: secondary_path,
|
||||
directory_ownership: DirectoryOwnership::Owned { relative: None },
|
||||
}),
|
||||
(false, false) => Err(Error::FileNotFoundForModule {
|
||||
mod_name: mod_name.clone(),
|
||||
default_path: default_path_str,
|
||||
secondary_path: secondary_path_str,
|
||||
dir_path: dir_path.display().to_string(),
|
||||
}),
|
||||
(false, false) => {
|
||||
Err(Error::FileNotFoundForModule { mod_name: mod_name.clone(), default_path })
|
||||
}
|
||||
(true, true) => Err(Error::DuplicatePaths {
|
||||
mod_name: mod_name.clone(),
|
||||
default_path: default_path_str,
|
||||
|
@ -4,7 +4,7 @@ error[E0583]: file not found for module `module_that_doesnt_exist`
|
||||
LL | mod module_that_doesnt_exist;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: name the file either module_that_doesnt_exist.rs or module_that_doesnt_exist/mod.rs inside the directory "$DIR"
|
||||
= help: to create the module `module_that_doesnt_exist`, create file "$DIR/module_that_doesnt_exist.rs"
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -4,7 +4,7 @@ error[E0583]: file not found for module `baz`
|
||||
LL | pub mod baz;
|
||||
| ^^^
|
||||
|
|
||||
= help: name the file either bar/baz.rs or bar/baz/mod.rs inside the directory "$DIR/auxiliary/foo"
|
||||
= help: to create the module `baz`, create file "$DIR/auxiliary/foo/bar/baz.rs"
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -4,7 +4,7 @@ error[E0583]: file not found for module `missing`
|
||||
LL | mod missing;
|
||||
| ^^^^^^^
|
||||
|
|
||||
= help: name the file either foo/missing.rs or foo/missing/mod.rs inside the directory "$DIR"
|
||||
= help: to create the module `missing`, create file "$DIR/foo/missing.rs"
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -4,7 +4,7 @@ error[E0583]: file not found for module `missing`
|
||||
LL | mod missing;
|
||||
| ^^^^^^^
|
||||
|
|
||||
= help: name the file either missing.rs or missing/mod.rs inside the directory "$DIR/foo_inline/inline"
|
||||
= help: to create the module `missing`, create file "$DIR/foo_inline/inline/missing.rs"
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
// ignore-windows
|
||||
|
||||
mod not_a_real_file; //~ ERROR file not found for module `not_a_real_file`
|
||||
//~^ HELP name the file either not_a_real_file.rs or not_a_real_file/mod.rs inside the directory
|
||||
//~^ HELP to create the module `not_a_real_file`, create file "
|
||||
|
||||
fn main() {
|
||||
assert_eq!(mod_file_aux::bar(), 10);
|
||||
|
@ -4,7 +4,7 @@ error[E0583]: file not found for module `not_a_real_file`
|
||||
LL | mod not_a_real_file;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: name the file either not_a_real_file.rs or not_a_real_file/mod.rs inside the directory "$DIR"
|
||||
= help: to create the module `not_a_real_file`, create file "$DIR/not_a_real_file.rs"
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
// only-windows
|
||||
|
||||
mod not_a_real_file; //~ ERROR file not found for module `not_a_real_file`
|
||||
//~^ HELP name the file either not_a_real_file.rs or not_a_real_file\mod.rs inside the directory
|
||||
//~^ HELP to create the module `not_a_real_file`, create file
|
||||
|
||||
fn main() {
|
||||
assert_eq!(mod_file_aux::bar(), 10);
|
||||
|
@ -4,7 +4,7 @@ error[E0583]: file not found for module `not_a_real_file`
|
||||
LL | mod not_a_real_file;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: name the file either not_a_real_file.rs or not_a_real_file/mod.rs inside the directory "$DIR"
|
||||
= help: to create the module `not_a_real_file`, create file "$DIR/not_a_real_file.rs"
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user