,
- heading_offset: HeadingOffset,
-) -> impl fmt::Display {
- fmt::from_fn(move |f| {
- f.write_str("")?;
- Markdown {
- content: md_text,
- links: &links,
- ids: &mut cx.id_map.borrow_mut(),
- error_codes: cx.shared.codes,
- edition: cx.shared.edition(),
- playground: &cx.shared.playground,
- heading_offset,
- }
- .write_into(&mut *f)?;
- f.write_str("
")
- })
-}
-
/// Writes a documentation block containing only the first paragraph of the documentation. If the
/// docs are longer, a "Read more" link is appended to the end.
fn document_short(
@@ -758,10 +739,14 @@ fn document_short(
if !show_def_docs {
return Ok(());
}
- let s = item.doc_value();
- if !s.is_empty() {
+ let doc_values = item.doc_values();
+ let (dox, intra_doc_links) =
+ doc_values.iter().next().map_or_default(|(opt_item_id, dox)| {
+ (&dox[..], opt_item_id.map_or(item.item_id, ItemId::DefId).links(cx))
+ });
+ if !dox.is_empty() {
let (mut summary_html, has_more_content) =
- MarkdownSummaryLine(&s, &item.links(cx)).into_string_with_has_more_content();
+ MarkdownSummaryLine(&dox, &intra_doc_links).into_string_with_has_more_content();
let link = if has_more_content {
let link = fmt::from_fn(|f| {
@@ -812,20 +797,35 @@ fn document_full_inner(
heading_offset: HeadingOffset,
) -> impl fmt::Display {
fmt::from_fn(move |f| {
- if let Some(s) = item.opt_doc_value() {
- debug!("Doc block: =====\n{s}\n=====");
- if is_collapsible {
- write!(
- f,
+ if let Some(doc_values) = item.opt_doc_values() {
+ let close = if is_collapsible {
+ f.write_str(
"\
\
Expand description \
- {} ",
- render_markdown(cx, &s, item.links(cx), heading_offset)
+ ",
)?;
+ "
"
} else {
- write!(f, "{}", render_markdown(cx, &s, item.links(cx), heading_offset))?;
+ f.write_str("")?;
+ "
"
+ };
+ debug!("Doc block: {}\n", item.name.as_ref().map_or("[anonymous]", |nm| nm.as_str()));
+ for (opt_item_id, content) in doc_values.iter() {
+ debug!("Doc fragment: =====\n{content}\n=====");
+ let intra_doc_links = opt_item_id.map_or(item.item_id, ItemId::DefId).links(cx);
+ Markdown {
+ content,
+ links: &intra_doc_links,
+ ids: &mut cx.id_map.borrow_mut(),
+ error_codes: cx.shared.codes,
+ edition: cx.shared.edition(),
+ playground: &cx.shared.playground,
+ heading_offset,
+ }
+ .write_into(&mut *f)?;
}
+ f.write_str(close)?;
}
let kind = match &item.kind {
@@ -923,7 +923,7 @@ fn short_item_info(
if let Some(note) = note {
let note = note.as_str();
let mut id_map = cx.id_map.borrow_mut();
- let links = item.links(cx);
+ let links = item.item_id.links(cx);
let html = MarkdownItemInfo::new(note, &links, &mut id_map);
message.push_str(": ");
html.write_into(&mut message).unwrap();
@@ -1923,7 +1923,7 @@ fn render_impl(
trait_item_deprecated = it.is_deprecated(cx.tcx());
// We need the stability of the item from the trait
// because impls can't have a stability.
- if !item.doc_value().is_empty() {
+ if !item.doc_values().is_empty() {
document_item_info(cx, it, Some(parent))
.render_into(&mut info_buffer)?;
doc_buffer = document_full(item, cx, HeadingOffset::H5).to_string();
@@ -2303,11 +2303,16 @@ fn render_impl(
let (before_dox, after_dox) = i
.impl_item
- .opt_doc_value()
+ .doc_values()
+ .values()
+ // impl blocks can't be reexported,
+ // because they can't be named,
+ // so there will only ever be at most one docblock
+ .next()
.map(|dox| {
Markdown {
content: &dox,
- links: &i.impl_item.links(cx),
+ links: &i.impl_item.item_id.links(cx),
ids: &mut cx.id_map.borrow_mut(),
error_codes: cx.shared.codes,
edition: cx.shared.edition(),
diff --git a/src/librustdoc/html/render/print_item.rs b/src/librustdoc/html/render/print_item.rs
index 544d57d92613c..8745f399a6526 100644
--- a/src/librustdoc/html/render/print_item.rs
+++ b/src/librustdoc/html/render/print_item.rs
@@ -477,8 +477,18 @@ fn item_module(cx: &Context<'_>, item: &clean::Item, items: &[clean::Item]) -> i
};
let visibility_and_hidden = visibility_and_hidden(myitem);
- let docs = MarkdownSummaryLine(&myitem.doc_value(), &myitem.links(cx))
- .into_string();
+ let doc_values = myitem.doc_values();
+ let (dox, intra_doc_links) =
+ doc_values.iter().next().map_or_default(|(opt_item_id, dox)| {
+ (
+ &dox[..],
+ opt_item_id
+ .map_or(myitem.item_id, clean::ItemId::DefId)
+ .links(cx),
+ )
+ });
+
+ let docs = MarkdownSummaryLine(&dox, &intra_doc_links).into_string();
let (docs_before, docs_after) =
if docs.is_empty() { ("", "") } else { ("", " ") };
let deprecation_attr = deprecation_class_attr(myitem.is_deprecated(tcx));
@@ -1870,7 +1880,7 @@ fn item_variants(
clean::VariantKind::Tuple(fields) => {
// Documentation on tuple variant fields is rare, so to reduce noise we only emit
// the section if at least one field is documented.
- if fields.iter().any(|f| !f.doc_value().is_empty()) {
+ if fields.iter().any(|f| !f.doc_values().is_empty()) {
Some(("Tuple Fields", fields))
} else {
None
diff --git a/src/librustdoc/html/render/search_index.rs b/src/librustdoc/html/render/search_index.rs
index 38e91050fc9bc..98297586db382 100644
--- a/src/librustdoc/html/render/search_index.rs
+++ b/src/librustdoc/html/render/search_index.rs
@@ -1325,8 +1325,10 @@ pub(crate) fn build_index(
// The crate always goes first in this list
let crate_name = krate.name(tcx);
- let crate_doc =
- short_markdown_summary(&krate.module.doc_value(), &krate.module.link_names(cache));
+ let crate_doc = short_markdown_summary(
+ &krate.module.doc_values().values().next().map_or_default(|s| &s[..]),
+ &krate.module.link_names(cache),
+ );
let crate_idx = {
let crate_path = (ItemType::ExternCrate, vec![crate_name]);
match serialized_index.crate_paths_index.entry(crate_path) {
diff --git a/src/librustdoc/html/render/sidebar.rs b/src/librustdoc/html/render/sidebar.rs
index 6a7d9250319aa..b8f021af57788 100644
--- a/src/librustdoc/html/render/sidebar.rs
+++ b/src/librustdoc/html/render/sidebar.rs
@@ -223,18 +223,25 @@ fn docblock_toc<'a>(
it: &'a clean::Item,
ids: &mut IdMap,
) -> Option> {
- let (toc, _) = MarkdownWithToc {
- content: &it.doc_value(),
- links: &it.links(cx),
- ids,
- error_codes: cx.shared.codes,
- edition: cx.shared.edition(),
- playground: &cx.shared.playground,
- }
- .into_parts();
- let links: Vec > = toc
- .entries
- .into_iter()
+ let links: Vec > = it
+ .doc_values()
+ .iter()
+ .map(|(opt_item_id, content)| {
+ let intra_doc_links = opt_item_id.map_or(it.item_id, clean::ItemId::DefId).links(cx);
+ MarkdownWithToc {
+ content: &content,
+ links: &intra_doc_links,
+ ids,
+ error_codes: cx.shared.codes,
+ edition: cx.shared.edition(),
+ playground: &cx.shared.playground,
+ }
+ .into_parts()
+ .0
+ .entries
+ .into_iter()
+ })
+ .flatten()
.map(|entry| {
Link {
name_html: if entry.html == entry.name { None } else { Some(entry.html.into()) },
diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs
index f4cecb08bb982..5cbe153a841a5 100644
--- a/src/librustdoc/json/conversions.rs
+++ b/src/librustdoc/json/conversions.rs
@@ -28,23 +28,29 @@ use crate::passes::collect_intra_doc_links::UrlFragment;
impl JsonRenderer<'_> {
pub(super) fn convert_item(&self, item: &clean::Item) -> Option- {
let deprecation = item.deprecation(self.tcx);
- let links = self
- .cache
- .intra_doc_links
- .get(&item.item_id)
+ let docs = item
+ .doc_values()
.into_iter()
- .flatten()
- .map(|clean::ItemLink { link, page_id, fragment, .. }| {
- let id = match fragment {
- Some(UrlFragment::Item(frag_id)) => *frag_id,
- // FIXME: Pass the `UserWritten` segment to JSON consumer.
- Some(UrlFragment::UserWritten(_)) | None => *page_id,
- };
-
- (String::from(&**link), self.id_from_item_default(id.into()))
+ .map(|(opt_def_id, text)| {
+ let links = self
+ .cache
+ .intra_doc_links
+ .get(&opt_def_id.map_or(item.item_id, ItemId::DefId))
+ .into_iter()
+ .flatten()
+ .map(|clean::ItemLink { link, page_id, fragment, .. }| {
+ let id = match fragment {
+ Some(UrlFragment::Item(frag_id)) => *frag_id,
+ // FIXME: Pass the `UserWritten` segment to JSON consumer.
+ Some(UrlFragment::UserWritten(_)) | None => *page_id,
+ };
+
+ (String::from(&**link), self.id_from_item_default(id.into()))
+ })
+ .collect();
+ Doc { links, text }
})
- .collect();
- let docs = item.opt_doc_value();
+ .collect::
>();
let attrs = item
.attrs
.other_attrs
@@ -111,7 +117,6 @@ impl JsonRenderer<'_> {
attrs,
deprecation: deprecation.into_json(self),
inner,
- links,
})
}
diff --git a/src/librustdoc/json/mod.rs b/src/librustdoc/json/mod.rs
index bdd2b7d416d80..2d0d6a086b104 100644
--- a/src/librustdoc/json/mod.rs
+++ b/src/librustdoc/json/mod.rs
@@ -443,6 +443,6 @@ mod size_asserts {
// tidy-alphabetical-end
// These contains a `PathBuf`, which is different sizes on different OSes.
- static_assert_size!(Item, 544 + size_of::());
+ static_assert_size!(Item, 512 + size_of::());
static_assert_size!(ExternalCrate, 48 + size_of::());
}
diff --git a/src/librustdoc/passes/check_doc_test_visibility.rs b/src/librustdoc/passes/check_doc_test_visibility.rs
index 17fe0cae47b76..0bd0a5ef276cf 100644
--- a/src/librustdoc/passes/check_doc_test_visibility.rs
+++ b/src/librustdoc/passes/check_doc_test_visibility.rs
@@ -30,7 +30,14 @@ pub(super) fn check_doc_test_visibility(krate: Crate, cx: &mut DocContext<'_>) -
impl DocVisitor<'_> for DocTestVisibilityLinter<'_, '_> {
fn visit_item(&mut self, item: &Item) {
- look_for_tests(self.cx, &item.doc_value(), item);
+ let doc_values = item.doc_values();
+ if doc_values.is_empty() {
+ look_for_tests(self.cx, "", item);
+ } else {
+ for text in doc_values.values() {
+ look_for_tests(self.cx, &text, item);
+ }
+ }
self.visit_item_recur(item)
}
diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs
index 78e7bcdbd7b01..f085ec104ec77 100644
--- a/src/librustdoc/passes/collect_intra_doc_links.rs
+++ b/src/librustdoc/passes/collect_intra_doc_links.rs
@@ -22,7 +22,7 @@ use rustc_middle::ty::{Ty, TyCtxt};
use rustc_resolve::rustdoc::pulldown_cmark::LinkType;
use rustc_resolve::rustdoc::{
DocStrings, MalformedGenerics, has_primitive_or_keyword_or_attribute_docs_hir,
- prepare_to_doc_link_resolution, source_span_for_markdown_range, strip_generics_from_path,
+ prepare_fragments, source_span_for_markdown_range, strip_generics_from_path,
};
use rustc_span::def_id::ModId;
use rustc_span::edit_distance::find_best_match_for_name;
@@ -1098,7 +1098,7 @@ impl LinkCollector<'_, '_> {
self.cx
.cache
.intra_doc_links
- .entry(item.item_or_reexport_id())
+ .entry(ItemId::DefId(item_id))
.or_default()
.insert(link);
}
@@ -1138,7 +1138,7 @@ impl LinkCollector<'_, '_> {
// In the presence of re-exports, this is not the same as the module of the item.
// Rather than merging all documentation into one, resolve it one attribute at a time
// so we know which module it came from.
- for (item_id, doc) in prepare_to_doc_link_resolution(&item.attrs.doc_strings) {
+ for (item_id, doc) in prepare_fragments(&item.attrs.doc_strings).iter() {
if !may_have_doc_links(&doc.inner) && !may_have_doc_links(&doc.outer) {
continue;
}
diff --git a/src/librustdoc/passes/lint.rs b/src/librustdoc/passes/lint.rs
index 9988aa683d6d6..65594f93a4392 100644
--- a/src/librustdoc/passes/lint.rs
+++ b/src/librustdoc/passes/lint.rs
@@ -27,8 +27,15 @@ impl DocVisitor<'_> for Linter<'_, '_> {
// If non-local, no need to check anything.
return;
};
- let dox = item.doc_value();
- if !dox.is_empty() {
+ for (def_id, dox) in item.doc_values().iter() {
+ if dox.is_empty() {
+ continue;
+ }
+ if let Some(def_id) = def_id
+ && !def_id.is_local()
+ {
+ continue;
+ }
let may_have_link = dox.contains(&[':', '['][..]);
let may_have_block_comment_or_html = dox.contains(['<', '>']);
let may_have_table = dox.contains(&['|'][..]);
diff --git a/src/librustdoc/passes/lint/redundant_explicit_links.rs b/src/librustdoc/passes/lint/redundant_explicit_links.rs
index e02fbae3e0568..2369b3bb45078 100644
--- a/src/librustdoc/passes/lint/redundant_explicit_links.rs
+++ b/src/librustdoc/passes/lint/redundant_explicit_links.rs
@@ -9,7 +9,7 @@ use rustc_middle::middle::resolve::DocLinkResMap;
use rustc_resolve::rustdoc::pulldown_cmark::{
BrokenLink, BrokenLinkCallback, CowStr, Event, LinkType, OffsetIter, Parser, Tag,
};
-use rustc_resolve::rustdoc::{prepare_to_doc_link_resolution, source_span_for_markdown_range};
+use rustc_resolve::rustdoc::{prepare_fragments, source_span_for_markdown_range};
use rustc_span::def_id::{DefId, ModId};
use rustc_span::{Span, Symbol};
@@ -28,7 +28,7 @@ struct LinkData {
}
pub(crate) fn visit_item(cx: &DocContext<'_>, item: &Item, hir_id: HirId) {
- let hunks = prepare_to_doc_link_resolution(&item.attrs.doc_strings);
+ let hunks = prepare_fragments(&item.attrs.doc_strings);
for (item_id, doc) in hunks {
if let Some(item_id) = item_id.or(item.def_id()) {
if !doc.outer.is_empty() || !doc.inner.is_empty() {
diff --git a/src/librustdoc/passes/stripper.rs b/src/librustdoc/passes/stripper.rs
index 45bfb519cf4f5..204838fd4987e 100644
--- a/src/librustdoc/passes/stripper.rs
+++ b/src/librustdoc/passes/stripper.rs
@@ -227,7 +227,7 @@ impl DocFolder for ImplStripper<'_, '_> {
{
debug!("ImplStripper: no public item; removing {imp:?}");
return None;
- } else if imp.items.is_empty() && i.doc_value().is_empty() {
+ } else if imp.items.is_empty() && i.doc_values().is_empty() {
debug!("ImplStripper: no item and no doc; removing {imp:?}");
return None;
}
diff --git a/src/rustdoc-json-types/lib.rs b/src/rustdoc-json-types/lib.rs
index 29ac079b6cc44..67f25121ff6e0 100644
--- a/src/rustdoc-json-types/lib.rs
+++ b/src/rustdoc-json-types/lib.rs
@@ -114,8 +114,8 @@ pub type FxHashMap = HashMap; // re-export for use in src/librustdoc
// will instead cause conflicts. See #94591 for more. (This paragraph and the "Latest feature" line
// are deliberately not in a doc comment, because they need not be in public docs.)
//
-// Latest feature: Make `Stability` work with non-self-describing formats
-pub const FORMAT_VERSION: u32 = 61;
+// Latest feature: parse reexport and item docs separately
+pub const FORMAT_VERSION: u32 = 62;
/// The root of the emitted JSON blob.
///
@@ -254,6 +254,19 @@ pub struct ItemSummary {
pub kind: ItemKind,
}
+/// A Markdown document with resolved links.
+#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
+#[cfg_attr(feature = "rkyv_0_8", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize))]
+#[cfg_attr(feature = "rkyv_0_8", rkyv(derive(Debug)))]
+pub struct Doc {
+ /// The text, with postprocessing and concatenation performed so that the document can be
+ /// parsed with a pulldown-cmark, commonmark-hs, or another Markdown processor that
+ /// implements CommonMark with GFM extensions.
+ pub text: String,
+ /// This mapping resolves [intra-doc links](https://rust-lang.github.io/rfcs/1946-intra-rustdoc-links.html) from the docstring to their IDs
+ pub links: HashMap,
+}
+
/// Anything that can hold documentation - modules, structs, enums, functions, traits, etc.
///
/// The `Item` data type holds fields that can apply to any of these,
@@ -275,11 +288,31 @@ pub struct Item {
/// By default all documented items are public, but you can tell rustdoc to output private items
/// so this field is needed to differentiate.
pub visibility: Visibility,
- /// The full markdown docstring of this item. Absent if there is no documentation at all,
- /// Some("") if there is some documentation but it is empty (EG `#[doc = ""]`).
- pub docs: Option,
- /// This mapping resolves [intra-doc links](https://rust-lang.github.io/rfcs/1946-intra-rustdoc-links.html) from the docstring to their IDs
- pub links: HashMap,
+ /// The full markdown docstring of this item. Empty if there is no documentation at all,
+ /// `vec![Doc { text: "" }]` if there is some documentation but it is empty (EG `#[doc = ""]`),
+ /// and multiple items if a reexport and the original both have docstrings.
+ ///
+ /// ```rust
+ /// /// Reexport docs
+ /// pub use Thing1 as Thing2;
+ ///
+ /// /// Original docs
+ /// pub struct Thing1;
+ /// ```
+ ///
+ /// ```json
+ /// {
+ /// "name": "Thing2",
+ /// "docs": [
+ /// { "text": "Reexport docs", "links": [] },
+ /// { "text": "Original docs", "links": [] },
+ /// ],
+ /// ...
+ /// }
+ /// ```
+ ///
+ /// No particular order is guaranteed.
+ pub docs: Vec,
/// Attributes on this item.
///
/// Does not include:
diff --git a/src/tools/jsondoclint/src/validator.rs b/src/tools/jsondoclint/src/validator.rs
index 76a47c4f4fecf..03efba7c7f379 100644
--- a/src/tools/jsondoclint/src/validator.rs
+++ b/src/tools/jsondoclint/src/validator.rs
@@ -88,7 +88,9 @@ impl<'a> Validator<'a> {
fn check_item(&mut self, id: &'a Id) {
if let Some(item) = &self.krate.index.get(id) {
- item.links.values().for_each(|id| self.add_any_id(id));
+ for doc in &item.docs {
+ doc.links.values().for_each(|id| self.add_any_id(id));
+ }
match &item.inner {
ItemEnum::Use(x) => self.check_use(x),
diff --git a/src/tools/jsondoclint/src/validator/tests.rs b/src/tools/jsondoclint/src/validator/tests.rs
index f9b54a2cc0936..90b0a520407c6 100644
--- a/src/tools/jsondoclint/src/validator/tests.rs
+++ b/src/tools/jsondoclint/src/validator/tests.rs
@@ -1,6 +1,6 @@
use rustc_hash::FxHashMap;
use rustdoc_json_types::{
- Abi, FORMAT_VERSION, FunctionHeader, Item, ItemKind, ProvidedDefaultUnstable, Visibility,
+ Abi, Doc, FORMAT_VERSION, FunctionHeader, Item, ItemKind, ProvidedDefaultUnstable, Visibility,
};
use super::*;
@@ -31,8 +31,10 @@ fn errors_on_missing_links() {
crate_id: 0,
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::from_iter([("Not Found".to_owned(), Id(1))]),
+ docs: vec![Doc {
+ text: String::new(),
+ links: FxHashMap::from_iter([("Not Found".to_owned(), Id(1))]),
+ }],
attrs: vec![],
deprecation: None,
stability: None,
@@ -56,6 +58,8 @@ fn errors_on_missing_links() {
kind: ErrorKind::NotFound(vec![vec![
SelectorPart::Field("index".to_owned()),
SelectorPart::Field("0".to_owned()),
+ SelectorPart::Field("docs".to_owned()),
+ SelectorPart::Index(0),
SelectorPart::Field("links".to_owned()),
SelectorPart::Field("Not Found".to_owned()),
]]),
@@ -81,8 +85,10 @@ fn errors_on_local_in_paths_and_not_index() {
name: Some("microcore".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::from_iter([("prim@i32".to_owned(), Id(2))]),
+ docs: vec![Doc {
+ text: String::new(),
+ links: FxHashMap::from_iter([("prim@i32".to_owned(), Id(2))]),
+ }],
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -102,8 +108,7 @@ fn errors_on_local_in_paths_and_not_index() {
name: Some("i32".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -157,8 +162,7 @@ fn errors_on_missing_path() {
name: Some("foo".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -178,8 +182,7 @@ fn errors_on_missing_path() {
name: Some("Bar".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -199,8 +202,7 @@ fn errors_on_missing_path() {
name: Some("mk_bar".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -264,8 +266,7 @@ fn krate_with_trait_item(inner: ItemEnum) -> Crate {
name: Some("root".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -285,8 +286,7 @@ fn krate_with_trait_item(inner: ItemEnum) -> Crate {
name: Some("Trait".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -310,8 +310,7 @@ fn krate_with_trait_item(inner: ItemEnum) -> Crate {
name: Some("TraitItem".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
@@ -413,8 +412,7 @@ fn checks_local_crate_id_is_correct() {
name: Some("irrelavent".to_owned()),
span: None,
visibility: Visibility::Public,
- docs: None,
- links: FxHashMap::default(),
+ docs: Vec::new(),
attrs: Vec::new(),
deprecation: None,
stability: None,
diff --git a/tests/rustdoc-html/inline_cross/add-docs.rs b/tests/rustdoc-html/inline_cross/add-docs.rs
index d4e0c53907064..0b391126b91c9 100644
--- a/tests/rustdoc-html/inline_cross/add-docs.rs
+++ b/tests/rustdoc-html/inline_cross/add-docs.rs
@@ -4,6 +4,7 @@ extern crate inner;
//@ has add_docs/struct.MyStruct.html
-//@ hasraw add_docs/struct.MyStruct.html "Doc comment from ‘pub use’, Doc comment from definition"
+//@ hasraw add_docs/struct.MyStruct.html "Doc comment from ‘pub use’,"
+//@ hasraw add_docs/struct.MyStruct.html "Doc comment from definition"
/// Doc comment from 'pub use',
pub use inner::MyStruct;
diff --git a/tests/rustdoc-html/private/inline-private-with-intermediate-doc-hidden.rs b/tests/rustdoc-html/private/inline-private-with-intermediate-doc-hidden.rs
index d27ecbad1690e..b70e454ac5893 100644
--- a/tests/rustdoc-html/private/inline-private-with-intermediate-doc-hidden.rs
+++ b/tests/rustdoc-html/private/inline-private-with-intermediate-doc-hidden.rs
@@ -9,7 +9,7 @@
//@ count - '//*[@id="main-content"]/*[@class="section-header"]' 1
//@ has - '//*[@id="main-content"]/*[@class="section-header"]' 'Structs'
//@ has - '//*[@id="main-content"]//a[@href="struct.Reexport.html"]' 'Reexport'
-//@ has - '//*[@id="main-content"]//dd' 'Visible. Original.'
+//@ has - '//*[@id="main-content"]//dd' 'Visible.'
mod private {
/// Original.
diff --git a/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Bar.docblock.html b/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Bar.docblock.html
new file mode 100644
index 0000000000000..ec032737b02bf
--- /dev/null
+++ b/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Bar.docblock.html
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Bar2.docblock.html b/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Bar2.docblock.html
new file mode 100644
index 0000000000000..b2e9e0b55d4b4
--- /dev/null
+++ b/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Bar2.docblock.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Public.docblock.html b/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Public.docblock.html
new file mode 100644
index 0000000000000..24b9cd32d0b3a
--- /dev/null
+++ b/tests/rustdoc-html/reexport/attributes-inlining-108281.fn.Public.docblock.html
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/tests/rustdoc-html/reexport/attributes-inlining-108281.rs b/tests/rustdoc-html/reexport/attributes-inlining-108281.rs
index 9dfaf1a6846f3..d2b9420f5f3fc 100644
--- a/tests/rustdoc-html/reexport/attributes-inlining-108281.rs
+++ b/tests/rustdoc-html/reexport/attributes-inlining-108281.rs
@@ -15,7 +15,7 @@ mod sub {
/// Displayed
#[doc(inline)]
pub use crate::bar as Bar;
-//@ matches - '//dd' '^Hello\sDisplayed$'
+//@ matches - '//dd' '^Hello$'
#[doc(inline)]
/// Hello
pub use crate::Bar as Bar2;
@@ -23,3 +23,15 @@ pub use crate::Bar as Bar2;
//@ matches - '//dd' '^Public$'
/// Public
pub use crate::sub::public as Public;
+
+//@ has 'foo/fn.Bar.html'
+//@ matches - '//div[@class="docblock"]' '^Displayed$'
+//@ snapshot fn.Bar.docblock - '//div[@class="docblock"]'
+
+//@ has 'foo/fn.Bar2.html'
+//@ matches - '//div[@class="docblock"]' '^Hello|Displayed$'
+//@ snapshot fn.Bar2.docblock - '//div[@class="docblock"]'
+
+//@ has 'foo/fn.Public.html'
+//@ matches - '//div[@class="docblock"]' '^Public$'
+//@ snapshot fn.Public.docblock - '//div[@class="docblock"]'
diff --git a/tests/rustdoc-html/reexport/doc-hidden-reexports-109449.rs b/tests/rustdoc-html/reexport/doc-hidden-reexports-109449.rs
index 78b9214300a95..ce8bc26863b1c 100644
--- a/tests/rustdoc-html/reexport/doc-hidden-reexports-109449.rs
+++ b/tests/rustdoc-html/reexport/doc-hidden-reexports-109449.rs
@@ -134,7 +134,11 @@ pub mod doc_hidden_reexport {
//@ count - '//dt' 1
//@ has - '//a[@class="struct"]' 'Reexport'
// Check that the `#[doc(hidden)]` re-export's attributes are not taken into account.
- //@ has - '//dd' 'Visible. Original.'
+ //@ has - '//dd' 'Visible.'
+
+ //@ has 'foo/doc_hidden_reexport/struct.Reexport.html'
+ //@ has - '//div[@class="docblock"]/p' 'Visible.'
+ //@ has - '//div[@class="docblock"]/p' 'Original.'
/// Visible.
pub use self::Bar3 as Reexport;
/// Hidden.
diff --git a/tests/rustdoc-html/reexport/link-with-same-name-but-different-destination.rs b/tests/rustdoc-html/reexport/link-with-same-name-but-different-destination.rs
new file mode 100644
index 0000000000000..665a128abd0a8
--- /dev/null
+++ b/tests/rustdoc-html/reexport/link-with-same-name-but-different-destination.rs
@@ -0,0 +1,25 @@
+// This test checks two different intra-doc links,
+// with the same refdef name, can point at different places.
+
+#![crate_name = "foo"]
+
+//@ has 'foo/index.html'
+
+pub mod one {
+ use crate::one as my_mod;
+ //@ has 'foo/one/struct.A.html'
+ //@ has - '//a[@href="index.html"]' 'there'
+ //@ !has - '//a[@href="../two/index.html"]' 'local'
+ /// Link [there][my_mod].
+ pub struct A;
+}
+
+pub mod two {
+ use crate::two as my_mod;
+ //@ has 'foo/two/struct.A.html'
+ //@ has - '//a[@href="../one/index.html"]' 'there'
+ //@ has - '//a[@href="index.html"]' 'local'
+ /// Link [local][my_mod].
+ #[doc(inline)]
+ pub use crate::one::A;
+}
diff --git a/tests/rustdoc-html/reexport/merge-glob-and-non-glob.rs b/tests/rustdoc-html/reexport/merge-glob-and-non-glob.rs
index ff67859cb39af..770be22b2d4ad 100644
--- a/tests/rustdoc-html/reexport/merge-glob-and-non-glob.rs
+++ b/tests/rustdoc-html/reexport/merge-glob-and-non-glob.rs
@@ -13,8 +13,8 @@
// We should also only have one section (Structs).
//@ count - '//h2[@class="section-header"]' 1
// We now check the short docs.
-//@ has - '//dl[@class="item-table"]/dd' 'Foobar Blob'
-//@ has - '//dl[@class="item-table"]/dd' 'Tarte Tatin'
+//@ has - '//dl[@class="item-table"]/dd' 'Foobar'
+//@ has - '//dl[@class="item-table"]/dd' 'Tarte'
//@ has 'foo/struct.Foo.html'
//@ has - '//*[@class="docblock"]' 'Foobar Blob'
diff --git a/tests/rustdoc-html/reexport/transient-reexports.rs b/tests/rustdoc-html/reexport/transient-reexports.rs
index 1ce6b67aa3ccf..cc915aacf16b3 100644
--- a/tests/rustdoc-html/reexport/transient-reexports.rs
+++ b/tests/rustdoc-html/reexport/transient-reexports.rs
@@ -15,7 +15,10 @@ extern crate bar;
//@ count - '//dl/[@class="item-table"]/dd' 1
//@ has - '//dl/[@class="item-table"]/dt/a[@href="struct.Type.html"]' 'Type'
// We should have "foo", "bar" and "baz" (one fragment in each crate reexport).
-//@ has - '//dl/[@class="item-table"]/dd' 'foo bar baz'
+//@ has - '//dl/[@class="item-table"]/dd' 'foo'
+
+//@ has 'foo/struct.Type.html'
+//@ has - '//div[@class="docblock"]' 'foo bar baz'
/// foo
pub use bar::Type;
diff --git a/tests/rustdoc-json/assoc_items.rs b/tests/rustdoc-json/assoc_items.rs
index f47a522e81a4a..b98aeb78cdc6f 100644
--- a/tests/rustdoc-json/assoc_items.rs
+++ b/tests/rustdoc-json/assoc_items.rs
@@ -8,27 +8,27 @@ impl Simple {
}
pub trait EasyToImpl {
- //@ has "$.index[?(@.docs=='ToDeclare trait')].inner.assoc_type"
- //@ is "$.index[?(@.docs=='ToDeclare trait')].inner.assoc_type.type" null
- //@ is "$.index[?(@.docs=='ToDeclare trait')].inner.assoc_type.bounds" []
+ //@ has "$.index[?(@.docs[0].text=='ToDeclare trait')].inner.assoc_type"
+ //@ is "$.index[?(@.docs[0].text=='ToDeclare trait')].inner.assoc_type.type" null
+ //@ is "$.index[?(@.docs[0].text=='ToDeclare trait')].inner.assoc_type.bounds" []
/// ToDeclare trait
type ToDeclare;
- //@ has "$.index[?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const"
- //@ is "$.index[?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const.value" null
- //@ is "$.index[?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const.type.primitive" '"usize"'
+ //@ has "$.index[?(@.docs[0].text=='AN_ATTRIBUTE trait')].inner.assoc_const"
+ //@ is "$.index[?(@.docs[0].text=='AN_ATTRIBUTE trait')].inner.assoc_const.value" null
+ //@ is "$.index[?(@.docs[0].text=='AN_ATTRIBUTE trait')].inner.assoc_const.type.primitive" '"usize"'
/// AN_ATTRIBUTE trait
const AN_ATTRIBUTE: usize;
}
impl EasyToImpl for Simple {
- //@ has "$.index[?(@.docs=='ToDeclare impl')].inner.assoc_type"
- //@ is "$.index[?(@.docs=='ToDeclare impl')].inner.assoc_type.type.primitive" \"usize\"
+ //@ has "$.index[?(@.docs[0].text=='ToDeclare impl')].inner.assoc_type"
+ //@ is "$.index[?(@.docs[0].text=='ToDeclare impl')].inner.assoc_type.type.primitive" \"usize\"
/// ToDeclare impl
type ToDeclare = usize;
- //@ has "$.index[?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const"
- //@ is "$.index[?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const.type.primitive" \"usize\"
- //@ is "$.index[?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const.value" \"12\"
+ //@ has "$.index[?(@.docs[0].text=='AN_ATTRIBUTE impl')].inner.assoc_const"
+ //@ is "$.index[?(@.docs[0].text=='AN_ATTRIBUTE impl')].inner.assoc_const.type.primitive" \"usize\"
+ //@ is "$.index[?(@.docs[0].text=='AN_ATTRIBUTE impl')].inner.assoc_const.value" \"12\"
/// AN_ATTRIBUTE impl
const AN_ATTRIBUTE: usize = 12;
}
diff --git a/tests/rustdoc-json/attrs/stability/const_traits.rs b/tests/rustdoc-json/attrs/stability/const_traits.rs
index fcad96b71f347..bffe58dcc98b1 100644
--- a/tests/rustdoc-json/attrs/stability/const_traits.rs
+++ b/tests/rustdoc-json/attrs/stability/const_traits.rs
@@ -29,15 +29,15 @@ impl InherentConstMethodTarget {
#[rustc_const_unstable(feature = "const_trait_const_feature", issue = "none")]
pub const trait ConstTrait {
// This item is *not* usable in a const context, because its parent is const-unstable.
- //@ is "$.index[?(@.docs=='assoc type inside const trait')].const_stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='assoc type inside const trait')].const_stability.feature" '"const_trait_const_feature"'
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside const trait')].const_stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside const trait')].const_stability.feature" '"const_trait_const_feature"'
/// assoc type inside const trait
#[stable(feature = "trait_assoc_type_feature", since = "2.1.0")]
type TraitAssocType;
// This item is also *not* usable in a const context, because its parent is const-unstable.
- //@ is "$.index[?(@.docs=='method inside const trait')].const_stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='method inside const trait')].const_stability.feature" '"const_trait_const_feature"'
+ //@ is "$.index[?(@.docs[0].text=='method inside const trait')].const_stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='method inside const trait')].const_stability.feature" '"const_trait_const_feature"'
/// method inside const trait
#[stable(feature = "trait_method_feature", since = "2.2.0")]
fn trait_method(&self);
@@ -45,7 +45,7 @@ pub const trait ConstTrait {
// An associated const can't be const-unstable.
// It is usable in a const context *regardless* of the fact its parent is const-unstable.
// See the UI test in `tests/ui/traits/const-traits/associated-const-stability.rs` for proof.
- //@ is "$.index[?(@.docs=='assoc const inside const trait')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside const trait')].const_stability" null
/// assoc const inside const trait
#[stable(feature = "trait_assoc_const_feature", since = "2.3.0")]
const TRAIT_ASSOC_CONST: usize;
@@ -68,30 +68,30 @@ pub const trait ConstTraitWithUnstableMethod {
fn unstable_method_without_const_gate(&self);
}
-//@ is "$.index[?(@.docs=='const trait impl')].stability.feature" '"const_trait_impl_feature"'
-//@ is "$.index[?(@.docs=='const trait impl')].stability.level.stable.since" '"3.0.0"'
-//@ is "$.index[?(@.docs=='const trait impl')].const_stability.level" '"unstable"'
-//@ is "$.index[?(@.docs=='const trait impl')].const_stability.feature" '"const_trait_impl_const_feature"'
+//@ is "$.index[?(@.docs[0].text=='const trait impl')].stability.feature" '"const_trait_impl_feature"'
+//@ is "$.index[?(@.docs[0].text=='const trait impl')].stability.level.stable.since" '"3.0.0"'
+//@ is "$.index[?(@.docs[0].text=='const trait impl')].const_stability.level" '"unstable"'
+//@ is "$.index[?(@.docs[0].text=='const trait impl')].const_stability.feature" '"const_trait_impl_const_feature"'
/// const trait impl
#[stable(feature = "const_trait_impl_feature", since = "3.0.0")]
#[rustc_const_unstable(feature = "const_trait_impl_const_feature", issue = "none")]
const impl ConstTrait for ConstTraitTarget {
// This item is *not* usable in a const context, because its parent is const-unstable.
- //@ is "$.index[?(@.docs=='assoc type inside const trait impl')].const_stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='assoc type inside const trait impl')].const_stability.feature" '"const_trait_impl_const_feature"'
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside const trait impl')].const_stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside const trait impl')].const_stability.feature" '"const_trait_impl_const_feature"'
/// assoc type inside const trait impl
type TraitAssocType = usize;
// This item is also *not* usable in a const context, because its parent is const-unstable.
- //@ is "$.index[?(@.docs=='method inside const trait impl')].const_stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='method inside const trait impl')].const_stability.feature" '"const_trait_impl_const_feature"'
+ //@ is "$.index[?(@.docs[0].text=='method inside const trait impl')].const_stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='method inside const trait impl')].const_stability.feature" '"const_trait_impl_const_feature"'
/// method inside const trait impl
fn trait_method(&self) {}
// An associated const can't be const-unstable.
// It is usable in a const context *regardless* of the fact its parent is const-unstable.
// See the UI test in `tests/ui/traits/const-traits/associated-const-stability.rs` for proof.
- //@ is "$.index[?(@.docs=='assoc const inside const trait impl')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside const trait impl')].const_stability" null
/// assoc const inside const trait impl
const TRAIT_ASSOC_CONST: usize = 0;
}
@@ -106,17 +106,17 @@ const impl ConstTrait for ConstTraitTarget {
#[stable(feature = "const_stable_trait_feature", since = "4.0.0")]
#[rustc_const_stable(feature = "const_stable_trait_const_feature", since = "4.0.0")]
pub const trait ConstStableTrait {
- //@ is "$.index[?(@.docs=='assoc type inside const-stable trait')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside const-stable trait')].const_stability" null
/// assoc type inside const-stable trait
#[stable(feature = "stable_trait_assoc_type_feature", since = "4.1.0")]
type StableTraitAssocType;
- //@ is "$.index[?(@.docs=='method inside const-stable trait')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='method inside const-stable trait')].const_stability" null
/// method inside const-stable trait
#[stable(feature = "stable_trait_method_feature", since = "4.2.0")]
fn stable_trait_method(&self);
- //@ is "$.index[?(@.docs=='assoc const inside const-stable trait')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside const-stable trait')].const_stability" null
/// assoc const inside const-stable trait
#[stable(feature = "stable_trait_assoc_const_feature", since = "4.3.0")]
const STABLE_TRAIT_ASSOC_CONST: usize;
@@ -125,23 +125,23 @@ pub const trait ConstStableTrait {
// The `const impl` is const-stable. We indicate that *once* on the impl itself, but since
// there are no special cases here (unlike in the const-unstable case with associated consts)
// we do not duplicate the const-stability to all the associated items so as not to bloat the JSON.
-//@ is "$.index[?(@.docs=='const-stable trait impl')].stability.feature" '"const_stable_trait_impl_feature"'
-//@ is "$.index[?(@.docs=='const-stable trait impl')].stability.level.stable.since" '"5.0.0"'
-//@ is "$.index[?(@.docs=='const-stable trait impl')].const_stability.feature" '"const_stable_trait_impl_const_feature"'
-//@ is "$.index[?(@.docs=='const-stable trait impl')].const_stability.level.stable.since" '"5.0.0"'
+//@ is "$.index[?(@.docs[0].text=='const-stable trait impl')].stability.feature" '"const_stable_trait_impl_feature"'
+//@ is "$.index[?(@.docs[0].text=='const-stable trait impl')].stability.level.stable.since" '"5.0.0"'
+//@ is "$.index[?(@.docs[0].text=='const-stable trait impl')].const_stability.feature" '"const_stable_trait_impl_const_feature"'
+//@ is "$.index[?(@.docs[0].text=='const-stable trait impl')].const_stability.level.stable.since" '"5.0.0"'
/// const-stable trait impl
#[stable(feature = "const_stable_trait_impl_feature", since = "5.0.0")]
#[rustc_const_stable(feature = "const_stable_trait_impl_const_feature", since = "5.0.0")]
const impl ConstStableTrait for ConstStableTraitTarget {
- //@ is "$.index[?(@.docs=='assoc type inside const-stable trait impl')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside const-stable trait impl')].const_stability" null
/// assoc type inside const-stable trait impl
type StableTraitAssocType = usize;
- //@ is "$.index[?(@.docs=='method inside const-stable trait impl')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='method inside const-stable trait impl')].const_stability" null
/// method inside const-stable trait impl
fn stable_trait_method(&self) {}
- //@ is "$.index[?(@.docs=='assoc const inside const-stable trait impl')].const_stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside const-stable trait impl')].const_stability" null
/// assoc const inside const-stable trait impl
const STABLE_TRAIT_ASSOC_CONST: usize = 1;
}
diff --git a/tests/rustdoc-json/attrs/stability/default_body.rs b/tests/rustdoc-json/attrs/stability/default_body.rs
index 5a70e47d6c505..5a6a7189fb3b2 100644
--- a/tests/rustdoc-json/attrs/stability/default_body.rs
+++ b/tests/rustdoc-json/attrs/stability/default_body.rs
@@ -2,49 +2,49 @@
#[stable(feature = "default_body_trait_feature", since = "1.0.0")]
pub trait TraitWithDefaults {
- //@ is "$.index[?(@.docs=='method with unstable default body')].inner.function.has_body" true
- //@ is "$.index[?(@.docs=='method with unstable default body')].inner.function.default_unstable.feature" '"method_default_body_feature"'
- //@ is "$.index[?(@.docs=='method with unstable default body')].attrs" []
+ //@ is "$.index[?(@.docs[0].text=='method with unstable default body')].inner.function.has_body" true
+ //@ is "$.index[?(@.docs[0].text=='method with unstable default body')].inner.function.default_unstable.feature" '"method_default_body_feature"'
+ //@ is "$.index[?(@.docs[0].text=='method with unstable default body')].attrs" []
/// method with unstable default body
#[stable(feature = "default_body_method_feature", since = "1.1.0")]
#[rustc_default_body_unstable(feature = "method_default_body_feature", issue = "none")]
fn method_with_unstable_default() {}
- //@ is "$.index[?(@.docs=='required method without default body')].inner.function.has_body" false
- //@ is "$.index[?(@.docs=='required method without default body')].inner.function.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='required method without default body')].inner.function.has_body" false
+ //@ is "$.index[?(@.docs[0].text=='required method without default body')].inner.function.default_unstable" null
/// required method without default body
#[stable(feature = "required_method_feature", since = "1.2.0")]
fn required_method();
- //@ is "$.index[?(@.docs=='method with stable default body')].inner.function.has_body" true
- //@ is "$.index[?(@.docs=='method with stable default body')].inner.function.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='method with stable default body')].inner.function.has_body" true
+ //@ is "$.index[?(@.docs[0].text=='method with stable default body')].inner.function.default_unstable" null
/// method with stable default body
#[stable(feature = "stable_default_method_feature", since = "1.3.0")]
fn method_with_stable_default() {}
- //@ is "$.index[?(@.docs=='associated constant with unstable default value')].inner.assoc_const.value" '"0"'
- //@ is "$.index[?(@.docs=='associated constant with unstable default value')].inner.assoc_const.default_unstable.feature" '"assoc_const_default_value_feature"'
- //@ is "$.index[?(@.docs=='associated constant with unstable default value')].attrs" []
+ //@ is "$.index[?(@.docs[0].text=='associated constant with unstable default value')].inner.assoc_const.value" '"0"'
+ //@ is "$.index[?(@.docs[0].text=='associated constant with unstable default value')].inner.assoc_const.default_unstable.feature" '"assoc_const_default_value_feature"'
+ //@ is "$.index[?(@.docs[0].text=='associated constant with unstable default value')].attrs" []
/// associated constant with unstable default value
#[stable(feature = "assoc_const_with_unstable_default_feature", since = "1.4.0")]
#[rustc_default_body_unstable(feature = "assoc_const_default_value_feature", issue = "none")]
const UNSTABLE_DEFAULT_CONST: usize = 0;
- //@ is "$.index[?(@.docs=='required associated constant')].inner.assoc_const.value" null
- //@ is "$.index[?(@.docs=='required associated constant')].inner.assoc_const.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='required associated constant')].inner.assoc_const.value" null
+ //@ is "$.index[?(@.docs[0].text=='required associated constant')].inner.assoc_const.default_unstable" null
/// required associated constant
#[stable(feature = "required_assoc_const_feature", since = "1.5.0")]
const REQUIRED_CONST: usize;
- //@ is "$.index[?(@.docs=='associated type with unstable default type')].inner.assoc_type.default_unstable.feature" '"assoc_type_default_type_feature"'
- //@ is "$.index[?(@.docs=='associated type with unstable default type')].attrs" []
+ //@ is "$.index[?(@.docs[0].text=='associated type with unstable default type')].inner.assoc_type.default_unstable.feature" '"assoc_type_default_type_feature"'
+ //@ is "$.index[?(@.docs[0].text=='associated type with unstable default type')].attrs" []
/// associated type with unstable default type
#[stable(feature = "assoc_type_with_unstable_default_feature", since = "1.6.0")]
#[rustc_default_body_unstable(feature = "assoc_type_default_type_feature", issue = "none")]
type UnstableDefaultType = usize;
- //@ is "$.index[?(@.docs=='required associated type')].inner.assoc_type.type" null
- //@ is "$.index[?(@.docs=='required associated type')].inner.assoc_type.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='required associated type')].inner.assoc_type.type" null
+ //@ is "$.index[?(@.docs[0].text=='required associated type')].inner.assoc_type.default_unstable" null
/// required associated type
#[stable(feature = "required_assoc_type_feature", since = "1.7.0")]
type RequiredType;
@@ -56,19 +56,19 @@ pub struct ImplTarget;
// Impl items provide their own definitions, so they do not use the trait's unstable defaults.
#[stable(feature = "default_body_impl_feature", since = "2.1.0")]
impl TraitWithDefaults for ImplTarget {
- //@ is "$.index[?(@.docs=='impl override for unstable default body')].inner.function.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='impl override for unstable default body')].inner.function.default_unstable" null
/// impl override for unstable default body
fn method_with_unstable_default() {}
fn required_method() {}
- //@ is "$.index[?(@.docs=='impl override for unstable default value')].inner.assoc_const.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='impl override for unstable default value')].inner.assoc_const.default_unstable" null
/// impl override for unstable default value
const UNSTABLE_DEFAULT_CONST: usize = 1;
const REQUIRED_CONST: usize = 2;
- //@ is "$.index[?(@.docs=='impl override for unstable default type')].inner.assoc_type.default_unstable" null
+ //@ is "$.index[?(@.docs[0].text=='impl override for unstable default type')].inner.assoc_type.default_unstable" null
/// impl override for unstable default type
type UnstableDefaultType = u8;
diff --git a/tests/rustdoc-json/attrs/stability/impls.rs b/tests/rustdoc-json/attrs/stability/impls.rs
index e3ac2d58a3e27..222f38e0c2094 100644
--- a/tests/rustdoc-json/attrs/stability/impls.rs
+++ b/tests/rustdoc-json/attrs/stability/impls.rs
@@ -33,8 +33,8 @@ pub trait UnstableTraitForImpl {
fn unstable_trait_method(&self);
}
-//@ is "$.index[?(@.docs=='stable inherent impl')].stability.feature" '"stable_inherent_impl"'
-//@ is "$.index[?(@.docs=='stable inherent impl')].stability.level.stable.since" '"2.0.0"'
+//@ is "$.index[?(@.docs[0].text=='stable inherent impl')].stability.feature" '"stable_inherent_impl"'
+//@ is "$.index[?(@.docs[0].text=='stable inherent impl')].stability.level.stable.since" '"2.0.0"'
/// stable inherent impl
#[stable(feature = "stable_inherent_impl", since = "2.0.0")]
impl StableImplTarget {
@@ -50,8 +50,8 @@ impl StableImplTarget {
pub const UNSTABLE_ASSOC_CONST_IN_IMPL: usize = 2;
}
-//@ is "$.index[?(@.docs=='unstable inherent impl')].stability.level" '"unstable"'
-//@ is "$.index[?(@.docs=='unstable inherent impl')].stability.feature" '"unstable_inherent_impl"'
+//@ is "$.index[?(@.docs[0].text=='unstable inherent impl')].stability.level" '"unstable"'
+//@ is "$.index[?(@.docs[0].text=='unstable inherent impl')].stability.feature" '"unstable_inherent_impl"'
/// unstable inherent impl
#[unstable(feature = "unstable_inherent_impl", issue = "none")]
impl StableImplTarget {
@@ -69,57 +69,57 @@ impl StableImplTarget {
// stability onto the implemented item. The unstable impl case is different: rustc records the
// impl block's instability on contained impl items, so JSON exposes that inherited instability.
-//@ is "$.index[?(@.docs=='stable trait impl with unstable trait method')].stability.feature" '"stable_trait_impl_with_unstable_trait_method"'
-//@ is "$.index[?(@.docs=='stable trait impl with unstable trait method')].stability.level.stable.since" '"3.0.0"'
+//@ is "$.index[?(@.docs[0].text=='stable trait impl with unstable trait method')].stability.feature" '"stable_trait_impl_with_unstable_trait_method"'
+//@ is "$.index[?(@.docs[0].text=='stable trait impl with unstable trait method')].stability.level.stable.since" '"3.0.0"'
/// stable trait impl with unstable trait method
#[stable(feature = "stable_trait_impl_with_unstable_trait_method", since = "3.0.0")]
impl StableTraitWithUnstableMethodForImpl for StableImplTarget {
// The impl item has no separate stability record; the trait method is unstable.
- //@ is "$.index[?(@.docs=='method for unstable trait item inside stable trait impl')].stability" null
+ //@ is "$.index[?(@.docs[0].text=='method for unstable trait item inside stable trait impl')].stability" null
/// method for unstable trait item inside stable trait impl
fn unstable_trait_method_for_stable_impl(&self) {}
}
-//@ is "$.index[?(@.docs=='stable trait impl')].stability.feature" '"stable_trait_impl"'
-//@ is "$.index[?(@.docs=='stable trait impl')].stability.level.stable.since" '"3.0.0"'
+//@ is "$.index[?(@.docs[0].text=='stable trait impl')].stability.feature" '"stable_trait_impl"'
+//@ is "$.index[?(@.docs[0].text=='stable trait impl')].stability.level.stable.since" '"3.0.0"'
/// stable trait impl
#[stable(feature = "stable_trait_impl", since = "3.0.0")]
impl StableTraitForImpl for StableImplTarget {
// These impl items likewise have no separate stability records.
// Their trait item declarations and the impl block are all stable.
- //@ is "$.index[?(@.docs=='assoc type inside stable trait impl')].stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside stable trait impl')].stability" null
/// assoc type inside stable trait impl
type StableOutput = usize;
- //@ is "$.index[?(@.docs=='assoc const inside stable trait impl')].stability" null
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside stable trait impl')].stability" null
/// assoc const inside stable trait impl
const STABLE_ASSOC_CONST: usize = 0;
- //@ is "$.index[?(@.docs=='method inside stable trait impl')].stability" null
+ //@ is "$.index[?(@.docs[0].text=='method inside stable trait impl')].stability" null
/// method inside stable trait impl
fn stable_trait_method(&self) {}
}
-//@ is "$.index[?(@.docs=='unstable trait impl')].stability.level" '"unstable"'
-//@ is "$.index[?(@.docs=='unstable trait impl')].stability.feature" '"unstable_trait_impl"'
+//@ is "$.index[?(@.docs[0].text=='unstable trait impl')].stability.level" '"unstable"'
+//@ is "$.index[?(@.docs[0].text=='unstable trait impl')].stability.feature" '"unstable_trait_impl"'
/// unstable trait impl
#[unstable(feature = "unstable_trait_impl", issue = "none")]
impl UnstableTraitForImpl for StableImplTarget {
// These associated items inherit the impl block's instability in rustdoc JSON.
- //@ is "$.index[?(@.docs=='assoc type inside unstable trait impl')].stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='assoc type inside unstable trait impl')].stability.feature" '"unstable_trait_impl"'
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside unstable trait impl')].stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='assoc type inside unstable trait impl')].stability.feature" '"unstable_trait_impl"'
/// assoc type inside unstable trait impl
type UnstableOutput = usize;
- //@ is "$.index[?(@.docs=='assoc const inside unstable trait impl')].stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='assoc const inside unstable trait impl')].stability.feature" '"unstable_trait_impl"'
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside unstable trait impl')].stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='assoc const inside unstable trait impl')].stability.feature" '"unstable_trait_impl"'
/// assoc const inside unstable trait impl
const UNSTABLE_ASSOC_CONST: usize = 0;
- //@ is "$.index[?(@.docs=='method inside unstable trait impl')].stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='method inside unstable trait impl')].stability.feature" '"unstable_trait_impl"'
+ //@ is "$.index[?(@.docs[0].text=='method inside unstable trait impl')].stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='method inside unstable trait impl')].stability.feature" '"unstable_trait_impl"'
/// method inside unstable trait impl
fn unstable_trait_method(&self) {}
}
diff --git a/tests/rustdoc-json/attrs/stability/members.rs b/tests/rustdoc-json/attrs/stability/members.rs
index 6098df5af2f3b..24ebf8ebdbcab 100644
--- a/tests/rustdoc-json/attrs/stability/members.rs
+++ b/tests/rustdoc-json/attrs/stability/members.rs
@@ -38,9 +38,9 @@ pub union StableUnionWithUnstableField {
#[stable(feature = "stable_tuple_struct_feature", since = "3.0.0")]
pub struct StableTupleStructWithUnstableField(
pub usize,
- //@ is "$.index[?(@.docs=='unstable tuple struct field')].stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='unstable tuple struct field')].stability.feature" '"unstable_tuple_struct_field_feature"'
- //@ !has "$.index[?(@.docs=='unstable tuple struct field')].stability.since"
+ //@ is "$.index[?(@.docs[0].text=='unstable tuple struct field')].stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='unstable tuple struct field')].stability.feature" '"unstable_tuple_struct_field_feature"'
+ //@ !has "$.index[?(@.docs[0].text=='unstable tuple struct field')].stability.since"
/// unstable tuple struct field
#[unstable(feature = "unstable_tuple_struct_field_feature", issue = "none")]
pub usize,
@@ -51,9 +51,9 @@ pub enum StableEnumWithFieldVariants {
#[stable(feature = "stable_tuple_variant_feature", since = "4.1.0")]
TupleVariant(
usize,
- //@ is "$.index[?(@.docs=='unstable tuple variant field')].stability.level" '"unstable"'
- //@ is "$.index[?(@.docs=='unstable tuple variant field')].stability.feature" '"unstable_tuple_variant_field_feature"'
- //@ !has "$.index[?(@.docs=='unstable tuple variant field')].stability.since"
+ //@ is "$.index[?(@.docs[0].text=='unstable tuple variant field')].stability.level" '"unstable"'
+ //@ is "$.index[?(@.docs[0].text=='unstable tuple variant field')].stability.feature" '"unstable_tuple_variant_field_feature"'
+ //@ !has "$.index[?(@.docs[0].text=='unstable tuple variant field')].stability.since"
/// unstable tuple variant field
#[unstable(feature = "unstable_tuple_variant_field_feature", issue = "none")]
usize,
diff --git a/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs b/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs
index 42f5acd0c2521..51866d07b6132 100644
--- a/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs
+++ b/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs
@@ -5,5 +5,5 @@
extern crate color;
use color::Color::Red;
-//@ jq_is '.index["\(.root)"].links | has("Red")' true
+//@ jq_is '.index["\(.root)"].docs.[] | .links | has("Red")' true
//@ jq_count '[.index[] | select(.name == "Red" or .name == "Color")][]' 0
diff --git a/tests/rustdoc-json/enums/tuple_fields_hidden.rs b/tests/rustdoc-json/enums/tuple_fields_hidden.rs
index aa25625b94cfa..e2ef5e060ba14 100644
--- a/tests/rustdoc-json/enums/tuple_fields_hidden.rs
+++ b/tests/rustdoc-json/enums/tuple_fields_hidden.rs
@@ -1,14 +1,14 @@
-//@ set 1.1.0 = "$.index[?(@.docs=='1.1.0')].id"
-//@ set 2.1.0 = "$.index[?(@.docs=='2.1.0')].id"
-//@ set 2.1.1 = "$.index[?(@.docs=='2.1.1')].id"
-//@ set 2.2.1 = "$.index[?(@.docs=='2.2.1')].id"
-//@ set 2.3.0 = "$.index[?(@.docs=='2.3.0')].id"
-//@ set 3.1.1 = "$.index[?(@.docs=='3.1.1')].id"
-//@ set 3.1.2 = "$.index[?(@.docs=='3.1.2')].id"
-//@ set 3.2.0 = "$.index[?(@.docs=='3.2.0')].id"
-//@ set 3.2.2 = "$.index[?(@.docs=='3.2.2')].id"
-//@ set 3.3.0 = "$.index[?(@.docs=='3.3.0')].id"
-//@ set 3.3.1 = "$.index[?(@.docs=='3.3.1')].id"
+//@ set 1.1.0 = "$.index[?(@.docs[0].text=='1.1.0')].id"
+//@ set 2.1.0 = "$.index[?(@.docs[0].text=='2.1.0')].id"
+//@ set 2.1.1 = "$.index[?(@.docs[0].text=='2.1.1')].id"
+//@ set 2.2.1 = "$.index[?(@.docs[0].text=='2.2.1')].id"
+//@ set 2.3.0 = "$.index[?(@.docs[0].text=='2.3.0')].id"
+//@ set 3.1.1 = "$.index[?(@.docs[0].text=='3.1.1')].id"
+//@ set 3.1.2 = "$.index[?(@.docs[0].text=='3.1.2')].id"
+//@ set 3.2.0 = "$.index[?(@.docs[0].text=='3.2.0')].id"
+//@ set 3.2.2 = "$.index[?(@.docs[0].text=='3.2.2')].id"
+//@ set 3.3.0 = "$.index[?(@.docs[0].text=='3.3.0')].id"
+//@ set 3.3.1 = "$.index[?(@.docs[0].text=='3.3.1')].id"
pub enum EnumWithStrippedTupleVariants {
//@ count "$.index[?(@.name=='None')].inner.variant.kind.tuple[*]" 0
@@ -55,26 +55,26 @@ pub enum EnumWithStrippedTupleVariants {
Three3(/** 3.3.0*/ bool, /** 3.3.1*/ bool, #[doc(hidden)] bool),
}
-//@ is "$.index[?(@.docs=='1.1.0')].name" '"0"'
-//@ is "$.index[?(@.docs=='2.1.0')].name" '"0"'
-//@ is "$.index[?(@.docs=='2.1.1')].name" '"1"'
-//@ is "$.index[?(@.docs=='2.2.1')].name" '"1"'
-//@ is "$.index[?(@.docs=='2.3.0')].name" '"0"'
-//@ is "$.index[?(@.docs=='3.1.1')].name" '"1"'
-//@ is "$.index[?(@.docs=='3.1.2')].name" '"2"'
-//@ is "$.index[?(@.docs=='3.2.0')].name" '"0"'
-//@ is "$.index[?(@.docs=='3.2.2')].name" '"2"'
-//@ is "$.index[?(@.docs=='3.3.0')].name" '"0"'
-//@ is "$.index[?(@.docs=='3.3.1')].name" '"1"'
+//@ is "$.index[?(@.docs[0].text=='1.1.0')].name" '"0"'
+//@ is "$.index[?(@.docs[0].text=='2.1.0')].name" '"0"'
+//@ is "$.index[?(@.docs[0].text=='2.1.1')].name" '"1"'
+//@ is "$.index[?(@.docs[0].text=='2.2.1')].name" '"1"'
+//@ is "$.index[?(@.docs[0].text=='2.3.0')].name" '"0"'
+//@ is "$.index[?(@.docs[0].text=='3.1.1')].name" '"1"'
+//@ is "$.index[?(@.docs[0].text=='3.1.2')].name" '"2"'
+//@ is "$.index[?(@.docs[0].text=='3.2.0')].name" '"0"'
+//@ is "$.index[?(@.docs[0].text=='3.2.2')].name" '"2"'
+//@ is "$.index[?(@.docs[0].text=='3.3.0')].name" '"0"'
+//@ is "$.index[?(@.docs[0].text=='3.3.1')].name" '"1"'
-//@ is "$.index[?(@.docs=='1.1.0')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='2.1.0')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='2.1.1')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='2.2.1')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='2.3.0')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='3.1.1')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='3.1.2')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='3.2.0')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='3.2.2')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='3.3.0')].inner.struct_field" '{"primitive": "bool"}'
-//@ is "$.index[?(@.docs=='3.3.1')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='1.1.0')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='2.1.0')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='2.1.1')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='2.2.1')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='2.3.0')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='3.1.1')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='3.1.2')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='3.2.0')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='3.2.2')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='3.3.0')].inner.struct_field" '{"primitive": "bool"}'
+//@ is "$.index[?(@.docs[0].text=='3.3.1')].inner.struct_field" '{"primitive": "bool"}'
diff --git a/tests/rustdoc-json/impl-trait-in-assoc-type.rs b/tests/rustdoc-json/impl-trait-in-assoc-type.rs
index 742a46e896746..ccf4f33020beb 100644
--- a/tests/rustdoc-json/impl-trait-in-assoc-type.rs
+++ b/tests/rustdoc-json/impl-trait-in-assoc-type.rs
@@ -4,25 +4,25 @@ pub struct AlwaysTrue;
/// impl IntoIterator
impl IntoIterator for AlwaysTrue {
- //@ set Item = '$.index[?(@.docs=="type Item")].id'
+ //@ set Item = '$.index[?(@.docs[0].text=="type Item")].id'
/// type Item
type Item = bool;
- //@ count '$.index[?(@.docs=="type IntoIter")].inner.assoc_type.type.impl_trait[*]' 1
- //@ is '$.index[?(@.docs=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.path' '"Iterator"'
- //@ count '$.index[?(@.docs=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[*]' 1
- //@ is '$.index[?(@.docs=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].name' '"Item"'
- //@ is '$.index[?(@.docs=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].binding.equality.type.primitive' '"bool"'
+ //@ count '$.index[?(@.docs[0].text=="type IntoIter")].inner.assoc_type.type.impl_trait[*]' 1
+ //@ is '$.index[?(@.docs[0].text=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.path' '"Iterator"'
+ //@ count '$.index[?(@.docs[0].text=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[*]' 1
+ //@ is '$.index[?(@.docs[0].text=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].name' '"Item"'
+ //@ is '$.index[?(@.docs[0].text=="type IntoIter")].inner.assoc_type.type.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].binding.equality.type.primitive' '"bool"'
- //@ set IntoIter = '$.index[?(@.docs=="type IntoIter")].id'
+ //@ set IntoIter = '$.index[?(@.docs[0].text=="type IntoIter")].id'
/// type IntoIter
type IntoIter = impl Iterator- ;
- //@ set into_iter = '$.index[?(@.docs=="fn into_iter")].id'
+ //@ set into_iter = '$.index[?(@.docs[0].text=="fn into_iter")].id'
/// fn into_iter
fn into_iter(self) -> Self::IntoIter {
std::iter::repeat(true)
}
}
-//@ ismany '$.index[?(@.docs=="impl IntoIterator")].inner.impl.items[*]' $Item $IntoIter $into_iter
+//@ ismany '$.index[?(@.docs[0].text=="impl IntoIterator")].inner.impl.items[*]' $Item $IntoIter $into_iter
diff --git a/tests/rustdoc-json/impls/auto.rs b/tests/rustdoc-json/impls/auto.rs
index 104c4891502d4..a542e41731975 100644
--- a/tests/rustdoc-json/impls/auto.rs
+++ b/tests/rustdoc-json/impls/auto.rs
@@ -21,9 +21,9 @@ impl Foo {
}
// Testing spans, so all tests below code
-//@ is "$.index[?(@.docs=='has span')].span.begin" "[19, 1]"
-//@ is "$.index[?(@.docs=='has span')].span.end" "[21, 2]"
-//@ is "$.index[?(@.docs=='has span')].inner.impl.is_synthetic" false
+//@ is "$.index[?(@.docs[0].text=='has span')].span.begin" "[19, 1]"
+//@ is "$.index[?(@.docs[0].text=='has span')].span.end" "[21, 2]"
+//@ is "$.index[?(@.docs[0].text=='has span')].inner.impl.is_synthetic" false
//@ is "$.index[?(@.inner.impl.is_synthetic==true)].span" null
//@ is "$.index[?(@.inner.impl.is_synthetic==true)].inner.impl.for.resolved_path.path" '"Foo"'
//@ is "$.index[?(@.inner.impl.is_synthetic==true)].inner.impl.trait.path" '"Bar"'
diff --git a/tests/rustdoc-json/impls/foreign_for_local.rs b/tests/rustdoc-json/impls/foreign_for_local.rs
index e46b158d80205..c4b3b45869a17 100644
--- a/tests/rustdoc-json/impls/foreign_for_local.rs
+++ b/tests/rustdoc-json/impls/foreign_for_local.rs
@@ -3,7 +3,7 @@ extern crate foreign_trait;
/// ForeignTrait id hack
pub use foreign_trait::ForeignTrait as _;
-//@ set ForeignTrait = "$.index[?(@.docs=='ForeignTrait id hack')].inner.use.id"
+//@ set ForeignTrait = "$.index[?(@.docs[0].text=='ForeignTrait id hack')].inner.use.id"
pub struct LocalStruct;
//@ set LocalStruct = "$.index[?(@.name=='LocalStruct')].id"
@@ -11,8 +11,8 @@ pub struct LocalStruct;
/// foreign for local
impl foreign_trait::ForeignTrait for LocalStruct {}
-//@ set impl = "$.index[?(@.docs=='foreign for local')].id"
-//@ is "$.index[?(@.docs=='foreign for local')].inner.impl.for.resolved_path.id" $LocalStruct
-//@ is "$.index[?(@.docs=='foreign for local')].inner.impl.trait.id" $ForeignTrait
+//@ set impl = "$.index[?(@.docs[0].text=='foreign for local')].id"
+//@ is "$.index[?(@.docs[0].text=='foreign for local')].inner.impl.for.resolved_path.id" $LocalStruct
+//@ is "$.index[?(@.docs[0].text=='foreign for local')].inner.impl.trait.id" $ForeignTrait
//@ has "$.index[?(@.name=='LocalStruct')].inner.struct.impls[*]" $impl
diff --git a/tests/rustdoc-json/impls/fundamental_nesting.rs b/tests/rustdoc-json/impls/fundamental_nesting.rs
index a6aefb94f961f..c7a72824c71f2 100644
--- a/tests/rustdoc-json/impls/fundamental_nesting.rs
+++ b/tests/rustdoc-json/impls/fundamental_nesting.rs
@@ -13,7 +13,7 @@ impl From
> for String {
String::new()
}
}
-//@ set from_box_local = "$.index[?(@.docs=='from box local')].id"
+//@ set from_box_local = "$.index[?(@.docs[0].text=='from box local')].id"
//@ has "$.index[?(@.name=='Local')].inner.struct.impls[*]" $from_box_local
// Reference to a fundamental wrapper.
@@ -23,7 +23,7 @@ impl<'a> From<&'a Box> for u16 {
0
}
}
-//@ set from_ref_box_local = "$.index[?(@.docs=='from ref box local')].id"
+//@ set from_ref_box_local = "$.index[?(@.docs[0].text=='from ref box local')].id"
//@ has "$.index[?(@.name=='Local')].inner.struct.impls[*]" $from_ref_box_local
// Nested two levels deep in Self.
@@ -33,7 +33,7 @@ impl From for Box> {
Box::new(Box::new(Local))
}
}
-//@ set u32_for_box_box_local = "$.index[?(@.docs=='u32 for box box local')].id"
+//@ set u32_for_box_box_local = "$.index[?(@.docs[0].text=='u32 for box box local')].id"
//@ has "$.index[?(@.name=='Local')].inner.struct.impls[*]" $u32_for_box_box_local
// Mixed fundamental wrappers in Self.
@@ -43,7 +43,7 @@ impl From for Pin> {
Pin::new(Box::new(Local))
}
}
-//@ set u64_for_pin_box_local = "$.index[?(@.docs=='u64 for pin box local')].id"
+//@ set u64_for_pin_box_local = "$.index[?(@.docs[0].text=='u64 for pin box local')].id"
//@ has "$.index[?(@.name=='Local')].inner.struct.impls[*]" $u64_for_pin_box_local
// A non-fundamental wrapper must not associate the impl with Local, but the impl must still be
@@ -52,6 +52,6 @@ pub trait Marker {}
/// marker for vec local
impl Marker for Vec {}
-//@ set marker_for_vec_local = "$.index[?(@.docs=='marker for vec local')].id"
+//@ set marker_for_vec_local = "$.index[?(@.docs[0].text=='marker for vec local')].id"
//@ !has "$.index[?(@.name=='Local')].inner.struct.impls[*]" $marker_for_vec_local
//@ has "$.index[?(@.name=='Marker')].inner.trait.implementations[*]" $marker_for_vec_local
diff --git a/tests/rustdoc-json/impls/impl_item_visibility.rs b/tests/rustdoc-json/impls/impl_item_visibility.rs
index 680ea175d0bb2..e694549b2a4f6 100644
--- a/tests/rustdoc-json/impls/impl_item_visibility.rs
+++ b/tests/rustdoc-json/impls/impl_item_visibility.rs
@@ -4,13 +4,13 @@ pub struct Foo;
impl Foo {
fn baz() {}
}
-//@ !has '$.index[?(@.docs=="impl Foo priv")]'
+//@ !has '$.index[?(@.docs[0].text=="impl Foo priv")]'
/// impl Foo pub
impl Foo {
pub fn qux() {}
}
-//@ is '$.index[?(@.docs=="impl Foo pub")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo pub")].visibility' '"default"'
/// impl Foo hidden
impl Foo {
@@ -18,4 +18,4 @@ impl Foo {
pub fn __quazl() {}
}
// FIXME(#111564): Is this the right behaviour?
-//@ is '$.index[?(@.docs=="impl Foo hidden")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo hidden")].visibility' '"default"'
diff --git a/tests/rustdoc-json/impls/impl_item_visibility_show_hidden.rs b/tests/rustdoc-json/impls/impl_item_visibility_show_hidden.rs
index 82d59b97b013d..a342d7e4ad291 100644
--- a/tests/rustdoc-json/impls/impl_item_visibility_show_hidden.rs
+++ b/tests/rustdoc-json/impls/impl_item_visibility_show_hidden.rs
@@ -7,13 +7,13 @@ impl Foo {
fn baz() {}
}
// FIXME(#111564): Is this the right behaviour?
-//@ is '$.index[?(@.docs=="impl Foo priv")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo priv")].visibility' '"default"'
/// impl Foo pub
impl Foo {
pub fn qux() {}
}
-//@ is '$.index[?(@.docs=="impl Foo pub")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo pub")].visibility' '"default"'
/// impl Foo hidden
impl Foo {
@@ -21,4 +21,4 @@ impl Foo {
pub fn __quazl() {}
}
// FIXME(#111564): Is this the right behaviour?
-//@ is '$.index[?(@.docs=="impl Foo hidden")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo hidden")].visibility' '"default"'
diff --git a/tests/rustdoc-json/impls/impl_item_visibility_show_private.rs b/tests/rustdoc-json/impls/impl_item_visibility_show_private.rs
index a3b145adb869a..74d9ae9912962 100644
--- a/tests/rustdoc-json/impls/impl_item_visibility_show_private.rs
+++ b/tests/rustdoc-json/impls/impl_item_visibility_show_private.rs
@@ -6,13 +6,13 @@ pub struct Foo;
impl Foo {
fn baz() {}
}
-//@ is '$.index[?(@.docs=="impl Foo priv")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo priv")].visibility' '"default"'
/// impl Foo pub
impl Foo {
pub fn qux() {}
}
-//@ is '$.index[?(@.docs=="impl Foo pub")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo pub")].visibility' '"default"'
/// impl Foo hidden
impl Foo {
@@ -20,4 +20,4 @@ impl Foo {
pub fn __quazl() {}
}
// FIXME(#111564): Is this the right behaviour?
-//@ is '$.index[?(@.docs=="impl Foo hidden")].visibility' '"default"'
+//@ is '$.index[?(@.docs[0].text=="impl Foo hidden")].visibility' '"default"'
diff --git a/tests/rustdoc-json/impls/import_from_private.rs b/tests/rustdoc-json/impls/import_from_private.rs
index 02262d9b65fac..73bc924a7d24f 100644
--- a/tests/rustdoc-json/impls/import_from_private.rs
+++ b/tests/rustdoc-json/impls/import_from_private.rs
@@ -3,7 +3,7 @@
mod bar {
//@ set baz = "$.index[?(@.name == 'Baz')].id"
pub struct Baz;
- //@ set impl = "$.index[?(@.docs == 'impl')].id"
+ //@ set impl = "$.index[?(@.docs[0].text == 'impl')].id"
/// impl
impl Baz {
//@ set doit = "$.index[?(@.name == 'doit')].id"
@@ -17,4 +17,4 @@ pub use bar::Baz;
//@ is "$.index[*].inner.module.items[*]" $import
//@ is "$.index[*].inner.use.id" $baz
//@ has "$.index[?(@.name == 'Baz')].inner.struct.impls[*]" $impl
-//@ is "$.index[?(@.docs=='impl')].inner.impl.items[*]" $doit
+//@ is "$.index[?(@.docs[0].text=='impl')].inner.impl.items[*]" $doit
diff --git a/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id-2.rs b/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id-2.rs
index 54ec08135be7f..292b820d8e952 100644
--- a/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id-2.rs
+++ b/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id-2.rs
@@ -1,5 +1,5 @@
-//@ has "$.index[?(@.docs=='Here')]"
-//@ !has "$.index[?(@.docs=='Not Here')]"
+//@ has "$.index[?(@.docs[0].text=='Here')]"
+//@ !has "$.index[?(@.docs[0].text=='Not Here')]"
//@ !has "$.index[?(@.name == 'HiddenPubStruct')]"
//@ has "$.index[?(@.name == 'NotHiddenPubStruct')]"
//@ has "$.index[?(@.name=='PubTrait')]"
diff --git a/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id.rs b/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id.rs
index 7fc3f70fe5a65..aab45571941e8 100644
--- a/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id.rs
+++ b/tests/rustdoc-json/impls/issue-112852-dangling-trait-impl-id.rs
@@ -6,7 +6,7 @@ pub mod hidden {
//@ !has "$.index[?(@.name == 'HiddenPubStruct')]"
pub struct HiddenPubStruct;
- //@ !has "$.index[?(@.docs == 'Not Here')]"
+ //@ !has "$.index[?(@.docs[0].text == 'Not Here')]"
/// Not Here
impl crate::PubTrait for HiddenPubStruct {}
}
@@ -15,7 +15,7 @@ pub mod not_hidden {
//@ has "$.index[?(@.name == 'NotHiddenPubStruct')]"
pub struct NotHiddenPubStruct;
- //@ has "$.index[?(@.docs == 'Here')]"
+ //@ has "$.index[?(@.docs[0].text == 'Here')]"
/// Here
impl crate::PubTrait for NotHiddenPubStruct {}
}
diff --git a/tests/rustdoc-json/impls/local_for_foreign.rs b/tests/rustdoc-json/impls/local_for_foreign.rs
index 86c72a580b2e3..2d248b4913621 100644
--- a/tests/rustdoc-json/impls/local_for_foreign.rs
+++ b/tests/rustdoc-json/impls/local_for_foreign.rs
@@ -3,7 +3,7 @@ extern crate foreign_struct;
/// ForeignStruct id hack
pub use foreign_struct::ForeignStruct as _;
-//@ set ForeignStruct = "$.index[?(@.docs=='ForeignStruct id hack')].inner.use.id"
+//@ set ForeignStruct = "$.index[?(@.docs[0].text=='ForeignStruct id hack')].inner.use.id"
pub trait LocalTrait {}
//@ set LocalTrait = "$.index[?(@.name=='LocalTrait')].id"
@@ -11,8 +11,8 @@ pub trait LocalTrait {}
/// local for foreign
impl LocalTrait for foreign_struct::ForeignStruct {}
-//@ set impl = "$.index[?(@.docs=='local for foreign')].id"
-//@ is "$.index[?(@.docs=='local for foreign')].inner.impl.trait.id" $LocalTrait
-//@ is "$.index[?(@.docs=='local for foreign')].inner.impl.for.resolved_path.id" $ForeignStruct
+//@ set impl = "$.index[?(@.docs[0].text=='local for foreign')].id"
+//@ is "$.index[?(@.docs[0].text=='local for foreign')].inner.impl.trait.id" $LocalTrait
+//@ is "$.index[?(@.docs[0].text=='local for foreign')].inner.impl.for.resolved_path.id" $ForeignStruct
//@ is "$.index[?(@.name=='LocalTrait')].inner.trait.implementations[*]" $impl
diff --git a/tests/rustdoc-json/impls/local_for_local.rs b/tests/rustdoc-json/impls/local_for_local.rs
index 876a7912f09b0..0394673c2724a 100644
--- a/tests/rustdoc-json/impls/local_for_local.rs
+++ b/tests/rustdoc-json/impls/local_for_local.rs
@@ -2,11 +2,11 @@
pub struct Struct;
//@ set trait = "$.index[?(@.name=='Trait')].id"
pub trait Trait {}
-//@ set impl = "$.index[?(@.docs=='impl')].id"
+//@ set impl = "$.index[?(@.docs[0].text=='impl')].id"
/// impl
impl Trait for Struct {}
//@ has "$.index[?(@.name=='Struct')].inner.struct.impls[*]" $impl
//@ is "$.index[?(@.name=='Trait')].inner.trait.implementations[*]" $impl
-//@ is "$.index[?(@.docs=='impl')].inner.impl.trait.id" $trait
-//@ is "$.index[?(@.docs=='impl')].inner.impl.for.resolved_path.id" $struct
+//@ is "$.index[?(@.docs[0].text=='impl')].inner.impl.trait.id" $trait
+//@ is "$.index[?(@.docs[0].text=='impl')].inner.impl.for.resolved_path.id" $struct
diff --git a/tests/rustdoc-json/impls/local_for_local_primitive.rs b/tests/rustdoc-json/impls/local_for_local_primitive.rs
index 97ada2cf131bc..a3bd4a05e0e20 100644
--- a/tests/rustdoc-json/impls/local_for_local_primitive.rs
+++ b/tests/rustdoc-json/impls/local_for_local_primitive.rs
@@ -3,12 +3,12 @@
//@ set Local = "$.index[?(@.name=='Local')].id"
pub trait Local {}
-//@ is "$.index[?(@.docs=='Local for bool')].inner.impl.trait.id" $Local
-//@ is "$.index[?(@.docs=='Local for bool')].inner.impl.for.primitive" '"bool"'
+//@ is "$.index[?(@.docs[0].text=='Local for bool')].inner.impl.trait.id" $Local
+//@ is "$.index[?(@.docs[0].text=='Local for bool')].inner.impl.for.primitive" '"bool"'
/// Local for bool
impl Local for bool {}
-//@ set impl = "$.index[?(@.docs=='Local for bool')].id"
+//@ set impl = "$.index[?(@.docs[0].text=='Local for bool')].id"
//@ is "$.index[?(@.name=='Local')].inner.trait.implementations[*]" $impl
// FIXME(#101695): Test bool's `impls` include "Local for bool"
diff --git a/tests/rustdoc-json/impls/local_for_primitive.rs b/tests/rustdoc-json/impls/local_for_primitive.rs
index a5ab3ec8a1b79..920f72cbb6f39 100644
--- a/tests/rustdoc-json/impls/local_for_primitive.rs
+++ b/tests/rustdoc-json/impls/local_for_primitive.rs
@@ -1,7 +1,7 @@
//@ set local = "$.index[?(@.name=='Local')]"
pub trait Local {}
-//@ set impl = "$.index[?(@.docs=='local for bool')].id"
+//@ set impl = "$.index[?(@.docs[0].text=='local for bool')].id"
//@ is "$.index[?(@.name=='Local')].inner.trait.implementations[*]" $impl
/// local for bool
impl Local for bool {}
diff --git a/tests/rustdoc-json/impls/pub_for_hidden_private.rs b/tests/rustdoc-json/impls/pub_for_hidden_private.rs
index eb89219022c77..56eefe346ad2f 100644
--- a/tests/rustdoc-json/impls/pub_for_hidden_private.rs
+++ b/tests/rustdoc-json/impls/pub_for_hidden_private.rs
@@ -5,6 +5,6 @@ pub trait TheTrait {}
#[doc(hidden)]
struct Value {}
-//@ has '$.index[?(@.docs=="THE IMPL")]'
+//@ has '$.index[?(@.docs[0].text=="THE IMPL")]'
/// THE IMPL
impl TheTrait for Value {}
diff --git a/tests/rustdoc-json/impls/trait-for-dyn-trait.rs b/tests/rustdoc-json/impls/trait-for-dyn-trait.rs
index 17cb07f3571de..3702eefe55185 100644
--- a/tests/rustdoc-json/impls/trait-for-dyn-trait.rs
+++ b/tests/rustdoc-json/impls/trait-for-dyn-trait.rs
@@ -7,9 +7,9 @@ pub trait T2 {}
/// Fun impl
impl T1 for dyn T2 {}
-//@ set impl = '$.index[?(@.docs=="Fun impl")].id'
+//@ set impl = '$.index[?(@.docs[0].text=="Fun impl")].id'
//@ is '$.index[?(@.name=="T1")].inner.trait.implementations[*]' $impl
//@ is '$.index[?(@.name=="T2")].inner.trait.implementations' []
-//@ is '$.index[?(@.docs=="Fun impl")].inner.impl.trait.id' $t1
-//@ is '$.index[?(@.docs=="Fun impl")].inner.impl.for.dyn_trait.traits[*].trait.id' $t2
+//@ is '$.index[?(@.docs[0].text=="Fun impl")].inner.impl.trait.id' $t1
+//@ is '$.index[?(@.docs[0].text=="Fun impl")].inner.impl.for.dyn_trait.traits[*].trait.id' $t2
diff --git a/tests/rustdoc-json/intra-doc-links/non_page.rs b/tests/rustdoc-json/intra-doc-links/non_page.rs
index 19c8011399db2..3d45a7e03648f 100644
--- a/tests/rustdoc-json/intra-doc-links/non_page.rs
+++ b/tests/rustdoc-json/intra-doc-links/non_page.rs
@@ -17,23 +17,23 @@
//@ set ASSOC_CONST = "$.index[?(@.name=='ASSOC_CONST')].id"
//@ set method = "$.index[?(@.name=='method')].id"
-//@ is "$.index[?(@.name=='non_page')].links['`Struct::struct_field`']" $struct_field
-//@ is "$.index[?(@.name=='non_page')].links['`Enum::Variant`']" $Variant
-//@ is "$.index[?(@.name=='non_page')].links['`Trait::AssocType`']" $AssocType
-//@ is "$.index[?(@.name=='non_page')].links['`Trait::ASSOC_CONST`']" $ASSOC_CONST
-//@ is "$.index[?(@.name=='non_page')].links['`Trait::method`']" $method
+//@ is "$.index[?(@.name=='non_page')].docs[*].links['`Struct::struct_field`']" $struct_field
+//@ is "$.index[?(@.name=='non_page')].docs[*].links['`Enum::Variant`']" $Variant
+//@ is "$.index[?(@.name=='non_page')].docs[*].links['`Trait::AssocType`']" $AssocType
+//@ is "$.index[?(@.name=='non_page')].docs[*].links['`Trait::ASSOC_CONST`']" $ASSOC_CONST
+//@ is "$.index[?(@.name=='non_page')].docs[*].links['`Trait::method`']" $method
// Regression test for :
// link target IDs for associated items need matching `paths` entries.
//@ jq_set crate = '.index[] | select(.name == "non_page")'
-//@ jq_set struct_field_link = '$crate.links["`Struct::struct_field`"]'
-//@ jq_set variant_field_link = '$crate.links["`Enum::StructVariant::field`"]'
-//@ jq_set assoc_type_link = '$crate.links["`Trait::AssocType`"]'
-//@ jq_set assoc_const_link = '$crate.links["`Trait::ASSOC_CONST`"]'
-//@ jq_set method_link = '$crate.links["`Trait::method`"]'
-//@ jq_set vec_push_link = '$crate.links["`std::vec::Vec::push`"]'
-//@ jq_set error_kind_link = '$crate.links["`std::io::ErrorKind::NotFound`"]'
-//@ jq_set usize_max_link = '$crate.links["`usize::MAX`"]'
+//@ jq_set struct_field_link = '$crate.docs[] | .links["`Struct::struct_field`"]'
+//@ jq_set variant_field_link = '$crate.docs[] | .links["`Enum::StructVariant::field`"]'
+//@ jq_set assoc_type_link = '$crate.docs[] | .links["`Trait::AssocType`"]'
+//@ jq_set assoc_const_link = '$crate.docs[] | .links["`Trait::ASSOC_CONST`"]'
+//@ jq_set method_link = '$crate.docs[] | .links["`Trait::method`"]'
+//@ jq_set vec_push_link = '$crate.docs[] | .links["`std::vec::Vec::push`"]'
+//@ jq_set error_kind_link = '$crate.docs[] | .links["`std::io::ErrorKind::NotFound`"]'
+//@ jq_set usize_max_link = '$crate.docs[] | .links["`usize::MAX`"]'
//@ jq_is '.paths["\($struct_field_link)"].path' '["non_page", "Struct", "struct_field"]'
//@ jq_is '.paths["\($variant_field_link)"].path' '["non_page", "Enum", "StructVariant", "field"]'
//@ jq_is '.paths["\($assoc_type_link)"].path' '["non_page", "Trait", "AssocType"]'
diff --git a/tests/rustdoc-json/intra-doc-links/user_written.rs b/tests/rustdoc-json/intra-doc-links/user_written.rs
index 97a643490e6c4..7631cf200e2e3 100644
--- a/tests/rustdoc-json/intra-doc-links/user_written.rs
+++ b/tests/rustdoc-json/intra-doc-links/user_written.rs
@@ -5,4 +5,4 @@
pub fn foo() {}
//@ set foo = "$.index[?(@.name=='foo')].id"
-//@ is "$.index[?(@.name=='user_written')].links['foo#reasons']" $foo
+//@ is "$.index[?(@.name=='user_written')].docs[0].links['foo#reasons']" $foo
diff --git a/tests/rustdoc-json/primitives/local_primitive.rs b/tests/rustdoc-json/primitives/local_primitive.rs
index e635cf12a6fb3..2357e5d8fdec5 100644
--- a/tests/rustdoc-json/primitives/local_primitive.rs
+++ b/tests/rustdoc-json/primitives/local_primitive.rs
@@ -24,4 +24,4 @@ const _: () = ();
//@ set local_i32 = "$.index[?(@.name=='i32')].id"
//@ has "$.index[?(@.name=='local_primitive')]"
-//@ is "$.index[?(@.name=='local_primitive')].links['prim@i32']" $local_i32
+//@ is "$.index[?(@.name=='local_primitive')].docs[0].links['prim@i32']" $local_i32
diff --git a/tests/rustdoc-json/primitives/primitive_impls.rs b/tests/rustdoc-json/primitives/primitive_impls.rs
index bb6f85a507696..3daab914900c9 100644
--- a/tests/rustdoc-json/primitives/primitive_impls.rs
+++ b/tests/rustdoc-json/primitives/primitive_impls.rs
@@ -4,7 +4,7 @@
#![no_core]
#![rustc_coherence_is_core]
-//@ set impl_i32 = "$.index[?(@.docs=='Only core can do this')].id"
+//@ set impl_i32 = "$.index[?(@.docs[0].text=='Only core can do this')].id"
#[lang = "pointee_sized"]
pub trait PointeeSized {}
@@ -17,19 +17,19 @@ pub trait Sized: MetaSized {}
/// Only core can do this
impl i32 {
- //@ set identity = "$.index[?(@.docs=='Do Nothing')].id"
+ //@ set identity = "$.index[?(@.docs[0].text=='Do Nothing')].id"
/// Do Nothing
pub fn identity(self) -> Self {
self
}
- //@ is "$.index[?(@.docs=='Only core can do this')].inner.impl.items[*]" $identity
+ //@ is "$.index[?(@.docs[0].text=='Only core can do this')].inner.impl.items[*]" $identity
}
//@ set Trait = "$.index[?(@.name=='Trait')].id"
pub trait Trait {}
-//@ set impl_trait_for_i32 = "$.index[?(@.docs=='impl Trait for i32')].id"
+//@ set impl_trait_for_i32 = "$.index[?(@.docs[0].text=='impl Trait for i32')].id"
/// impl Trait for i32
impl Trait for i32 {}
@@ -37,7 +37,7 @@ impl Trait for i32 {}
#[rustc_doc_primitive = "i32"]
const _: () = ();
-//@ set i32 = "$.index[?(@.docs=='i32')].id"
-//@ is "$.index[?(@.docs=='i32')].name" '"i32"'
-//@ is "$.index[?(@.docs=='i32')].inner.primitive.name" '"i32"'
-//@ ismany "$.index[?(@.docs=='i32')].inner.primitive.impls[*]" $impl_i32 $impl_trait_for_i32
+//@ set i32 = "$.index[?(@.docs[0].text=='i32')].id"
+//@ is "$.index[?(@.docs[0].text=='i32')].name" '"i32"'
+//@ is "$.index[?(@.docs[0].text=='i32')].inner.primitive.name" '"i32"'
+//@ ismany "$.index[?(@.docs[0].text=='i32')].inner.primitive.impls[*]" $impl_i32 $impl_trait_for_i32
diff --git a/tests/rustdoc-json/reexport/glob_collision.rs b/tests/rustdoc-json/reexport/glob_collision.rs
index dd6eab6517b09..224a0b2841957 100644
--- a/tests/rustdoc-json/reexport/glob_collision.rs
+++ b/tests/rustdoc-json/reexport/glob_collision.rs
@@ -15,12 +15,12 @@ mod m2 {
pub fn f(_: u8) {}
}
-//@ set m1_use = "$.index[?(@.docs=='m1 re-export')].id"
+//@ set m1_use = "$.index[?(@.docs[0].text=='m1 re-export')].id"
//@ is "$.index[?(@.inner.use.name=='m1')].inner.use.id" $m1
//@ is "$.index[?(@.inner.use.name=='m1')].inner.use.is_glob" true
/// m1 re-export
pub use m1::*;
-//@ set m2_use = "$.index[?(@.docs=='m2 re-export')].id"
+//@ set m2_use = "$.index[?(@.docs[0].text=='m2 re-export')].id"
//@ is "$.index[?(@.inner.use.name=='m2')].inner.use.id" $m2
//@ is "$.index[?(@.inner.use.name=='m2')].inner.use.is_glob" true
/// m2 re-export
diff --git a/tests/rustdoc-json/reexport/glob_private.rs b/tests/rustdoc-json/reexport/glob_private.rs
index f232914787b22..e6bc00c961850 100644
--- a/tests/rustdoc-json/reexport/glob_private.rs
+++ b/tests/rustdoc-json/reexport/glob_private.rs
@@ -11,8 +11,8 @@ mod mod1 {
struct Mod2Private;
}
- //@ set mod2_use_id = "$.index[?(@.docs=='Mod2 re-export')].id"
- //@ is "$.index[?(@.docs=='Mod2 re-export')].inner.use.name" \"mod2\"
+ //@ set mod2_use_id = "$.index[?(@.docs[0].text=='Mod2 re-export')].id"
+ //@ is "$.index[?(@.docs[0].text=='Mod2 re-export')].inner.use.name" \"mod2\"
/// Mod2 re-export
pub use self::mod2::*;
@@ -22,8 +22,8 @@ mod mod1 {
struct Mod1Private;
}
-//@ set mod1_use_id = "$.index[?(@.docs=='Mod1 re-export')].id"
-//@ is "$.index[?(@.docs=='Mod1 re-export')].inner.use.name" \"mod1\"
+//@ set mod1_use_id = "$.index[?(@.docs[0].text=='Mod1 re-export')].id"
+//@ is "$.index[?(@.docs[0].text=='Mod1 re-export')].inner.use.name" \"mod1\"
/// Mod1 re-export
pub use mod1::*;
diff --git a/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs b/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs
index 54dda2a3cd099..e0d49cfdc12e8 100644
--- a/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs
+++ b/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs
@@ -4,14 +4,14 @@ pub mod foo {
pub struct Bar;
}
-//@ set root_import_id = "$.index[?(@.docs=='Outer re-export')].id"
+//@ set root_import_id = "$.index[?(@.docs[0].text=='Outer re-export')].id"
//@ is "$.index[?(@.inner.use.source=='foo::Bar')].inner.use.id" $bar_id
//@ has "$.index[?(@.name=='in_root_and_mod_pub')].inner.module.items[*]" $root_import_id
/// Outer re-export
pub use foo::Bar;
pub mod baz {
- //@ set baz_import_id = "$.index[?(@.docs=='Inner re-export')].id"
+ //@ set baz_import_id = "$.index[?(@.docs[0].text=='Inner re-export')].id"
//@ is "$.index[?(@.inner.use.source=='crate::foo::Bar')].inner.use.id" $bar_id
//@ ismany "$.index[?(@.name=='baz')].inner.module.items[*]" $baz_import_id
/// Inner re-export
diff --git a/tests/rustdoc-json/reexport/macro.rs b/tests/rustdoc-json/reexport/macro.rs
index 0bd37768255bc..f96f137f0b6c5 100644
--- a/tests/rustdoc-json/reexport/macro.rs
+++ b/tests/rustdoc-json/reexport/macro.rs
@@ -6,7 +6,7 @@ macro_rules! repro {
() => {};
}
-//@ set repro2_id = "$.index[?(@.docs=='Re-export')].id"
+//@ set repro2_id = "$.index[?(@.docs[0].text=='Re-export')].id"
/// Re-export
pub use crate::repro as repro2;
diff --git a/tests/rustdoc-json/reexport/private_twice_one_inline.rs b/tests/rustdoc-json/reexport/private_twice_one_inline.rs
index 6b5d03e207eb4..880cb15908a07 100644
--- a/tests/rustdoc-json/reexport/private_twice_one_inline.rs
+++ b/tests/rustdoc-json/reexport/private_twice_one_inline.rs
@@ -5,15 +5,15 @@
extern crate pub_struct as foo;
#[doc(inline)]
-//@ set crate_use_id = "$.index[?(@.docs=='Hack A')].id"
-//@ set foo_id = "$.index[?(@.docs=='Hack A')].inner.use.id"
+//@ set crate_use_id = "$.index[?(@.docs[0].text=='Hack A')].id"
+//@ set foo_id = "$.index[?(@.docs[0].text=='Hack A')].inner.use.id"
/// Hack A
pub use foo::Foo;
//@ set bar_id = "$.index[?(@.name=='bar')].id"
pub mod bar {
- //@ is "$.index[?(@.docs=='Hack B')].inner.use.id" $foo_id
- //@ set bar_use_id = "$.index[?(@.docs=='Hack B')].id"
+ //@ is "$.index[?(@.docs[0].text=='Hack B')].inner.use.id" $foo_id
+ //@ set bar_use_id = "$.index[?(@.docs[0].text=='Hack B')].id"
//@ ismany "$.index[?(@.name=='bar')].inner.module.items[*]" $bar_use_id
/// Hack B
pub use foo::Foo;
diff --git a/tests/rustdoc-json/reexport/private_two_names.rs b/tests/rustdoc-json/reexport/private_two_names.rs
index 79af40b83a4f8..1d3d99cf928fe 100644
--- a/tests/rustdoc-json/reexport/private_two_names.rs
+++ b/tests/rustdoc-json/reexport/private_two_names.rs
@@ -7,14 +7,14 @@ mod style {
pub struct Color;
}
-//@ is "$.index[?(@.docs=='First re-export')].inner.use.id" $color_struct_id
-//@ is "$.index[?(@.docs=='First re-export')].inner.use.name" \"Color\"
-//@ set color_export_id = "$.index[?(@.docs=='First re-export')].id"
+//@ is "$.index[?(@.docs[0].text=='First re-export')].inner.use.id" $color_struct_id
+//@ is "$.index[?(@.docs[0].text=='First re-export')].inner.use.name" \"Color\"
+//@ set color_export_id = "$.index[?(@.docs[0].text=='First re-export')].id"
/// First re-export
pub use style::Color;
-//@ is "$.index[?(@.docs=='Second re-export')].inner.use.id" $color_struct_id
-//@ is "$.index[?(@.docs=='Second re-export')].inner.use.name" \"Colour\"
-//@ set colour_export_id = "$.index[?(@.docs=='Second re-export')].id"
+//@ is "$.index[?(@.docs[0].text=='Second re-export')].inner.use.id" $color_struct_id
+//@ is "$.index[?(@.docs[0].text=='Second re-export')].inner.use.name" \"Colour\"
+//@ set colour_export_id = "$.index[?(@.docs[0].text=='Second re-export')].id"
/// Second re-export
pub use style::Color as Colour;
diff --git a/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs b/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs
index 56922340a6fbe..8e4cda1014d94 100644
--- a/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs
+++ b/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs
@@ -1,9 +1,9 @@
// Regression test for .
-//@ set impl_S = "$.index[?(@.docs=='impl S')].id"
+//@ set impl_S = "$.index[?(@.docs[0].text=='impl S')].id"
//@ has "$.index[?(@.name=='S')].inner.struct.impls[*]" $impl_S
//@ set is_present = "$.index[?(@.name=='is_present')].id"
-//@ is "$.index[?(@.docs=='impl S')].inner.impl.items[*]" $is_present
+//@ is "$.index[?(@.docs[0].text=='impl S')].inner.impl.items[*]" $is_present
//@ !has "$.index[?(@.name=='hidden_impl')]"
//@ !has "$.index[?(@.name=='hidden_fn')]"
diff --git a/tests/rustdoc-json/reexport/rename_public.rs b/tests/rustdoc-json/reexport/rename_public.rs
index a3d712358f227..c2ed6ef89d07f 100644
--- a/tests/rustdoc-json/reexport/rename_public.rs
+++ b/tests/rustdoc-json/reexport/rename_public.rs
@@ -6,7 +6,7 @@ pub mod inner {
//@ ismany "$.index[?(@.name=='inner')].inner.module.items[*]" $public_id
pub struct Public;
}
-//@ set import_id = "$.index[?(@.docs=='Re-export')].id"
+//@ set import_id = "$.index[?(@.docs[0].text=='Re-export')].id"
//@ !has "$.index[?(@.inner.use.name=='Public')]"
//@ is "$.index[?(@.inner.use.name=='NewName')].inner.use.source" \"inner::Public\"
/// Re-export
diff --git a/tests/rustdoc-json/reexport/same_name_different_types.rs b/tests/rustdoc-json/reexport/same_name_different_types.rs
index 6e7ad3393e5da..29e08fd323f1d 100644
--- a/tests/rustdoc-json/reexport/same_name_different_types.rs
+++ b/tests/rustdoc-json/reexport/same_name_different_types.rs
@@ -1,12 +1,12 @@
// Regression test for .
pub mod nested {
- //@ set foo_struct = "$.index[?(@.docs == 'Foo the struct')].id"
+ //@ set foo_struct = "$.index[?(@.docs[0].text == 'Foo the struct')].id"
/// Foo the struct
pub struct Foo {}
- //@ set foo_fn = "$.index[?(@.docs == 'Foo the function')].id"
+ //@ set foo_fn = "$.index[?(@.docs[0].text == 'Foo the function')].id"
#[allow(non_snake_case)]
/// Foo the function
diff --git a/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs b/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs
index 05b55c7b12a03..edb09dd072b8d 100644
--- a/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs
+++ b/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs
@@ -7,11 +7,11 @@ mod inner {
pub trait Trait {}
}
-//@ set export_id = "$.index[?(@.docs=='First re-export')].id"
+//@ set export_id = "$.index[?(@.docs[0].text=='First re-export')].id"
//@ is "$.index[?(@.inner.use.name=='Trait')].inner.use.id" $trait_id
/// First re-export
pub use inner::Trait;
-//@ set reexport_id = "$.index[?(@.docs=='Second re-export')].id"
+//@ set reexport_id = "$.index[?(@.docs[0].text=='Second re-export')].id"
//@ is "$.index[?(@.inner.use.name=='Reexport')].inner.use.id" $trait_id
/// Second re-export
pub use inner::Trait as Reexport;
diff --git a/tests/rustdoc-json/reexport/simple_public.rs b/tests/rustdoc-json/reexport/simple_public.rs
index cdb6c0dc88a3b..7cdb54cd45f1e 100644
--- a/tests/rustdoc-json/reexport/simple_public.rs
+++ b/tests/rustdoc-json/reexport/simple_public.rs
@@ -8,8 +8,8 @@ pub mod inner {
pub struct Public;
}
-//@ set import_id = "$.index[?(@.docs=='Outer')].id"
-//@ is "$.index[?(@.docs=='Outer')].inner.use.source" \"inner::Public\"
+//@ set import_id = "$.index[?(@.docs[0].text=='Outer')].id"
+//@ is "$.index[?(@.docs[0].text=='Outer')].inner.use.source" \"inner::Public\"
/// Outer
pub use inner::Public;
diff --git a/tests/rustdoc-json/structs/tuple_pub_priv.rs b/tests/rustdoc-json/structs/tuple_pub_priv.rs
index b97a17cc46ac2..747b1753d09b1 100644
--- a/tests/rustdoc-json/structs/tuple_pub_priv.rs
+++ b/tests/rustdoc-json/structs/tuple_pub_priv.rs
@@ -5,7 +5,7 @@ pub struct Demo(
#[doc(hidden)] i32,
);
-//@ set field = "$.index[?(@.docs=='field')].id"
+//@ set field = "$.index[?(@.docs[0].text=='field')].id"
//@ is "$.index[?(@.name=='Demo')].inner.struct.kind.tuple[0]" null
//@ is "$.index[?(@.name=='Demo')].inner.struct.kind.tuple[1]" $field
diff --git a/tests/rustdoc-json/traits/implementors.rs b/tests/rustdoc-json/traits/implementors.rs
index 499acefedb773..b2b183573c696 100644
--- a/tests/rustdoc-json/traits/implementors.rs
+++ b/tests/rustdoc-json/traits/implementors.rs
@@ -6,7 +6,7 @@ impl Wham for GeorgeMichael {}
// Find IDs.
//@ set wham = "$.index[?(@.name=='Wham')].id"
-//@ set gmWham = "$.index[?(@.docs=='Wham for George Michael')].id"
+//@ set gmWham = "$.index[?(@.docs[0].text=='Wham for George Michael')].id"
//@ set gm = "$.index[?(@.name=='GeorgeMichael')].id"
// Both struct and trait point to impl.
@@ -14,5 +14,5 @@ impl Wham for GeorgeMichael {}
//@ is "$.index[?(@.name=='Wham')].inner.trait.implementations[*]" $gmWham
// Impl points to both struct and trait.
-//@ is "$.index[?(@.docs == 'Wham for George Michael')].inner.impl.trait.id" $wham
-//@ is "$.index[?(@.docs == 'Wham for George Michael')].inner.impl.for.resolved_path.id" $gm
+//@ is "$.index[?(@.docs[0].text == 'Wham for George Michael')].inner.impl.trait.id" $wham
+//@ is "$.index[?(@.docs[0].text == 'Wham for George Michael')].inner.impl.for.resolved_path.id" $gm
diff --git a/tests/rustdoc-json/type/extern.rs b/tests/rustdoc-json/type/extern.rs
index 7963690e4484a..4345c09ee132f 100644
--- a/tests/rustdoc-json/type/extern.rs
+++ b/tests/rustdoc-json/type/extern.rs
@@ -5,5 +5,5 @@ extern "C" {
pub type Foo;
}
-//@ is "$.index[?(@.docs=='No inner information')].name" '"Foo"'
-//@ is "$.index[?(@.docs=='No inner information')].inner" \"extern_type\"
+//@ is "$.index[?(@.docs[0].text=='No inner information')].name" '"Foo"'
+//@ is "$.index[?(@.docs[0].text=='No inner information')].inner" \"extern_type\"
diff --git a/tests/rustdoc-json/type/inherent_associated_type.rs b/tests/rustdoc-json/type/inherent_associated_type.rs
index e96a92f7cfb4b..139e713b86ff8 100644
--- a/tests/rustdoc-json/type/inherent_associated_type.rs
+++ b/tests/rustdoc-json/type/inherent_associated_type.rs
@@ -18,6 +18,6 @@ impl Owner {
/// iat
pub type Metadata = OwnerMetadata;
}
-//@ set iat = '$.index[?(@.docs=="iat")].id'
-//@ is '$.index[?(@.docs=="impl")].inner.impl.items[*]' $iat
-//@ is '$.index[?(@.docs=="iat")].inner.assoc_type.type.resolved_path.id' $OwnerMetadata
+//@ set iat = '$.index[?(@.docs[0].text=="iat")].id'
+//@ is '$.index[?(@.docs[0].text=="impl")].inner.impl.items[*]' $iat
+//@ is '$.index[?(@.docs[0].text=="iat")].inner.assoc_type.type.resolved_path.id' $OwnerMetadata
diff --git a/tests/rustdoc-json/type/inherent_associated_type_projections.rs b/tests/rustdoc-json/type/inherent_associated_type_projections.rs
index 934daba11bb1f..709bec4d08017 100644
--- a/tests/rustdoc-json/type/inherent_associated_type_projections.rs
+++ b/tests/rustdoc-json/type/inherent_associated_type_projections.rs
@@ -24,10 +24,10 @@ impl Parametrized {
pub type Proj = String;
}
-//@ set param_bool = '$.index[?(@.docs=="param_bool")].id'
-//@ set param_i32 = '$.index[?(@.docs=="param_i32")].id'
-//@ set param_bool_proj = '$.index[?(@.docs=="param_bool_proj")].id'
-//@ set param_i32_proj = '$.index[?(@.docs=="param_i32_proj")].id'
+//@ set param_bool = '$.index[?(@.docs[0].text=="param_bool")].id'
+//@ set param_i32 = '$.index[?(@.docs[0].text=="param_i32")].id'
+//@ set param_bool_proj = '$.index[?(@.docs[0].text=="param_bool_proj")].id'
+//@ set param_i32_proj = '$.index[?(@.docs[0].text=="param_i32_proj")].id'
-//@ is '$.index[?(@.docs=="param_bool")].inner.impl.items[*]' $param_bool_proj
-//@ is '$.index[?(@.docs=="param_i32")].inner.impl.items[*]' $param_i32_proj
+//@ is '$.index[?(@.docs[0].text=="param_bool")].inner.impl.items[*]' $param_bool_proj
+//@ is '$.index[?(@.docs[0].text=="param_i32")].inner.impl.items[*]' $param_i32_proj