rustdoc: Fix json output and input
Turns out a hash map with integer keys isn't serializable to json. Closes #10115
This commit is contained in:
parent
6db37bb147
commit
68d576fd34
5 changed files with 34 additions and 6 deletions
|
|
@ -25,7 +25,6 @@ use rustc::metadata::csearch;
|
|||
use rustc::metadata::decoder;
|
||||
|
||||
use std;
|
||||
use std::hashmap::HashMap;
|
||||
|
||||
use doctree;
|
||||
use visit_ast;
|
||||
|
|
@ -68,7 +67,7 @@ impl<T: Clean<U>, U> Clean<~[U]> for syntax::opt_vec::OptVec<T> {
|
|||
pub struct Crate {
|
||||
name: ~str,
|
||||
module: Option<Item>,
|
||||
externs: HashMap<ast::CrateNum, ExternalCrate>,
|
||||
externs: ~[(ast::CrateNum, ExternalCrate)],
|
||||
}
|
||||
|
||||
impl<'a> Clean<Crate> for visit_ast::RustdocVisitor<'a> {
|
||||
|
|
@ -76,9 +75,9 @@ impl<'a> Clean<Crate> for visit_ast::RustdocVisitor<'a> {
|
|||
use syntax::attr::find_crateid;
|
||||
let cx = local_data::get(super::ctxtkey, |x| *x.unwrap());
|
||||
|
||||
let mut externs = HashMap::new();
|
||||
let mut externs = ~[];
|
||||
cx.sess.cstore.iter_crate_data(|n, meta| {
|
||||
externs.insert(n, meta.clean());
|
||||
externs.push((n, meta.clean()));
|
||||
});
|
||||
|
||||
Crate {
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ pub fn run(mut krate: clean::Crate, dst: Path) -> io::IoResult<()> {
|
|||
krate = folder.fold_crate(krate);
|
||||
}
|
||||
|
||||
for (&n, e) in krate.externs.iter() {
|
||||
for &(n, ref e) in krate.externs.iter() {
|
||||
cache.extern_locations.insert(n, extern_location(e, &cx.dst));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -344,7 +344,7 @@ fn json_output(krate: clean::Crate, res: ~[plugins::PluginJson],
|
|||
};
|
||||
let crate_json = match json::from_str(crate_json_str) {
|
||||
Ok(j) => j,
|
||||
Err(_) => fail!("Rust generated JSON is invalid??")
|
||||
Err(e) => fail!("Rust generated JSON is invalid: {:?}", e)
|
||||
};
|
||||
|
||||
json.insert(~"crate", crate_json);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue