about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Nordholts <enselic@gmail.com>2022-06-29 20:34:56 +0200
committerMartin Nordholts <enselic@gmail.com>2022-06-29 21:05:51 +0200
commitba87c934ea86476bbd75909eb18cbf7627c12c81 (patch)
tree0a6e3159ab00c15cdb5d386d552aa47b4cb366e3
parent116edb6800ea1d6615578e7f65366ae65364b3d8 (diff)
downloadrust-ba87c934ea86476bbd75909eb18cbf7627c12c81.tar.gz
rust-ba87c934ea86476bbd75909eb18cbf7627c12c81.zip
rustdoc-json: Make default value of blanket impl assoc types work
-rw-r--r--src/librustdoc/json/conversions.rs2
-rw-r--r--src/test/rustdoc-json/blanket_impls.rs9
2 files changed, 10 insertions, 1 deletions
diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs
index afc84cc0a97..316554808c2 100644
--- a/src/librustdoc/json/conversions.rs
+++ b/src/librustdoc/json/conversions.rs
@@ -255,7 +255,7 @@ fn from_clean_item(item: clean::Item, tcx: TyCtxt<'_>) -> ItemEnum {
         AssocTypeItem(t, b) => ItemEnum::AssocType {
             generics: t.generics.into_tcx(tcx),
             bounds: b.into_iter().map(|x| x.into_tcx(tcx)).collect(),
-            default: t.item_type.map(|ty| ty.into_tcx(tcx)),
+            default: Some(t.item_type.unwrap_or(t.type_).into_tcx(tcx)),
         },
         // `convert_item` early returns `None` for striped items and keywords.
         StrippedItem(_) | KeywordItem(_) => unreachable!(),
diff --git a/src/test/rustdoc-json/blanket_impls.rs b/src/test/rustdoc-json/blanket_impls.rs
new file mode 100644
index 00000000000..edf1a9fe2fc
--- /dev/null
+++ b/src/test/rustdoc-json/blanket_impls.rs
@@ -0,0 +1,9 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/98658>
+
+#![no_std]
+
+// @has blanket_impls.json
+// @has - "$.index[*][?(@.name=='Error')].kind" \"assoc_type\"
+// @has - "$.index[*][?(@.name=='Error')].inner.default.kind" \"resolved_path\"
+// @has - "$.index[*][?(@.name=='Error')].inner.default.inner.name" \"Infallible\"
+pub struct ForBlanketTryFromImpl;