提交 1dcfd144 编写于 作者: D Dominik Winecki

Make non-found module name optional

No longer uses a magic string for missing or root module.
上级 da569fa9
......@@ -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 collect_mod(names: &mut Vec<Ident>, module: Module) {
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 {
......
......@@ -524,7 +524,7 @@ pub fn finalize_imports(&mut self) {
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 @@ fn finalize_import(&mut self, directive: &'b ImportDirective<'b>) -> Option<(Spa
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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册