diff --git a/src/etc/check_missing_items.py b/src/etc/check_missing_items.py index de1717b3f3f9a..89696f392621b 100644 --- a/src/etc/check_missing_items.py +++ b/src/etc/check_missing_items.py @@ -31,7 +31,7 @@ def check_generics(generics): for where_predicate in generics["where_predicates"]: if "bound_predicate" in where_predicate: pred = where_predicate["bound_predicate"] - check_type(pred["ty"]) + check_type(pred["type"]) for bound in pred["bounds"]: check_generic_bound(bound) elif "region_predicate" in where_predicate: @@ -171,7 +171,7 @@ def check_type(ty): 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 7ffcfada5c079..7cf5d02f9f891 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -345,9 +345,10 @@ impl FromWithTcx for GenericParamDefKind { default: default.map(|x| (*x).into_tcx(tcx)), synthetic, }, - Const { did: _, ty, default } => { - GenericParamDefKind::Const { ty: (*ty).into_tcx(tcx), default: default.map(|x| *x) } - } + Const { did: _, ty, default } => GenericParamDefKind::Const { + type_: (*ty).into_tcx(tcx), + default: default.map(|x| *x), + }, } } } @@ -357,7 +358,7 @@ impl FromWithTcx for WherePredicate { use clean::WherePredicate::*; match predicate { BoundPredicate { ty, bounds, .. } => WherePredicate::BoundPredicate { - ty: ty.into_tcx(tcx), + type_: ty.into_tcx(tcx), bounds: bounds.into_iter().map(|x| x.into_tcx(tcx)).collect(), // FIXME: add `bound_params` to rustdoc-json-params? }, @@ -516,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 52980e07b8ca3..126c5d89ca97c 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 7df880a4ed807..17b3859a77b64 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 @@ -378,7 +378,8 @@ pub enum GenericParamDefKind { synthetic: bool, }, Const { - ty: Type, + #[serde(rename = "type")] + type_: Type, default: Option, }, } @@ -386,9 +387,19 @@ pub enum GenericParamDefKind { #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] pub enum WherePredicate { - BoundPredicate { ty: Type, bounds: Vec }, - RegionPredicate { lifetime: String, bounds: Vec }, - EqPredicate { lhs: Type, rhs: Term }, + BoundPredicate { + #[serde(rename = "type")] + type_: Type, + bounds: Vec, + }, + RegionPredicate { + lifetime: String, + bounds: Vec, + }, + EqPredicate { + lhs: Type, + rhs: Term, + }, } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -494,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/generic-associated-types/gats.rs b/src/test/rustdoc-json/generic-associated-types/gats.rs index 7adcd712ba6ab..368ff8d8da08a 100644 --- a/src/test/rustdoc-json/generic-associated-types/gats.rs +++ b/src/test/rustdoc-json/generic-associated-types/gats.rs @@ -13,10 +13,12 @@ pub trait LendingIterator { // @count - "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*]" 1 // @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*].name" \"\'a\" // @count - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*]" 1 - // @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.ty.inner" \"Self\" + // @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.type.inner" \"Self\" // @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.bounds[*].outlives" \"\'a\" // @count - "$.index[*][?(@.name=='LendingItem')].inner.bounds[*]" 1 - type LendingItem<'a>: Display where Self: 'a; + type LendingItem<'a>: Display + where + Self: 'a; // @is - "$.index[*][?(@.name=='lending_next')].inner.decl.output.kind" \"qualified_path\" // @count - "$.index[*][?(@.name=='lending_next')].inner.decl.output.inner.args.angle_bracketed.args[*]" 1 diff --git a/src/test/rustdoc-json/traits/implementors.rs b/src/test/rustdoc-json/traits/implementors.rs new file mode 100644 index 0000000000000..f7f03d987207e --- /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 {}