提交 6b9b2bd3 编写于 作者: B bors

Auto merge of #94921 - aDotInTheVoid:rustdoc-json-format-cleanup, r=CraftSpider

rustdoc-json: Clean Up json format

No semantic changes, but better names

Closes https://github.com/rust-lang/rust/issues/94198

Closes https://github.com/rust-lang/rust/issues/94889

r? `@CraftSpider`

`@rustbot` modify labels: +A-rustdoc-json +T-rustdoc +C-cleanup
......@@ -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 @@ 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"])
......
......@@ -345,9 +345,10 @@ fn from_tcx(kind: clean::GenericParamDefKind, tcx: TyCtxt<'_>) -> Self {
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 @@ fn from_tcx(predicate: clean::WherePredicate, tcx: TyCtxt<'_>) -> Self {
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 @@ fn from_tcx(trait_: clean::Trait, tcx: TyCtxt<'_>) -> Self {
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 @@ fn item(&mut self, item: clean::Item) -> Result<(), Error> {
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 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<String>,
},
}
......@@ -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<GenericBound> },
RegionPredicate { lifetime: String, bounds: Vec<GenericBound> },
EqPredicate { lhs: Type, rhs: Term },
BoundPredicate {
#[serde(rename = "type")]
type_: Type,
bounds: Vec<GenericBound>,
},
RegionPredicate {
lifetime: String,
bounds: Vec<GenericBound>,
},
EqPredicate {
lhs: Type,
rhs: Term,
},
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
......@@ -494,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)]
......
......@@ -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
......
#![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 {}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册