Make error message clearer about creating new module

This commit is contained in:
Kornel 2020-02-27 16:28:27 +00:00
parent 2890b37b86
commit 8de1ec9ce0
10 changed files with 18 additions and 33 deletions

View File

@ -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
}

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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