rustdoc-json-types: implementors -> implementations

Closes #94198
This commit is contained in:
Nixon Enraght-Moony 2022-03-13 23:37:04 +00:00
parent b526d8f27c
commit a5c0b1470c
5 changed files with 24 additions and 5 deletions

View File

@ -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"])

View File

@ -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
}
}
}

View File

@ -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 {

View File

@ -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)]

View 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 {}