diff --git a/src/etc/check_missing_items.py b/src/etc/check_missing_items.py index 3a958a06ec2..89696f39262 100644 --- a/src/etc/check_missing_items.py +++ b/src/etc/check_missing_items.py @@ -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"]) diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index dbd71c437b9..7cf5d02f9f8 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -517,7 +517,7 @@ impl FromWithTcx 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 } } } diff --git a/src/librustdoc/json/mod.rs b/src/librustdoc/json/mod.rs index 52980e07b8c..126c5d89ca9 100644 --- a/src/librustdoc/json/mod.rs +++ b/src/librustdoc/json/mod.rs @@ -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 { diff --git a/src/rustdoc-json-types/lib.rs b/src/rustdoc-json-types/lib.rs index 11bcd522058..17b3859a77b 100644 --- a/src/rustdoc-json-types/lib.rs +++ b/src/rustdoc-json-types/lib.rs @@ -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, pub generics: Generics, pub bounds: Vec, - pub implementors: Vec, + pub implementations: Vec, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] diff --git a/src/test/rustdoc-json/traits/implementors.rs b/src/test/rustdoc-json/traits/implementors.rs new file mode 100644 index 00000000000..f7f03d98720 --- /dev/null +++ b/src/test/rustdoc-json/traits/implementors.rs @@ -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 {}