Rollup merge of #47498 - dominikWin:missing-module-name, r=petrochenkov

Make non-found module name optional

No longer uses a magic string for missing or root module.
This commit is contained in:
kennytm 2018-01-18 01:57:29 +08:00 committed by GitHub
commit fb1f01dc05
2 changed files with 8 additions and 8 deletions

View file

@ -4062,7 +4062,7 @@ fn show_candidates(err: &mut DiagnosticBuilder,
}
/// A somewhat inefficient routine to obtain the name of a module.
fn module_to_string(module: Module) -> String {
fn module_to_string(module: Module) -> Option<String> {
let mut names = Vec::new();
fn collect_mod(names: &mut Vec<Ident>, module: Module) {
@ -4080,12 +4080,12 @@ fn module_to_string(module: Module) -> String {
collect_mod(&mut names, module);
if names.is_empty() {
return "???".to_string();
return None;
}
names_to_string(&names.into_iter()
Some(names_to_string(&names.into_iter()
.rev()
.map(|n| dummy_spanned(n))
.collect::<Vec<_>>())
.collect::<Vec<_>>()))
}
fn err_path_resolution() -> PathResolution {

View file

@ -524,7 +524,7 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
fn resolve_import(&mut self, directive: &'b ImportDirective<'b>) -> bool {
debug!("(resolving import for module) resolving import `{}::...` in `{}`",
names_to_string(&directive.module_path[..]),
module_to_string(self.current_module));
module_to_string(self.current_module).unwrap_or("???".to_string()));
self.current_module = directive.parent;
@ -773,10 +773,10 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> {
None => "".to_owned(),
};
let module_str = module_to_string(module);
let msg = if &module_str == "???" {
format!("no `{}` in the root{}", ident, lev_suggestion)
} else {
let msg = if let Some(module_str) = module_str {
format!("no `{}` in `{}`{}", ident, module_str, lev_suggestion)
} else {
format!("no `{}` in the root{}", ident, lev_suggestion)
};
Some((span, msg))
} else {