Skip to content

Commit

Permalink
Auto merge of rust-lang#94921 - aDotInTheVoid:rustdoc-json-format-cle…
Browse files Browse the repository at this point in the history
…anup, r=CraftSpider

rustdoc-json: Clean Up json format

No semantic changes, but better names

Closes rust-lang#94198

Closes rust-lang#94889

r? `@CraftSpider`

`@rustbot` modify labels: +A-rustdoc-json +T-rustdoc +C-cleanup
  • Loading branch information
bors committed Mar 14, 2022
2 parents 3f58828 + a5c0b14 commit 6b9b2bd
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 16 deletions.
4 changes: 2 additions & 2 deletions src/etc/check_missing_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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"])
Expand Down
11 changes: 6 additions & 5 deletions src/librustdoc/json/conversions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,10 @@ impl FromWithTcx<clean::GenericParamDefKind> 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),
},
}
}
}
Expand All @@ -357,7 +358,7 @@ impl FromWithTcx<clean::WherePredicate> 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?
},
Expand Down Expand Up @@ -516,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
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/json/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
23 changes: 17 additions & 6 deletions src/rustdoc-json-types/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -378,17 +378,28 @@ pub enum GenericParamDefKind {
synthetic: bool,
},
Const {
ty: Type,
#[serde(rename = "type")]
type_: Type,
default: Option<String>,
},
}

#[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)]
Expand Down Expand Up @@ -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)]
Expand Down
6 changes: 4 additions & 2 deletions src/test/rustdoc-json/generic-associated-types/gats.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
19 changes: 19 additions & 0 deletions src/test/rustdoc-json/traits/implementors.rs
Original file line number Diff line number Diff line change
@@ -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 {}

0 comments on commit 6b9b2bd

Please sign in to comment.