1
Fork 0

FIXME(9639) remove fixme and accept non-utf8 paths in librustdoc

This commit is contained in:
Niv Kaminer 2018-12-19 19:03:05 +02:00
parent 0e72c80afe
commit 7894717e91

View file

@ -1232,10 +1232,8 @@ fn write_minify_replacer<W: Write>(dst: &mut W,
/// static HTML tree. Each component in the cleaned path will be passed as an /// static HTML tree. Each component in the cleaned path will be passed as an
/// argument to `f`. The very last component of the path (ie the file name) will /// argument to `f`. The very last component of the path (ie the file name) will
/// be passed to `f` if `keep_filename` is true, and ignored otherwise. /// be passed to `f` if `keep_filename` is true, and ignored otherwise.
// FIXME (#9639): The closure should deal with &[u8] instead of &str
// FIXME (#9639): This is too conservative, rejecting non-UTF-8 paths
fn clean_srcpath<F>(src_root: &Path, p: &Path, keep_filename: bool, mut f: F) where fn clean_srcpath<F>(src_root: &Path, p: &Path, keep_filename: bool, mut f: F) where
F: FnMut(&str), F: FnMut(&OsStr),
{ {
// make it relative, if possible // make it relative, if possible
let p = p.strip_prefix(src_root).unwrap_or(p); let p = p.strip_prefix(src_root).unwrap_or(p);
@ -1248,8 +1246,8 @@ fn clean_srcpath<F>(src_root: &Path, p: &Path, keep_filename: bool, mut f: F) wh
} }
match c { match c {
Component::ParentDir => f("up"), Component::ParentDir => f("up".as_ref()),
Component::Normal(c) => f(c.to_str().unwrap()), Component::Normal(c) => f(c),
_ => continue, _ => continue,
} }
} }
@ -1348,7 +1346,7 @@ impl<'a> SourceCollector<'a> {
cur.push(component); cur.push(component);
fs::create_dir_all(&cur).unwrap(); fs::create_dir_all(&cur).unwrap();
root_path.push_str("../"); root_path.push_str("../");
href.push_str(component); href.push_str(&component.to_string_lossy());
href.push('/'); href.push('/');
}); });
let mut fname = p.file_name() let mut fname = p.file_name()
@ -2227,7 +2225,7 @@ impl<'a> Item<'a> {
}; };
clean_srcpath(&src_root, file, false, |component| { clean_srcpath(&src_root, file, false, |component| {
path.push_str(component); path.push_str(&component.to_string_lossy());
path.push('/'); path.push('/');
}); });
let mut fname = file.file_name().expect("source has no filename") let mut fname = file.file_name().expect("source has no filename")