diff options
| author | Andy Russell <arussell123@gmail.com> | 2018-11-28 14:54:08 -0500 |
|---|---|---|
| committer | Andy Russell <arussell123@gmail.com> | 2018-12-10 12:34:46 -0500 |
| commit | 7f7045f84795a7e1c1fb0a0160bf3319368c09ba (patch) | |
| tree | 0a7fb64cdad084d96dbeffd2fcb8b2334760be67 /src/libsyntax/ext | |
| parent | c3c2de964d8e20f37b696aa2bd3c1b6ae3099a58 (diff) | |
| download | rust-7f7045f84795a7e1c1fb0a0160bf3319368c09ba.tar.gz rust-7f7045f84795a7e1c1fb0a0160bf3319368c09ba.zip | |
improve diagnostics for invalid external docs
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index adf080a27a3..44d5ae6b40d 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1535,17 +1535,33 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> { let item = attr::mk_list_item(DUMMY_SP, include_ident, include_info); items.push(dummy_spanned(ast::NestedMetaItemKind::MetaItem(item))); } - Err(ref e) if e.kind() == ErrorKind::InvalidData => { - self.cx.span_err( - at.span, - &format!("{} wasn't a utf-8 file", filename.display()), - ); - } Err(e) => { - self.cx.span_err( - at.span, - &format!("couldn't read {}: {}", filename.display(), e), - ); + let lit = it + .meta_item() + .and_then(|item| item.name_value_literal()) + .unwrap(); + + if e.kind() == ErrorKind::InvalidData { + self.cx + .struct_span_err( + lit.span, + &format!("{} wasn't a utf-8 file", filename.display()), + ) + .span_label(lit.span, "contains invalid utf-8") + .emit(); + } else { + let mut err = self.cx.struct_span_err( + lit.span, + &format!("couldn't read {}: {}", filename.display(), e), + ); + err.span_label(lit.span, "couldn't read file"); + + if e.kind() == ErrorKind::NotFound { + err.help("external doc paths are relative to the crate root"); + } + + err.emit(); + } } } } else { |
