parent
b526d8f27c
commit
a5c0b1470c
@ -171,7 +171,7 @@ while work_list:
|
||||
for bound in item["inner"]["bounds"]:
|
||||
check_generic_bound(bound)
|
||||
work_list |= (
|
||||
set(item["inner"]["items"]) | set(item["inner"]["implementors"])
|
||||
set(item["inner"]["items"]) | set(item["inner"]["implementations"])
|
||||
) - visited
|
||||
elif item["kind"] == "impl":
|
||||
check_generics(item["inner"]["generics"])
|
||||
|
@ -517,7 +517,7 @@ impl FromWithTcx<clean::Trait> for Trait {
|
||||
items: ids(items),
|
||||
generics: generics.into_tcx(tcx),
|
||||
bounds: bounds.into_iter().map(|x| x.into_tcx(tcx)).collect(),
|
||||
implementors: Vec::new(), // Added in JsonRenderer::item
|
||||
implementations: Vec::new(), // Added in JsonRenderer::item
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> {
|
||||
let id = item.def_id;
|
||||
if let Some(mut new_item) = self.convert_item(item) {
|
||||
if let types::ItemEnum::Trait(ref mut t) = new_item.inner {
|
||||
t.implementors = self.get_trait_implementors(id.expect_def_id())
|
||||
t.implementations = self.get_trait_implementors(id.expect_def_id())
|
||||
} else if let types::ItemEnum::Struct(ref mut s) = new_item.inner {
|
||||
s.impls = self.get_impls(id.expect_def_id())
|
||||
} else if let types::ItemEnum::Enum(ref mut e) = new_item.inner {
|
||||
|
@ -9,7 +9,7 @@ use std::path::PathBuf;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// rustdoc format-version.
|
||||
pub const FORMAT_VERSION: u32 = 13;
|
||||
pub const FORMAT_VERSION: u32 = 14;
|
||||
|
||||
/// A `Crate` is the root of the emitted JSON blob. It contains all type/documentation information
|
||||
/// about the language items in the local crate, as well as info about external items to allow
|
||||
@ -505,7 +505,7 @@ pub struct Trait {
|
||||
pub items: Vec<Id>,
|
||||
pub generics: Generics,
|
||||
pub bounds: Vec<GenericBound>,
|
||||
pub implementors: Vec<Id>,
|
||||
pub implementations: Vec<Id>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
|
||||
|
19
src/test/rustdoc-json/traits/implementors.rs
Normal file
19
src/test/rustdoc-json/traits/implementors.rs
Normal file
@ -0,0 +1,19 @@
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
// @set wham = implementors.json "$.index[*][?(@.name=='Wham')].id"
|
||||
// @count - "$.index[*][?(@.name=='Wham')].inner.implementations[*]" 1
|
||||
// @set gmWham = - "$.index[*][?(@.name=='Wham')].inner.implementations[0]"
|
||||
pub trait Wham {}
|
||||
|
||||
// @count - "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[*]" 1
|
||||
// @is - "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[0]" $gmWham
|
||||
// @set gm = - "$.index[*][?(@.name=='Wham')].id"
|
||||
|
||||
// jsonpath_lib isnt expressive enough (for now) to get the "impl" item, so we
|
||||
// just check it isn't pointing to the type, but when you port to jsondocck-ng
|
||||
// check what the impl item is
|
||||
// @!is - "$.index[*][?(@.name=='Wham')].inner.implementations[0]" $gm
|
||||
pub struct GeorgeMichael {}
|
||||
|
||||
impl Wham for GeorgeMichael {}
|
Loading…
x
Reference in New Issue
Block a user