about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLoïc BRANSTETT <loic.branstett@epitech.eu>2021-09-26 18:22:07 +0200
committerLoïc BRANSTETT <loic.branstett@epitech.eu>2021-09-26 18:22:07 +0200
commit88ff75c6ccd44e6eef20157cbedfa15dc0f6a1b2 (patch)
tree3897435ec0e720ef2ea32ad7d50b38daac183a5f
parentf6e6ddc09d660fbfb4d483a9677d80768cc4e31c (diff)
downloadrust-88ff75c6ccd44e6eef20157cbedfa15dc0f6a1b2.tar.gz
rust-88ff75c6ccd44e6eef20157cbedfa15dc0f6a1b2.zip
Fix populate of union.impls
-rw-r--r--src/librustdoc/json/mod.rs2
-rw-r--r--src/test/rustdoc-json/unions/impl.rs15
2 files changed, 17 insertions, 0 deletions
diff --git a/src/librustdoc/json/mod.rs b/src/librustdoc/json/mod.rs
index 5089cc30a1e..915a9fd2b89 100644
--- a/src/librustdoc/json/mod.rs
+++ b/src/librustdoc/json/mod.rs
@@ -169,6 +169,8 @@ impl<'tcx> FormatRenderer<'tcx> for JsonRenderer<'tcx> {
                 s.impls = self.get_impls(id.expect_def_id())
             } else if let types::ItemEnum::Enum(ref mut e) = new_item.inner {
                 e.impls = self.get_impls(id.expect_def_id())
+            } else if let types::ItemEnum::Union(ref mut u) = new_item.inner {
+                u.impls = self.get_impls(id.expect_def_id())
             }
             let removed = self.index.borrow_mut().insert(from_item_id(id), new_item.clone());
 
diff --git a/src/test/rustdoc-json/unions/impl.rs b/src/test/rustdoc-json/unions/impl.rs
new file mode 100644
index 00000000000..0388b4a8c3c
--- /dev/null
+++ b/src/test/rustdoc-json/unions/impl.rs
@@ -0,0 +1,15 @@
+#![no_std]
+
+// @has impl.json "$.index[*][?(@.name=='Ux')].visibility" \"public\"
+// @has - "$.index[*][?(@.name=='Ux')].kind" \"union\"
+pub union Ux {
+    a: u32,
+    b: u64
+}
+
+// @has - "$.index[*][?(@.name=='Num')].visibility" \"public\"
+// @has - "$.index[*][?(@.name=='Num')].kind" \"trait\"
+pub trait Num {}
+
+// @count - "$.index[*][?(@.name=='Ux')].inner.impls" 1
+impl Num for Ux {}