rustdoc: Don't treat "super" specially for urls

This was just incorrectly handled before, the path component shouldn't be looked
at at all (we used absolute paths everywhere instead of relative to the current
module location).

Closes #9861
This commit is contained in:
Alex Crichton 2013-10-17 17:15:42 -07:00
parent d773a024a2
commit cf844abced
2 changed files with 13 additions and 9 deletions

View File

@ -115,12 +115,7 @@ impl fmt::Default for clean::Path {
fn resolved_path(w: &mut io::Writer, id: ast::NodeId, p: &clean::Path,
print_all: bool) {
path(w, p, print_all,
|_cache, loc| {
match p.segments[0].name.as_slice() {
"super" => Some("../".repeat(loc.len() - 1)),
_ => Some("../".repeat(loc.len())),
}
},
|_cache, loc| { Some("../".repeat(loc.len())) },
|cache| {
match cache.paths.find(&id) {
None => None,

View File

@ -44,6 +44,7 @@ use std::rt::io::file::{FileInfo, DirectoryInfo};
use std::rt::io::file;
use std::rt::io;
use std::rt::io::Reader;
use std::os;
use std::str;
use std::task;
use std::unstable::finally::Finally;
@ -686,7 +687,15 @@ impl Context {
Process(Context, clean::Item),
}
enum Progress { JobNew, JobDone }
static WORKERS: int = 10;
let workers = match os::getenv("RUSTDOC_WORKERS") {
Some(s) => {
match from_str::<uint>(s) {
Some(n) => n, None => fail2!("{} not a number", s)
}
}
None => 10,
};
let mut item = match crate.module.take() {
Some(i) => i,
@ -706,7 +715,7 @@ impl Context {
// using the same channel/port. Through this, the crate is recursed on
// in a hierarchical fashion, and parallelization is only achieved if
// one node in the hierarchy has more than one child (very common).
for i in range(0, WORKERS) {
for i in range(0, workers) {
let port = port.clone();
let chan = chan.clone();
let prog_chan = prog_chan.clone();
@ -761,7 +770,7 @@ impl Context {
if jobs == 0 { break }
}
for _ in range(0, WORKERS) {
for _ in range(0, workers) {
chan.send(Die);
}
}