summaryrefslogtreecommitdiffstats
path: root/tests/rustdoc-json
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/rustdoc-json/assoc_items.rs (renamed from src/test/rustdoc-json/assoc_items.rs)0
-rw-r--r--tests/rustdoc-json/assoc_type.rs (renamed from src/test/rustdoc-json/assoc_type.rs)0
-rw-r--r--tests/rustdoc-json/blanket_impls.rs (renamed from src/test/rustdoc-json/blanket_impls.rs)0
-rw-r--r--tests/rustdoc-json/doc_hidden_failure.rs (renamed from src/test/rustdoc-json/doc_hidden_failure.rs)3
-rw-r--r--tests/rustdoc-json/enums/auxiliary/color.rs (renamed from src/test/rustdoc-json/enums/auxiliary/color.rs)0
-rw-r--r--tests/rustdoc-json/enums/discriminant/basic.rs12
-rw-r--r--tests/rustdoc-json/enums/discriminant/expr.rs39
-rw-r--r--tests/rustdoc-json/enums/discriminant/limits.rs43
-rw-r--r--tests/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs15
-rw-r--r--tests/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs10
-rw-r--r--tests/rustdoc-json/enums/discriminant/struct.rs15
-rw-r--r--tests/rustdoc-json/enums/discriminant/tuple.rs15
-rw-r--r--tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs (renamed from src/test/rustdoc-json/enums/doc_link_to_foreign_variant.rs)0
-rw-r--r--tests/rustdoc-json/enums/field_hidden.rs13
-rw-r--r--tests/rustdoc-json/enums/kind.rs32
-rw-r--r--tests/rustdoc-json/enums/struct_field_hidden.rs16
-rw-r--r--tests/rustdoc-json/enums/tuple_fields_hidden.rs83
-rw-r--r--tests/rustdoc-json/enums/use_glob.rs (renamed from src/test/rustdoc-json/enums/use_glob.rs)0
-rw-r--r--tests/rustdoc-json/enums/use_variant.rs (renamed from src/test/rustdoc-json/enums/use_variant.rs)0
-rw-r--r--tests/rustdoc-json/enums/use_variant_foreign.rs (renamed from src/test/rustdoc-json/enums/use_variant_foreign.rs)0
-rw-r--r--tests/rustdoc-json/enums/variant_struct.rs10
-rw-r--r--tests/rustdoc-json/enums/variant_tuple_struct.rs10
-rw-r--r--tests/rustdoc-json/fn_pointer/abi.rs (renamed from src/test/rustdoc-json/fn_pointer/abi.rs)0
-rw-r--r--tests/rustdoc-json/fn_pointer/generics.rs (renamed from src/test/rustdoc-json/fn_pointer/generics.rs)0
-rw-r--r--tests/rustdoc-json/fn_pointer/qualifiers.rs (renamed from src/test/rustdoc-json/fn_pointer/qualifiers.rs)0
-rw-r--r--tests/rustdoc-json/fns/abi.rs (renamed from src/test/rustdoc-json/fns/abi.rs)0
-rw-r--r--tests/rustdoc-json/fns/async_return.rs (renamed from src/test/rustdoc-json/fns/async_return.rs)0
-rw-r--r--tests/rustdoc-json/fns/generic_args.rs (renamed from src/test/rustdoc-json/fns/generic_args.rs)0
-rw-r--r--tests/rustdoc-json/fns/generic_returns.rs (renamed from src/test/rustdoc-json/fns/generic_returns.rs)0
-rw-r--r--tests/rustdoc-json/fns/generics.rs (renamed from src/test/rustdoc-json/fns/generics.rs)0
-rw-r--r--tests/rustdoc-json/fns/pattern_arg.rs (renamed from src/test/rustdoc-json/fns/pattern_arg.rs)0
-rw-r--r--tests/rustdoc-json/fns/qualifiers.rs (renamed from src/test/rustdoc-json/fns/qualifiers.rs)0
-rw-r--r--tests/rustdoc-json/fns/return_type_alias.rs (renamed from src/test/rustdoc-json/fns/return_type_alias.rs)0
-rw-r--r--tests/rustdoc-json/generic-associated-types/gats.rs (renamed from src/test/rustdoc-json/generic-associated-types/gats.rs)0
-rw-r--r--tests/rustdoc-json/generic_impl.rs (renamed from src/test/rustdoc-json/generic_impl.rs)0
-rw-r--r--tests/rustdoc-json/glob_import.rs (renamed from src/test/rustdoc-json/glob_import.rs)0
-rw-r--r--tests/rustdoc-json/impls/auto.rs (renamed from src/test/rustdoc-json/impls/auto.rs)0
-rw-r--r--tests/rustdoc-json/impls/auxiliary/foreign_struct.rs (renamed from src/test/rustdoc-json/impls/auxiliary/foreign_struct.rs)0
-rw-r--r--tests/rustdoc-json/impls/auxiliary/foreign_trait.rs (renamed from src/test/rustdoc-json/impls/auxiliary/foreign_trait.rs)0
-rw-r--r--tests/rustdoc-json/impls/blanket_with_local.rs (renamed from src/test/rustdoc-json/impls/blanket_with_local.rs)0
-rw-r--r--tests/rustdoc-json/impls/foreign_for_local.rs (renamed from src/test/rustdoc-json/impls/foreign_for_local.rs)0
-rw-r--r--tests/rustdoc-json/impls/import_from_private.rs (renamed from src/test/rustdoc-json/impls/import_from_private.rs)0
-rw-r--r--tests/rustdoc-json/impls/local_for_foreign.rs (renamed from src/test/rustdoc-json/impls/local_for_foreign.rs)0
-rw-r--r--tests/rustdoc-json/impls/local_for_local.rs (renamed from src/test/rustdoc-json/impls/local_for_local.rs)0
-rw-r--r--tests/rustdoc-json/impls/local_for_local_primitive.rs (renamed from src/test/rustdoc-json/impls/local_for_local_primitive.rs)0
-rw-r--r--tests/rustdoc-json/impls/local_for_primitive.rs (renamed from src/test/rustdoc-json/impls/local_for_primitive.rs)0
-rw-r--r--tests/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs (renamed from src/test/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs)0
-rw-r--r--tests/rustdoc-json/intra-doc-links/foreign_variant.rs (renamed from src/test/rustdoc-json/intra-doc-links/foreign_variant.rs)0
-rw-r--r--tests/rustdoc-json/intra-doc-links/non_page.rs (renamed from src/test/rustdoc-json/intra-doc-links/non_page.rs)0
-rw-r--r--tests/rustdoc-json/intra-doc-links/user_written.rs (renamed from src/test/rustdoc-json/intra-doc-links/user_written.rs)0
-rw-r--r--tests/rustdoc-json/keyword.rs (renamed from src/test/rustdoc-json/keyword.rs)0
-rw-r--r--tests/rustdoc-json/lifetime/longest.rs (renamed from src/test/rustdoc-json/lifetime/longest.rs)0
-rw-r--r--tests/rustdoc-json/lifetime/outlives.rs (renamed from src/test/rustdoc-json/lifetime/outlives.rs)0
-rw-r--r--tests/rustdoc-json/methods/abi.rs (renamed from src/test/rustdoc-json/methods/abi.rs)0
-rw-r--r--tests/rustdoc-json/methods/qualifiers.rs (renamed from src/test/rustdoc-json/methods/qualifiers.rs)0
-rw-r--r--tests/rustdoc-json/nested.rs (renamed from src/test/rustdoc-json/nested.rs)0
-rw-r--r--tests/rustdoc-json/output_generics.rs (renamed from src/test/rustdoc-json/output_generics.rs)0
-rw-r--r--tests/rustdoc-json/primitives/local_primitive.rs21
-rw-r--r--tests/rustdoc-json/primitives/primitive_impls.rs (renamed from src/test/rustdoc-json/primitives/primitive_impls.rs)0
-rw-r--r--tests/rustdoc-json/primitives/primitive_overloading.rs (renamed from src/test/rustdoc-json/primitives/primitive_overloading.rs)0
-rw-r--r--tests/rustdoc-json/primitives/primitive_type.rs (renamed from src/test/rustdoc-json/primitives/primitive_type.rs)0
-rw-r--r--tests/rustdoc-json/primitives/use_primitive.rs (renamed from src/test/rustdoc-json/primitives/use_primitive.rs)0
-rw-r--r--tests/rustdoc-json/reexport/auxiliary/pub-struct.rs (renamed from src/test/rustdoc-json/reexport/auxiliary/pub-struct.rs)0
-rw-r--r--tests/rustdoc-json/reexport/auxiliary/trait_with_docs.rs (renamed from src/test/rustdoc-json/reexport/auxiliary/trait_with_docs.rs)0
-rw-r--r--tests/rustdoc-json/reexport/export_extern_crate_as_self.rs (renamed from src/test/rustdoc-json/reexport/export_extern_crate_as_self.rs)0
-rw-r--r--tests/rustdoc-json/reexport/glob_collision.rs (renamed from src/test/rustdoc-json/reexport/glob_collision.rs)0
-rw-r--r--tests/rustdoc-json/reexport/glob_empty_mod.rs (renamed from src/test/rustdoc-json/reexport/glob_empty_mod.rs)0
-rw-r--r--tests/rustdoc-json/reexport/glob_extern.rs (renamed from src/test/rustdoc-json/reexport/glob_extern.rs)0
-rw-r--r--tests/rustdoc-json/reexport/glob_private.rs (renamed from src/test/rustdoc-json/reexport/glob_private.rs)0
-rw-r--r--tests/rustdoc-json/reexport/in_root_and_mod.rs (renamed from src/test/rustdoc-json/reexport/in_root_and_mod.rs)0
-rw-r--r--tests/rustdoc-json/reexport/in_root_and_mod_pub.rs (renamed from src/test/rustdoc-json/reexport/in_root_and_mod_pub.rs)0
-rw-r--r--tests/rustdoc-json/reexport/macro.rs (renamed from src/test/rustdoc-json/reexport/macro.rs)0
-rw-r--r--tests/rustdoc-json/reexport/mod_not_included.rs (renamed from src/test/rustdoc-json/reexport/mod_not_included.rs)0
-rw-r--r--tests/rustdoc-json/reexport/private_twice_one_inline.rs (renamed from src/test/rustdoc-json/reexport/private_twice_one_inline.rs)0
-rw-r--r--tests/rustdoc-json/reexport/private_two_names.rs (renamed from src/test/rustdoc-json/reexport/private_two_names.rs)0
-rw-r--r--tests/rustdoc-json/reexport/pub_use_doc_hidden.rs15
-rw-r--r--tests/rustdoc-json/reexport/reexport_method_from_private_module.rs (renamed from src/test/rustdoc-json/reexport/reexport_method_from_private_module.rs)0
-rw-r--r--tests/rustdoc-json/reexport/rename_private.rs (renamed from src/test/rustdoc-json/reexport/rename_private.rs)0
-rw-r--r--tests/rustdoc-json/reexport/rename_public.rs (renamed from src/test/rustdoc-json/reexport/rename_public.rs)0
-rw-r--r--tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs (renamed from src/test/rustdoc-json/reexport/same_type_reexported_more_than_once.rs)0
-rw-r--r--tests/rustdoc-json/reexport/simple_private.rs (renamed from src/test/rustdoc-json/reexport/simple_private.rs)0
-rw-r--r--tests/rustdoc-json/reexport/simple_public.rs (renamed from src/test/rustdoc-json/reexport/simple_public.rs)0
-rw-r--r--tests/rustdoc-json/reexport/synthesize_trait_with_docs.rs (renamed from src/test/rustdoc-json/reexport/synthesize_trait_with_docs.rs)0
-rw-r--r--tests/rustdoc-json/return_private.rs (renamed from src/test/rustdoc-json/return_private.rs)0
-rw-r--r--tests/rustdoc-json/stripped_modules.rs (renamed from src/test/rustdoc-json/stripped_modules.rs)0
-rw-r--r--tests/rustdoc-json/structs/plain_all_pub.rs (renamed from src/test/rustdoc-json/structs/plain_all_pub.rs)0
-rw-r--r--tests/rustdoc-json/structs/plain_doc_hidden.rs (renamed from src/test/rustdoc-json/structs/plain_doc_hidden.rs)0
-rw-r--r--tests/rustdoc-json/structs/plain_empty.rs (renamed from src/test/rustdoc-json/structs/plain_empty.rs)0
-rw-r--r--tests/rustdoc-json/structs/plain_pub_priv.rs (renamed from src/test/rustdoc-json/structs/plain_pub_priv.rs)0
-rw-r--r--tests/rustdoc-json/structs/tuple.rs (renamed from src/test/rustdoc-json/structs/tuple.rs)0
-rw-r--r--tests/rustdoc-json/structs/tuple_empty.rs (renamed from src/test/rustdoc-json/structs/tuple_empty.rs)0
-rw-r--r--tests/rustdoc-json/structs/tuple_pub_priv.rs (renamed from src/test/rustdoc-json/structs/tuple_pub_priv.rs)0
-rw-r--r--tests/rustdoc-json/structs/unit.rs (renamed from src/test/rustdoc-json/structs/unit.rs)0
-rw-r--r--tests/rustdoc-json/structs/with_generics.rs (renamed from src/test/rustdoc-json/structs/with_generics.rs)0
-rw-r--r--tests/rustdoc-json/structs/with_primitives.rs (renamed from src/test/rustdoc-json/structs/with_primitives.rs)0
-rw-r--r--tests/rustdoc-json/traits/has_body.rs (renamed from src/test/rustdoc-json/traits/has_body.rs)0
-rw-r--r--tests/rustdoc-json/traits/implementors.rs (renamed from src/test/rustdoc-json/traits/implementors.rs)0
-rw-r--r--tests/rustdoc-json/traits/supertrait.rs (renamed from src/test/rustdoc-json/traits/supertrait.rs)0
-rw-r--r--tests/rustdoc-json/traits/trait_alias.rs (renamed from src/test/rustdoc-json/traits/trait_alias.rs)0
-rw-r--r--tests/rustdoc-json/traits/uses_extern_trait.rs (renamed from src/test/rustdoc-json/traits/uses_extern_trait.rs)0
-rw-r--r--tests/rustdoc-json/type/dyn.rs (renamed from src/test/rustdoc-json/type/dyn.rs)0
-rw-r--r--tests/rustdoc-json/type/extern.rs (renamed from src/test/rustdoc-json/type/extern.rs)0
-rw-r--r--tests/rustdoc-json/type/fn_lifetime.rs (renamed from src/test/rustdoc-json/type/fn_lifetime.rs)0
-rw-r--r--tests/rustdoc-json/type/generic_default.rs (renamed from src/test/rustdoc-json/type/generic_default.rs)0
-rw-r--r--tests/rustdoc-json/type/hrtb.rs (renamed from src/test/rustdoc-json/type/hrtb.rs)0
-rw-r--r--tests/rustdoc-json/unions/impl.rs (renamed from src/test/rustdoc-json/unions/impl.rs)0
-rw-r--r--tests/rustdoc-json/unions/union.rs (renamed from src/test/rustdoc-json/unions/union.rs)0
107 files changed, 351 insertions, 1 deletions
diff --git a/src/test/rustdoc-json/assoc_items.rs b/tests/rustdoc-json/assoc_items.rs
index 6d7f6bb96..6d7f6bb96 100644
--- a/src/test/rustdoc-json/assoc_items.rs
+++ b/tests/rustdoc-json/assoc_items.rs
diff --git a/src/test/rustdoc-json/assoc_type.rs b/tests/rustdoc-json/assoc_type.rs
index edc1f73c8..edc1f73c8 100644
--- a/src/test/rustdoc-json/assoc_type.rs
+++ b/tests/rustdoc-json/assoc_type.rs
diff --git a/src/test/rustdoc-json/blanket_impls.rs b/tests/rustdoc-json/blanket_impls.rs
index c5cc87ca1..c5cc87ca1 100644
--- a/src/test/rustdoc-json/blanket_impls.rs
+++ b/tests/rustdoc-json/blanket_impls.rs
diff --git a/src/test/rustdoc-json/doc_hidden_failure.rs b/tests/rustdoc-json/doc_hidden_failure.rs
index 6573166c4..0d2c6b220 100644
--- a/src/test/rustdoc-json/doc_hidden_failure.rs
+++ b/tests/rustdoc-json/doc_hidden_failure.rs
@@ -14,7 +14,8 @@ mod auto {
}
}
-// @count "$.index[*][?(@.name=='builders')]" 2
+// @count "$.index[*][?(@.name=='builders')]" 1
+// @has "$.index[*][?(@.name == 'ActionRowBuilder')"]
pub use auto::*;
pub mod builders {
diff --git a/src/test/rustdoc-json/enums/auxiliary/color.rs b/tests/rustdoc-json/enums/auxiliary/color.rs
index 7188f7938..7188f7938 100644
--- a/src/test/rustdoc-json/enums/auxiliary/color.rs
+++ b/tests/rustdoc-json/enums/auxiliary/color.rs
diff --git a/tests/rustdoc-json/enums/discriminant/basic.rs b/tests/rustdoc-json/enums/discriminant/basic.rs
new file mode 100644
index 000000000..06906df3b
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/basic.rs
@@ -0,0 +1,12 @@
+#[repr(i8)]
+pub enum Ordering {
+ // @is "$.index[*][?(@.name=='Less')].inner.discriminant.expr" '"-1"'
+ // @is "$.index[*][?(@.name=='Less')].inner.discriminant.value" '"-1"'
+ Less = -1,
+ // @is "$.index[*][?(@.name=='Equal')].inner.discriminant.expr" '"0"'
+ // @is "$.index[*][?(@.name=='Equal')].inner.discriminant.value" '"0"'
+ Equal = 0,
+ // @is "$.index[*][?(@.name=='Greater')].inner.discriminant.expr" '"1"'
+ // @is "$.index[*][?(@.name=='Greater')].inner.discriminant.value" '"1"'
+ Greater = 1,
+}
diff --git a/tests/rustdoc-json/enums/discriminant/expr.rs b/tests/rustdoc-json/enums/discriminant/expr.rs
new file mode 100644
index 000000000..e639965e7
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/expr.rs
@@ -0,0 +1,39 @@
+pub enum Foo {
+ // @is "$.index[*][?(@.name=='Addition')].inner.discriminant.value" '"0"'
+ // @is "$.index[*][?(@.name=='Addition')].inner.discriminant.expr" '"{ _ }"'
+ Addition = 0 + 0,
+ // @is "$.index[*][?(@.name=='Bin')].inner.discriminant.value" '"1"'
+ // @is "$.index[*][?(@.name=='Bin')].inner.discriminant.expr" '"0b1"'
+ Bin = 0b1,
+ // @is "$.index[*][?(@.name=='Oct')].inner.discriminant.value" '"2"'
+ // @is "$.index[*][?(@.name=='Oct')].inner.discriminant.expr" '"0o2"'
+ Oct = 0o2,
+ // @is "$.index[*][?(@.name=='PubConst')].inner.discriminant.value" '"3"'
+ // @is "$.index[*][?(@.name=='PubConst')].inner.discriminant.expr" '"THREE"'
+ PubConst = THREE,
+ // @is "$.index[*][?(@.name=='Hex')].inner.discriminant.value" '"4"'
+ // @is "$.index[*][?(@.name=='Hex')].inner.discriminant.expr" '"0x4"'
+ Hex = 0x4,
+ // @is "$.index[*][?(@.name=='Cast')].inner.discriminant.value" '"5"'
+ // @is "$.index[*][?(@.name=='Cast')].inner.discriminant.expr" '"{ _ }"'
+ Cast = 5 as isize,
+ // @is "$.index[*][?(@.name=='PubCall')].inner.discriminant.value" '"6"'
+ // @is "$.index[*][?(@.name=='PubCall')].inner.discriminant.expr" '"{ _ }"'
+ PubCall = six(),
+ // @is "$.index[*][?(@.name=='PrivCall')].inner.discriminant.value" '"7"'
+ // @is "$.index[*][?(@.name=='PrivCall')].inner.discriminant.expr" '"{ _ }"'
+ PrivCall = seven(),
+ // @is "$.index[*][?(@.name=='PrivConst')].inner.discriminant.value" '"8"'
+ // @is "$.index[*][?(@.name=='PrivConst')].inner.discriminant.expr" '"EIGHT"'
+ PrivConst = EIGHT,
+}
+
+pub const THREE: isize = 3;
+const EIGHT: isize = 8;
+
+pub const fn six() -> isize {
+ 6
+}
+const fn seven() -> isize {
+ 7
+}
diff --git a/tests/rustdoc-json/enums/discriminant/limits.rs b/tests/rustdoc-json/enums/discriminant/limits.rs
new file mode 100644
index 000000000..e56d5594f
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/limits.rs
@@ -0,0 +1,43 @@
+// ignore-tidy-linelength
+#![feature(repr128)]
+#![allow(incomplete_features)]
+
+#[repr(u64)]
+pub enum U64 {
+ // @is "$.index[*][?(@.name=='U64Min')].inner.discriminant.value" '"0"'
+ // @is "$.index[*][?(@.name=='U64Min')].inner.discriminant.expr" '"u64::MIN"'
+ U64Min = u64::MIN,
+ // @is "$.index[*][?(@.name=='U64Max')].inner.discriminant.value" '"18446744073709551615"'
+ // @is "$.index[*][?(@.name=='U64Max')].inner.discriminant.expr" '"u64::MAX"'
+ U64Max = u64::MAX,
+}
+
+#[repr(i64)]
+pub enum I64 {
+ // @is "$.index[*][?(@.name=='I64Min')].inner.discriminant.value" '"-9223372036854775808"'
+ // @is "$.index[*][?(@.name=='I64Min')].inner.discriminant.expr" '"i64::MIN"'
+ I64Min = i64::MIN,
+ // @is "$.index[*][?(@.name=='I64Max')].inner.discriminant.value" '"9223372036854775807"'
+ // @is "$.index[*][?(@.name=='I64Max')].inner.discriminant.expr" '"i64::MAX"'
+ I64Max = i64::MAX,
+}
+
+#[repr(u128)]
+pub enum U128 {
+ // @is "$.index[*][?(@.name=='U128Min')].inner.discriminant.value" '"0"'
+ // @is "$.index[*][?(@.name=='U128Min')].inner.discriminant.expr" '"u128::MIN"'
+ U128Min = u128::MIN,
+ // @is "$.index[*][?(@.name=='U128Max')].inner.discriminant.value" '"340282366920938463463374607431768211455"'
+ // @is "$.index[*][?(@.name=='U128Max')].inner.discriminant.expr" '"u128::MAX"'
+ U128Max = u128::MAX,
+}
+
+#[repr(i128)]
+pub enum I128 {
+ // @is "$.index[*][?(@.name=='I128Min')].inner.discriminant.value" '"-170141183460469231731687303715884105728"'
+ // @is "$.index[*][?(@.name=='I128Min')].inner.discriminant.expr" '"i128::MIN"'
+ I128Min = i128::MIN,
+ // @is "$.index[*][?(@.name=='I128Max')].inner.discriminant.value" '"170141183460469231731687303715884105727"'
+ // @is "$.index[*][?(@.name=='I128Max')].inner.discriminant.expr" '"i128::MAX"'
+ I128Max = i128::MAX,
+}
diff --git a/tests/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs b/tests/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs
new file mode 100644
index 000000000..6889b305f
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/num_underscore_and_suffix.rs
@@ -0,0 +1,15 @@
+#[repr(u32)]
+pub enum Foo {
+ // @is "$.index[*][?(@.name=='Basic')].inner.discriminant.value" '"0"'
+ // @is "$.index[*][?(@.name=='Basic')].inner.discriminant.expr" '"0"'
+ Basic = 0,
+ // @is "$.index[*][?(@.name=='Suffix')].inner.discriminant.value" '"10"'
+ // @is "$.index[*][?(@.name=='Suffix')].inner.discriminant.expr" '"10u32"'
+ Suffix = 10u32,
+ // @is "$.index[*][?(@.name=='Underscore')].inner.discriminant.value" '"100"'
+ // @is "$.index[*][?(@.name=='Underscore')].inner.discriminant.expr" '"1_0_0"'
+ Underscore = 1_0_0,
+ // @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.discriminant.value" '"1000"'
+ // @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.discriminant.expr" '"1_0_0_0u32"'
+ SuffixUnderscore = 1_0_0_0u32,
+}
diff --git a/tests/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs b/tests/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs
new file mode 100644
index 000000000..6a4f54de6
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/only_some_have_discriminant.rs
@@ -0,0 +1,10 @@
+pub enum Foo {
+ // @is "$.index[*][?(@.name=='Has')].inner.discriminant" '{"expr":"0", "value":"0"}'
+ Has = 0,
+ // @is "$.index[*][?(@.name=='Doesnt')].inner.discriminant" null
+ Doesnt,
+ // @is "$.index[*][?(@.name=='AlsoDoesnt')].inner.discriminant" null
+ AlsoDoesnt,
+ // @is "$.index[*][?(@.name=='AlsoHas')].inner.discriminant" '{"expr":"44", "value":"44"}'
+ AlsoHas = 44,
+}
diff --git a/tests/rustdoc-json/enums/discriminant/struct.rs b/tests/rustdoc-json/enums/discriminant/struct.rs
new file mode 100644
index 000000000..e91a632a3
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/struct.rs
@@ -0,0 +1,15 @@
+// ignore-tidy-linelength
+
+#[repr(i32)]
+// @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(i32)]"]'
+pub enum Foo {
+ // @is "$.index[*][?(@.name=='Struct')].inner.discriminant" null
+ // @count "$.index[*][?(@.name=='Struct')].inner.kind.struct.fields[*]" 0
+ Struct {},
+ // @is "$.index[*][?(@.name=='StructWithDiscr')].inner.discriminant" '{"expr": "42", "value": "42"}'
+ // @count "$.index[*][?(@.name=='StructWithDiscr')].inner.kind.struct.fields[*]" 1
+ StructWithDiscr { x: i32 } = 42,
+ // @is "$.index[*][?(@.name=='StructWithHexDiscr')].inner.discriminant" '{"expr": "0x42", "value": "66"}'
+ // @count "$.index[*][?(@.name=='StructWithHexDiscr')].inner.kind.struct.fields[*]" 2
+ StructWithHexDiscr { x: i32, y: bool } = 0x42,
+}
diff --git a/tests/rustdoc-json/enums/discriminant/tuple.rs b/tests/rustdoc-json/enums/discriminant/tuple.rs
new file mode 100644
index 000000000..b94d5739e
--- /dev/null
+++ b/tests/rustdoc-json/enums/discriminant/tuple.rs
@@ -0,0 +1,15 @@
+// ignore-tidy-linelength
+
+#[repr(u32)]
+// @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(u32)]"]'
+pub enum Foo {
+ // @is "$.index[*][?(@.name=='Tuple')].inner.discriminant" null
+ // @count "$.index[*][?(@.name=='Tuple')].inner.kind.tuple[*]" 0
+ Tuple(),
+ // @is "$.index[*][?(@.name=='TupleWithDiscr')].inner.discriminant" '{"expr": "1", "value": "1"}'
+ // @count "$.index[*][?(@.name=='TupleWithDiscr')].inner.kind.tuple[*]" 1
+ TupleWithDiscr(i32) = 1,
+ // @is "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.discriminant" '{"expr": "0b10", "value": "2"}'
+ // @count "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.kind.tuple[*]" 2
+ TupleWithBinDiscr(i32, i32) = 0b10,
+}
diff --git a/src/test/rustdoc-json/enums/doc_link_to_foreign_variant.rs b/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs
index 470b195a2..470b195a2 100644
--- a/src/test/rustdoc-json/enums/doc_link_to_foreign_variant.rs
+++ b/tests/rustdoc-json/enums/doc_link_to_foreign_variant.rs
diff --git a/tests/rustdoc-json/enums/field_hidden.rs b/tests/rustdoc-json/enums/field_hidden.rs
new file mode 100644
index 000000000..78a054314
--- /dev/null
+++ b/tests/rustdoc-json/enums/field_hidden.rs
@@ -0,0 +1,13 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/100529>.
+
+#![no_core]
+#![feature(no_core)]
+
+// @has "$.index[*][?(@.name=='ParseError')]"
+// @has "$.index[*][?(@.name=='UnexpectedEndTag')]"
+// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.kind.tuple" [null]
+// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.discriminant" null
+
+pub enum ParseError {
+ UnexpectedEndTag(#[doc(hidden)] u32),
+}
diff --git a/tests/rustdoc-json/enums/kind.rs b/tests/rustdoc-json/enums/kind.rs
new file mode 100644
index 000000000..1787a859c
--- /dev/null
+++ b/tests/rustdoc-json/enums/kind.rs
@@ -0,0 +1,32 @@
+// ignore-tidy-linelength
+
+#![feature(no_core)]
+#![no_core]
+
+pub enum Foo {
+ // @set Unit = "$.index[*][?(@.name=='Unit')].id"
+ // @is "$.index[*][?(@.name=='Unit')].inner.kind" '"plain"'
+ Unit,
+ // @set Named = "$.index[*][?(@.name=='Named')].id"
+ // @is "$.index[*][?(@.name=='Named')].inner.kind.struct" '{"fields": [], "fields_stripped": false}'
+ Named {},
+ // @set Tuple = "$.index[*][?(@.name=='Tuple')].id"
+ // @is "$.index[*][?(@.name=='Tuple')].inner.kind.tuple" []
+ Tuple(),
+ // @set NamedField = "$.index[*][?(@.name=='NamedField')].id"
+ // @set x = "$.index[*][?(@.name=='x' && @.kind=='struct_field')].id"
+ // @is "$.index[*][?(@.name=='NamedField')].inner.kind.struct.fields[*]" $x
+ // @is "$.index[*][?(@.name=='NamedField')].inner.kind.struct.fields_stripped" false
+ NamedField { x: i32 },
+ // @set TupleField = "$.index[*][?(@.name=='TupleField')].id"
+ // @set tup_field = "$.index[*][?(@.name=='0' && @.kind=='struct_field')].id"
+ // @is "$.index[*][?(@.name=='TupleField')].inner.kind.tuple[*]" $tup_field
+ TupleField(i32),
+}
+
+// @is "$.index[*][?(@.name=='Foo')].inner.variants[0]" $Unit
+// @is "$.index[*][?(@.name=='Foo')].inner.variants[1]" $Named
+// @is "$.index[*][?(@.name=='Foo')].inner.variants[2]" $Tuple
+// @is "$.index[*][?(@.name=='Foo')].inner.variants[3]" $NamedField
+// @is "$.index[*][?(@.name=='Foo')].inner.variants[4]" $TupleField
+// @count "$.index[*][?(@.name=='Foo')].inner.variants[*]" 5
diff --git a/tests/rustdoc-json/enums/struct_field_hidden.rs b/tests/rustdoc-json/enums/struct_field_hidden.rs
new file mode 100644
index 000000000..de939cde2
--- /dev/null
+++ b/tests/rustdoc-json/enums/struct_field_hidden.rs
@@ -0,0 +1,16 @@
+pub enum Foo {
+ Variant {
+ #[doc(hidden)]
+ a: i32,
+ // @set b = "$.index[*][?(@.name=='b')].id"
+ b: i32,
+ #[doc(hidden)]
+ x: i32,
+ // @set y = "$.index[*][?(@.name=='y')].id"
+ y: i32,
+ },
+ // @is "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields_stripped" true
+ // @is "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields[0]" $b
+ // @is "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields[1]" $y
+ // @count "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields[*]" 2
+}
diff --git a/tests/rustdoc-json/enums/tuple_fields_hidden.rs b/tests/rustdoc-json/enums/tuple_fields_hidden.rs
new file mode 100644
index 000000000..70bfbb818
--- /dev/null
+++ b/tests/rustdoc-json/enums/tuple_fields_hidden.rs
@@ -0,0 +1,83 @@
+#![feature(no_core)]
+#![no_core]
+
+// @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"
+
+pub enum EnumWithStrippedTupleVariants {
+ // @count "$.index[*][?(@.name=='None')].inner.kind.tuple[*]" 0
+ None(),
+
+ // @count "$.index[*][?(@.name=='One')].inner.kind.tuple[*]" 1
+ // @is "$.index[*][?(@.name=='One')].inner.kind.tuple[0]" $1.1.0
+ One(/** 1.1.0*/ bool),
+ // @count "$.index[*][?(@.name=='OneHidden')].inner.kind.tuple[*]" 1
+ // @is "$.index[*][?(@.name=='OneHidden')].inner.kind.tuple[0]" null
+ OneHidden(#[doc(hidden)] bool),
+
+ // @count "$.index[*][?(@.name=='Two')].inner.kind.tuple[*]" 2
+ // @is "$.index[*][?(@.name=='Two')].inner.kind.tuple[0]" $2.1.0
+ // @is "$.index[*][?(@.name=='Two')].inner.kind.tuple[1]" $2.1.1
+ Two(/** 2.1.0*/ bool, /** 2.1.1*/ bool),
+ // @count "$.index[*][?(@.name=='TwoLeftHidden')].inner.kind.tuple[*]" 2
+ // @is "$.index[*][?(@.name=='TwoLeftHidden')].inner.kind.tuple[0]" null
+ // @is "$.index[*][?(@.name=='TwoLeftHidden')].inner.kind.tuple[1]" $2.2.1
+ TwoLeftHidden(#[doc(hidden)] bool, /** 2.2.1*/ bool),
+ // @count "$.index[*][?(@.name=='TwoRightHidden')].inner.kind.tuple[*]" 2
+ // @is "$.index[*][?(@.name=='TwoRightHidden')].inner.kind.tuple[0]" $2.3.0
+ // @is "$.index[*][?(@.name=='TwoRightHidden')].inner.kind.tuple[1]" null
+ TwoRightHidden(/** 2.3.0*/ bool, #[doc(hidden)] bool),
+ // @count "$.index[*][?(@.name=='TwoBothHidden')].inner.kind.tuple[*]" 2
+ // @is "$.index[*][?(@.name=='TwoBothHidden')].inner.kind.tuple[0]" null
+ // @is "$.index[*][?(@.name=='TwoBothHidden')].inner.kind.tuple[1]" null
+ TwoBothHidden(#[doc(hidden)] bool, #[doc(hidden)] bool),
+
+ // @count "$.index[*][?(@.name=='Three1')].inner.kind.tuple[*]" 3
+ // @is "$.index[*][?(@.name=='Three1')].inner.kind.tuple[0]" null
+ // @is "$.index[*][?(@.name=='Three1')].inner.kind.tuple[1]" $3.1.1
+ // @is "$.index[*][?(@.name=='Three1')].inner.kind.tuple[2]" $3.1.2
+ Three1(#[doc(hidden)] bool, /** 3.1.1*/ bool, /** 3.1.2*/ bool),
+ // @count "$.index[*][?(@.name=='Three2')].inner.kind.tuple[*]" 3
+ // @is "$.index[*][?(@.name=='Three2')].inner.kind.tuple[0]" $3.2.0
+ // @is "$.index[*][?(@.name=='Three2')].inner.kind.tuple[1]" null
+ // @is "$.index[*][?(@.name=='Three2')].inner.kind.tuple[2]" $3.2.2
+ Three2(/** 3.2.0*/ bool, #[doc(hidden)] bool, /** 3.2.2*/ bool),
+ // @count "$.index[*][?(@.name=='Three3')].inner.kind.tuple[*]" 3
+ // @is "$.index[*][?(@.name=='Three3')].inner.kind.tuple[0]" $3.3.0
+ // @is "$.index[*][?(@.name=='Three3')].inner.kind.tuple[1]" $3.3.1
+ // @is "$.index[*][?(@.name=='Three3')].inner.kind.tuple[2]" null
+ 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=='1.1.0')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='2.1.0')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='2.1.1')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='2.2.1')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='2.3.0')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='3.1.1')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='3.1.2')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='3.2.0')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='3.2.2')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='3.3.0')].inner" '{"kind": "primitive", "inner": "bool"}'
+// @is "$.index[*][?(@.docs=='3.3.1')].inner" '{"kind": "primitive", "inner": "bool"}'
diff --git a/src/test/rustdoc-json/enums/use_glob.rs b/tests/rustdoc-json/enums/use_glob.rs
index 62b8b832a..62b8b832a 100644
--- a/src/test/rustdoc-json/enums/use_glob.rs
+++ b/tests/rustdoc-json/enums/use_glob.rs
diff --git a/src/test/rustdoc-json/enums/use_variant.rs b/tests/rustdoc-json/enums/use_variant.rs
index 5f0d2b9b1..5f0d2b9b1 100644
--- a/src/test/rustdoc-json/enums/use_variant.rs
+++ b/tests/rustdoc-json/enums/use_variant.rs
diff --git a/src/test/rustdoc-json/enums/use_variant_foreign.rs b/tests/rustdoc-json/enums/use_variant_foreign.rs
index 11bb6ce1f..11bb6ce1f 100644
--- a/src/test/rustdoc-json/enums/use_variant_foreign.rs
+++ b/tests/rustdoc-json/enums/use_variant_foreign.rs
diff --git a/tests/rustdoc-json/enums/variant_struct.rs b/tests/rustdoc-json/enums/variant_struct.rs
new file mode 100644
index 000000000..bc870c502
--- /dev/null
+++ b/tests/rustdoc-json/enums/variant_struct.rs
@@ -0,0 +1,10 @@
+// @is "$.index[*][?(@.name=='EnumStruct')].visibility" \"public\"
+// @is "$.index[*][?(@.name=='EnumStruct')].kind" \"enum\"
+pub enum EnumStruct {
+ // @is "$.index[*][?(@.name=='x')].kind" \"struct_field\"
+ // @set x = "$.index[*][?(@.name=='x')].id"
+ // @is "$.index[*][?(@.name=='y')].kind" \"struct_field\"
+ // @set y = "$.index[*][?(@.name=='y')].id"
+ // @ismany "$.index[*][?(@.name=='VariantS')].inner.kind.struct.fields[*]" $x $y
+ VariantS { x: u32, y: String },
+}
diff --git a/tests/rustdoc-json/enums/variant_tuple_struct.rs b/tests/rustdoc-json/enums/variant_tuple_struct.rs
new file mode 100644
index 000000000..d1207bbfb
--- /dev/null
+++ b/tests/rustdoc-json/enums/variant_tuple_struct.rs
@@ -0,0 +1,10 @@
+// @is "$.index[*][?(@.name=='EnumTupleStruct')].visibility" \"public\"
+// @is "$.index[*][?(@.name=='EnumTupleStruct')].kind" \"enum\"
+pub enum EnumTupleStruct {
+ // @is "$.index[*][?(@.name=='0')].kind" \"struct_field\"
+ // @set f0 = "$.index[*][?(@.name=='0')].id"
+ // @is "$.index[*][?(@.name=='1')].kind" \"struct_field\"
+ // @set f1 = "$.index[*][?(@.name=='1')].id"
+ // @ismany "$.index[*][?(@.name=='VariantA')].inner.kind.tuple[*]" $f0 $f1
+ VariantA(u32, String),
+}
diff --git a/src/test/rustdoc-json/fn_pointer/abi.rs b/tests/rustdoc-json/fn_pointer/abi.rs
index 3c1a453d1..3c1a453d1 100644
--- a/src/test/rustdoc-json/fn_pointer/abi.rs
+++ b/tests/rustdoc-json/fn_pointer/abi.rs
diff --git a/src/test/rustdoc-json/fn_pointer/generics.rs b/tests/rustdoc-json/fn_pointer/generics.rs
index a93b01ac2..a93b01ac2 100644
--- a/src/test/rustdoc-json/fn_pointer/generics.rs
+++ b/tests/rustdoc-json/fn_pointer/generics.rs
diff --git a/src/test/rustdoc-json/fn_pointer/qualifiers.rs b/tests/rustdoc-json/fn_pointer/qualifiers.rs
index bd65bb3ee..bd65bb3ee 100644
--- a/src/test/rustdoc-json/fn_pointer/qualifiers.rs
+++ b/tests/rustdoc-json/fn_pointer/qualifiers.rs
diff --git a/src/test/rustdoc-json/fns/abi.rs b/tests/rustdoc-json/fns/abi.rs
index 0e8b78bc0..0e8b78bc0 100644
--- a/src/test/rustdoc-json/fns/abi.rs
+++ b/tests/rustdoc-json/fns/abi.rs
diff --git a/src/test/rustdoc-json/fns/async_return.rs b/tests/rustdoc-json/fns/async_return.rs
index b89781ca9..b89781ca9 100644
--- a/src/test/rustdoc-json/fns/async_return.rs
+++ b/tests/rustdoc-json/fns/async_return.rs
diff --git a/src/test/rustdoc-json/fns/generic_args.rs b/tests/rustdoc-json/fns/generic_args.rs
index eec295efe..eec295efe 100644
--- a/src/test/rustdoc-json/fns/generic_args.rs
+++ b/tests/rustdoc-json/fns/generic_args.rs
diff --git a/src/test/rustdoc-json/fns/generic_returns.rs b/tests/rustdoc-json/fns/generic_returns.rs
index a9bc2d5d7..a9bc2d5d7 100644
--- a/src/test/rustdoc-json/fns/generic_returns.rs
+++ b/tests/rustdoc-json/fns/generic_returns.rs
diff --git a/src/test/rustdoc-json/fns/generics.rs b/tests/rustdoc-json/fns/generics.rs
index 7b70ff1df..7b70ff1df 100644
--- a/src/test/rustdoc-json/fns/generics.rs
+++ b/tests/rustdoc-json/fns/generics.rs
diff --git a/src/test/rustdoc-json/fns/pattern_arg.rs b/tests/rustdoc-json/fns/pattern_arg.rs
index 32b7da0fa..32b7da0fa 100644
--- a/src/test/rustdoc-json/fns/pattern_arg.rs
+++ b/tests/rustdoc-json/fns/pattern_arg.rs
diff --git a/src/test/rustdoc-json/fns/qualifiers.rs b/tests/rustdoc-json/fns/qualifiers.rs
index 7ff542900..7ff542900 100644
--- a/src/test/rustdoc-json/fns/qualifiers.rs
+++ b/tests/rustdoc-json/fns/qualifiers.rs
diff --git a/src/test/rustdoc-json/fns/return_type_alias.rs b/tests/rustdoc-json/fns/return_type_alias.rs
index 2578bb49a..2578bb49a 100644
--- a/src/test/rustdoc-json/fns/return_type_alias.rs
+++ b/tests/rustdoc-json/fns/return_type_alias.rs
diff --git a/src/test/rustdoc-json/generic-associated-types/gats.rs b/tests/rustdoc-json/generic-associated-types/gats.rs
index e5809783a..e5809783a 100644
--- a/src/test/rustdoc-json/generic-associated-types/gats.rs
+++ b/tests/rustdoc-json/generic-associated-types/gats.rs
diff --git a/src/test/rustdoc-json/generic_impl.rs b/tests/rustdoc-json/generic_impl.rs
index 31f41d0f3..31f41d0f3 100644
--- a/src/test/rustdoc-json/generic_impl.rs
+++ b/tests/rustdoc-json/generic_impl.rs
diff --git a/src/test/rustdoc-json/glob_import.rs b/tests/rustdoc-json/glob_import.rs
index 00051b121..00051b121 100644
--- a/src/test/rustdoc-json/glob_import.rs
+++ b/tests/rustdoc-json/glob_import.rs
diff --git a/src/test/rustdoc-json/impls/auto.rs b/tests/rustdoc-json/impls/auto.rs
index 50d852414..50d852414 100644
--- a/src/test/rustdoc-json/impls/auto.rs
+++ b/tests/rustdoc-json/impls/auto.rs
diff --git a/src/test/rustdoc-json/impls/auxiliary/foreign_struct.rs b/tests/rustdoc-json/impls/auxiliary/foreign_struct.rs
index 832d0fce5..832d0fce5 100644
--- a/src/test/rustdoc-json/impls/auxiliary/foreign_struct.rs
+++ b/tests/rustdoc-json/impls/auxiliary/foreign_struct.rs
diff --git a/src/test/rustdoc-json/impls/auxiliary/foreign_trait.rs b/tests/rustdoc-json/impls/auxiliary/foreign_trait.rs
index 2c81bee61..2c81bee61 100644
--- a/src/test/rustdoc-json/impls/auxiliary/foreign_trait.rs
+++ b/tests/rustdoc-json/impls/auxiliary/foreign_trait.rs
diff --git a/src/test/rustdoc-json/impls/blanket_with_local.rs b/tests/rustdoc-json/impls/blanket_with_local.rs
index 2fb4a84b9..2fb4a84b9 100644
--- a/src/test/rustdoc-json/impls/blanket_with_local.rs
+++ b/tests/rustdoc-json/impls/blanket_with_local.rs
diff --git a/src/test/rustdoc-json/impls/foreign_for_local.rs b/tests/rustdoc-json/impls/foreign_for_local.rs
index 290c2d571..290c2d571 100644
--- a/src/test/rustdoc-json/impls/foreign_for_local.rs
+++ b/tests/rustdoc-json/impls/foreign_for_local.rs
diff --git a/src/test/rustdoc-json/impls/import_from_private.rs b/tests/rustdoc-json/impls/import_from_private.rs
index fa88b6113..fa88b6113 100644
--- a/src/test/rustdoc-json/impls/import_from_private.rs
+++ b/tests/rustdoc-json/impls/import_from_private.rs
diff --git a/src/test/rustdoc-json/impls/local_for_foreign.rs b/tests/rustdoc-json/impls/local_for_foreign.rs
index 74f2f08b5..74f2f08b5 100644
--- a/src/test/rustdoc-json/impls/local_for_foreign.rs
+++ b/tests/rustdoc-json/impls/local_for_foreign.rs
diff --git a/src/test/rustdoc-json/impls/local_for_local.rs b/tests/rustdoc-json/impls/local_for_local.rs
index 93dedb7ec..93dedb7ec 100644
--- a/src/test/rustdoc-json/impls/local_for_local.rs
+++ b/tests/rustdoc-json/impls/local_for_local.rs
diff --git a/src/test/rustdoc-json/impls/local_for_local_primitive.rs b/tests/rustdoc-json/impls/local_for_local_primitive.rs
index 38e7e2658..38e7e2658 100644
--- a/src/test/rustdoc-json/impls/local_for_local_primitive.rs
+++ b/tests/rustdoc-json/impls/local_for_local_primitive.rs
diff --git a/src/test/rustdoc-json/impls/local_for_primitive.rs b/tests/rustdoc-json/impls/local_for_primitive.rs
index 7702a526f..7702a526f 100644
--- a/src/test/rustdoc-json/impls/local_for_primitive.rs
+++ b/tests/rustdoc-json/impls/local_for_primitive.rs
diff --git a/src/test/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs b/tests/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs
index bfe85f59e..bfe85f59e 100644
--- a/src/test/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs
+++ b/tests/rustdoc-json/intra-doc-links/auxiliary/enum_variant_in_trait_method.rs
diff --git a/src/test/rustdoc-json/intra-doc-links/foreign_variant.rs b/tests/rustdoc-json/intra-doc-links/foreign_variant.rs
index e29682313..e29682313 100644
--- a/src/test/rustdoc-json/intra-doc-links/foreign_variant.rs
+++ b/tests/rustdoc-json/intra-doc-links/foreign_variant.rs
diff --git a/src/test/rustdoc-json/intra-doc-links/non_page.rs b/tests/rustdoc-json/intra-doc-links/non_page.rs
index 73c5334bb..73c5334bb 100644
--- a/src/test/rustdoc-json/intra-doc-links/non_page.rs
+++ b/tests/rustdoc-json/intra-doc-links/non_page.rs
diff --git a/src/test/rustdoc-json/intra-doc-links/user_written.rs b/tests/rustdoc-json/intra-doc-links/user_written.rs
index 6871dfea4..6871dfea4 100644
--- a/src/test/rustdoc-json/intra-doc-links/user_written.rs
+++ b/tests/rustdoc-json/intra-doc-links/user_written.rs
diff --git a/src/test/rustdoc-json/keyword.rs b/tests/rustdoc-json/keyword.rs
index 3446b212c..3446b212c 100644
--- a/src/test/rustdoc-json/keyword.rs
+++ b/tests/rustdoc-json/keyword.rs
diff --git a/src/test/rustdoc-json/lifetime/longest.rs b/tests/rustdoc-json/lifetime/longest.rs
index 326dab8e5..326dab8e5 100644
--- a/src/test/rustdoc-json/lifetime/longest.rs
+++ b/tests/rustdoc-json/lifetime/longest.rs
diff --git a/src/test/rustdoc-json/lifetime/outlives.rs b/tests/rustdoc-json/lifetime/outlives.rs
index e15a533ef..e15a533ef 100644
--- a/src/test/rustdoc-json/lifetime/outlives.rs
+++ b/tests/rustdoc-json/lifetime/outlives.rs
diff --git a/src/test/rustdoc-json/methods/abi.rs b/tests/rustdoc-json/methods/abi.rs
index 4c97d97ce..4c97d97ce 100644
--- a/src/test/rustdoc-json/methods/abi.rs
+++ b/tests/rustdoc-json/methods/abi.rs
diff --git a/src/test/rustdoc-json/methods/qualifiers.rs b/tests/rustdoc-json/methods/qualifiers.rs
index b9a5e5601..b9a5e5601 100644
--- a/src/test/rustdoc-json/methods/qualifiers.rs
+++ b/tests/rustdoc-json/methods/qualifiers.rs
diff --git a/src/test/rustdoc-json/nested.rs b/tests/rustdoc-json/nested.rs
index ee2d2efa9..ee2d2efa9 100644
--- a/src/test/rustdoc-json/nested.rs
+++ b/tests/rustdoc-json/nested.rs
diff --git a/src/test/rustdoc-json/output_generics.rs b/tests/rustdoc-json/output_generics.rs
index 04b1a358f..04b1a358f 100644
--- a/src/test/rustdoc-json/output_generics.rs
+++ b/tests/rustdoc-json/output_generics.rs
diff --git a/tests/rustdoc-json/primitives/local_primitive.rs b/tests/rustdoc-json/primitives/local_primitive.rs
new file mode 100644
index 000000000..f27e6a2ad
--- /dev/null
+++ b/tests/rustdoc-json/primitives/local_primitive.rs
@@ -0,0 +1,21 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/104064>.
+
+#![feature(no_core)]
+#![feature(rustc_attrs)]
+#![feature(rustdoc_internals)]
+#![no_core]
+#![rustc_coherence_is_core]
+
+//! Link to [i32][prim@i32] [i64][prim@i64]
+
+#[doc(primitive = "i32")]
+mod prim_i32 {}
+
+// @set local_i32 = "$.index[*][?(@.name=='i32')].id"
+
+// @has "$.index[*][?(@.name=='local_primitive')]"
+// @ismany "$.index[*][?(@.name=='local_primitive')].inner.items[*]" $local_i32
+// @is "$.index[*][?(@.name=='local_primitive')].links['prim@i32']" $local_i32
+
+// Let's ensure the `prim_i32` module isn't present in the output JSON:
+// @!has "$.index[*][?(@.name=='prim_i32')]"
diff --git a/src/test/rustdoc-json/primitives/primitive_impls.rs b/tests/rustdoc-json/primitives/primitive_impls.rs
index 1fc937406..1fc937406 100644
--- a/src/test/rustdoc-json/primitives/primitive_impls.rs
+++ b/tests/rustdoc-json/primitives/primitive_impls.rs
diff --git a/src/test/rustdoc-json/primitives/primitive_overloading.rs b/tests/rustdoc-json/primitives/primitive_overloading.rs
index 56b35cd14..56b35cd14 100644
--- a/src/test/rustdoc-json/primitives/primitive_overloading.rs
+++ b/tests/rustdoc-json/primitives/primitive_overloading.rs
diff --git a/src/test/rustdoc-json/primitives/primitive_type.rs b/tests/rustdoc-json/primitives/primitive_type.rs
index 8024044bc..8024044bc 100644
--- a/src/test/rustdoc-json/primitives/primitive_type.rs
+++ b/tests/rustdoc-json/primitives/primitive_type.rs
diff --git a/src/test/rustdoc-json/primitives/use_primitive.rs b/tests/rustdoc-json/primitives/use_primitive.rs
index e22927374..e22927374 100644
--- a/src/test/rustdoc-json/primitives/use_primitive.rs
+++ b/tests/rustdoc-json/primitives/use_primitive.rs
diff --git a/src/test/rustdoc-json/reexport/auxiliary/pub-struct.rs b/tests/rustdoc-json/reexport/auxiliary/pub-struct.rs
index 4a835673a..4a835673a 100644
--- a/src/test/rustdoc-json/reexport/auxiliary/pub-struct.rs
+++ b/tests/rustdoc-json/reexport/auxiliary/pub-struct.rs
diff --git a/src/test/rustdoc-json/reexport/auxiliary/trait_with_docs.rs b/tests/rustdoc-json/reexport/auxiliary/trait_with_docs.rs
index 1e87966b2..1e87966b2 100644
--- a/src/test/rustdoc-json/reexport/auxiliary/trait_with_docs.rs
+++ b/tests/rustdoc-json/reexport/auxiliary/trait_with_docs.rs
diff --git a/src/test/rustdoc-json/reexport/export_extern_crate_as_self.rs b/tests/rustdoc-json/reexport/export_extern_crate_as_self.rs
index f076feb71..f076feb71 100644
--- a/src/test/rustdoc-json/reexport/export_extern_crate_as_self.rs
+++ b/tests/rustdoc-json/reexport/export_extern_crate_as_self.rs
diff --git a/src/test/rustdoc-json/reexport/glob_collision.rs b/tests/rustdoc-json/reexport/glob_collision.rs
index f91144dbf..f91144dbf 100644
--- a/src/test/rustdoc-json/reexport/glob_collision.rs
+++ b/tests/rustdoc-json/reexport/glob_collision.rs
diff --git a/src/test/rustdoc-json/reexport/glob_empty_mod.rs b/tests/rustdoc-json/reexport/glob_empty_mod.rs
index da6822835..da6822835 100644
--- a/src/test/rustdoc-json/reexport/glob_empty_mod.rs
+++ b/tests/rustdoc-json/reexport/glob_empty_mod.rs
diff --git a/src/test/rustdoc-json/reexport/glob_extern.rs b/tests/rustdoc-json/reexport/glob_extern.rs
index 7a1e8c11f..7a1e8c11f 100644
--- a/src/test/rustdoc-json/reexport/glob_extern.rs
+++ b/tests/rustdoc-json/reexport/glob_extern.rs
diff --git a/src/test/rustdoc-json/reexport/glob_private.rs b/tests/rustdoc-json/reexport/glob_private.rs
index 3a83a2081..3a83a2081 100644
--- a/src/test/rustdoc-json/reexport/glob_private.rs
+++ b/tests/rustdoc-json/reexport/glob_private.rs
diff --git a/src/test/rustdoc-json/reexport/in_root_and_mod.rs b/tests/rustdoc-json/reexport/in_root_and_mod.rs
index 7b97ebf21..7b97ebf21 100644
--- a/src/test/rustdoc-json/reexport/in_root_and_mod.rs
+++ b/tests/rustdoc-json/reexport/in_root_and_mod.rs
diff --git a/src/test/rustdoc-json/reexport/in_root_and_mod_pub.rs b/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs
index f6d932d92..f6d932d92 100644
--- a/src/test/rustdoc-json/reexport/in_root_and_mod_pub.rs
+++ b/tests/rustdoc-json/reexport/in_root_and_mod_pub.rs
diff --git a/src/test/rustdoc-json/reexport/macro.rs b/tests/rustdoc-json/reexport/macro.rs
index b4882100f..b4882100f 100644
--- a/src/test/rustdoc-json/reexport/macro.rs
+++ b/tests/rustdoc-json/reexport/macro.rs
diff --git a/src/test/rustdoc-json/reexport/mod_not_included.rs b/tests/rustdoc-json/reexport/mod_not_included.rs
index 7b7600ef2..7b7600ef2 100644
--- a/src/test/rustdoc-json/reexport/mod_not_included.rs
+++ b/tests/rustdoc-json/reexport/mod_not_included.rs
diff --git a/src/test/rustdoc-json/reexport/private_twice_one_inline.rs b/tests/rustdoc-json/reexport/private_twice_one_inline.rs
index 687a3b2ac..687a3b2ac 100644
--- a/src/test/rustdoc-json/reexport/private_twice_one_inline.rs
+++ b/tests/rustdoc-json/reexport/private_twice_one_inline.rs
diff --git a/src/test/rustdoc-json/reexport/private_two_names.rs b/tests/rustdoc-json/reexport/private_two_names.rs
index 9858538a9..9858538a9 100644
--- a/src/test/rustdoc-json/reexport/private_two_names.rs
+++ b/tests/rustdoc-json/reexport/private_two_names.rs
diff --git a/tests/rustdoc-json/reexport/pub_use_doc_hidden.rs b/tests/rustdoc-json/reexport/pub_use_doc_hidden.rs
new file mode 100644
index 000000000..a2a25d084
--- /dev/null
+++ b/tests/rustdoc-json/reexport/pub_use_doc_hidden.rs
@@ -0,0 +1,15 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/106379>
+
+#![feature(no_core)]
+#![no_core]
+
+mod repeat_n {
+ #[doc(hidden)]
+ pub struct RepeatN {}
+}
+
+pub use repeat_n::RepeatN;
+
+// @count "$.index[*][?(@.name=='pub_use_doc_hidden')].inner.items[*]" 0
+// @!has "$.index[*][?(@.kind=='struct')]"
+// @!has "$.index[*][?(@.kind=='import')]"
diff --git a/src/test/rustdoc-json/reexport/reexport_method_from_private_module.rs b/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs
index 239b1a23b..239b1a23b 100644
--- a/src/test/rustdoc-json/reexport/reexport_method_from_private_module.rs
+++ b/tests/rustdoc-json/reexport/reexport_method_from_private_module.rs
diff --git a/src/test/rustdoc-json/reexport/rename_private.rs b/tests/rustdoc-json/reexport/rename_private.rs
index 8fd850f9b..8fd850f9b 100644
--- a/src/test/rustdoc-json/reexport/rename_private.rs
+++ b/tests/rustdoc-json/reexport/rename_private.rs
diff --git a/src/test/rustdoc-json/reexport/rename_public.rs b/tests/rustdoc-json/reexport/rename_public.rs
index e30907fe2..e30907fe2 100644
--- a/src/test/rustdoc-json/reexport/rename_public.rs
+++ b/tests/rustdoc-json/reexport/rename_public.rs
diff --git a/src/test/rustdoc-json/reexport/same_type_reexported_more_than_once.rs b/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs
index 880dbdc44..880dbdc44 100644
--- a/src/test/rustdoc-json/reexport/same_type_reexported_more_than_once.rs
+++ b/tests/rustdoc-json/reexport/same_type_reexported_more_than_once.rs
diff --git a/src/test/rustdoc-json/reexport/simple_private.rs b/tests/rustdoc-json/reexport/simple_private.rs
index d058ce059..d058ce059 100644
--- a/src/test/rustdoc-json/reexport/simple_private.rs
+++ b/tests/rustdoc-json/reexport/simple_private.rs
diff --git a/src/test/rustdoc-json/reexport/simple_public.rs b/tests/rustdoc-json/reexport/simple_public.rs
index e64a0dcb7..e64a0dcb7 100644
--- a/src/test/rustdoc-json/reexport/simple_public.rs
+++ b/tests/rustdoc-json/reexport/simple_public.rs
diff --git a/src/test/rustdoc-json/reexport/synthesize_trait_with_docs.rs b/tests/rustdoc-json/reexport/synthesize_trait_with_docs.rs
index 25a7c08d6..25a7c08d6 100644
--- a/src/test/rustdoc-json/reexport/synthesize_trait_with_docs.rs
+++ b/tests/rustdoc-json/reexport/synthesize_trait_with_docs.rs
diff --git a/src/test/rustdoc-json/return_private.rs b/tests/rustdoc-json/return_private.rs
index a8d1fae30..a8d1fae30 100644
--- a/src/test/rustdoc-json/return_private.rs
+++ b/tests/rustdoc-json/return_private.rs
diff --git a/src/test/rustdoc-json/stripped_modules.rs b/tests/rustdoc-json/stripped_modules.rs
index d2664b49e..d2664b49e 100644
--- a/src/test/rustdoc-json/stripped_modules.rs
+++ b/tests/rustdoc-json/stripped_modules.rs
diff --git a/src/test/rustdoc-json/structs/plain_all_pub.rs b/tests/rustdoc-json/structs/plain_all_pub.rs
index b86ab93c2..b86ab93c2 100644
--- a/src/test/rustdoc-json/structs/plain_all_pub.rs
+++ b/tests/rustdoc-json/structs/plain_all_pub.rs
diff --git a/src/test/rustdoc-json/structs/plain_doc_hidden.rs b/tests/rustdoc-json/structs/plain_doc_hidden.rs
index 7800b55a4..7800b55a4 100644
--- a/src/test/rustdoc-json/structs/plain_doc_hidden.rs
+++ b/tests/rustdoc-json/structs/plain_doc_hidden.rs
diff --git a/src/test/rustdoc-json/structs/plain_empty.rs b/tests/rustdoc-json/structs/plain_empty.rs
index 1d01b8bc1..1d01b8bc1 100644
--- a/src/test/rustdoc-json/structs/plain_empty.rs
+++ b/tests/rustdoc-json/structs/plain_empty.rs
diff --git a/src/test/rustdoc-json/structs/plain_pub_priv.rs b/tests/rustdoc-json/structs/plain_pub_priv.rs
index 9b771224d..9b771224d 100644
--- a/src/test/rustdoc-json/structs/plain_pub_priv.rs
+++ b/tests/rustdoc-json/structs/plain_pub_priv.rs
diff --git a/src/test/rustdoc-json/structs/tuple.rs b/tests/rustdoc-json/structs/tuple.rs
index 6bdb753ee..6bdb753ee 100644
--- a/src/test/rustdoc-json/structs/tuple.rs
+++ b/tests/rustdoc-json/structs/tuple.rs
diff --git a/src/test/rustdoc-json/structs/tuple_empty.rs b/tests/rustdoc-json/structs/tuple_empty.rs
index 0ad6a8954..0ad6a8954 100644
--- a/src/test/rustdoc-json/structs/tuple_empty.rs
+++ b/tests/rustdoc-json/structs/tuple_empty.rs
diff --git a/src/test/rustdoc-json/structs/tuple_pub_priv.rs b/tests/rustdoc-json/structs/tuple_pub_priv.rs
index 9d5a1d1c8..9d5a1d1c8 100644
--- a/src/test/rustdoc-json/structs/tuple_pub_priv.rs
+++ b/tests/rustdoc-json/structs/tuple_pub_priv.rs
diff --git a/src/test/rustdoc-json/structs/unit.rs b/tests/rustdoc-json/structs/unit.rs
index 265709717..265709717 100644
--- a/src/test/rustdoc-json/structs/unit.rs
+++ b/tests/rustdoc-json/structs/unit.rs
diff --git a/src/test/rustdoc-json/structs/with_generics.rs b/tests/rustdoc-json/structs/with_generics.rs
index 00474800a..00474800a 100644
--- a/src/test/rustdoc-json/structs/with_generics.rs
+++ b/tests/rustdoc-json/structs/with_generics.rs
diff --git a/src/test/rustdoc-json/structs/with_primitives.rs b/tests/rustdoc-json/structs/with_primitives.rs
index 9c5a37f39..9c5a37f39 100644
--- a/src/test/rustdoc-json/structs/with_primitives.rs
+++ b/tests/rustdoc-json/structs/with_primitives.rs
diff --git a/src/test/rustdoc-json/traits/has_body.rs b/tests/rustdoc-json/traits/has_body.rs
index a57cb97d4..a57cb97d4 100644
--- a/src/test/rustdoc-json/traits/has_body.rs
+++ b/tests/rustdoc-json/traits/has_body.rs
diff --git a/src/test/rustdoc-json/traits/implementors.rs b/tests/rustdoc-json/traits/implementors.rs
index db3fe5df7..db3fe5df7 100644
--- a/src/test/rustdoc-json/traits/implementors.rs
+++ b/tests/rustdoc-json/traits/implementors.rs
diff --git a/src/test/rustdoc-json/traits/supertrait.rs b/tests/rustdoc-json/traits/supertrait.rs
index 4048fdd74..4048fdd74 100644
--- a/src/test/rustdoc-json/traits/supertrait.rs
+++ b/tests/rustdoc-json/traits/supertrait.rs
diff --git a/src/test/rustdoc-json/traits/trait_alias.rs b/tests/rustdoc-json/traits/trait_alias.rs
index 35db9296c..35db9296c 100644
--- a/src/test/rustdoc-json/traits/trait_alias.rs
+++ b/tests/rustdoc-json/traits/trait_alias.rs
diff --git a/src/test/rustdoc-json/traits/uses_extern_trait.rs b/tests/rustdoc-json/traits/uses_extern_trait.rs
index 55a51f739..55a51f739 100644
--- a/src/test/rustdoc-json/traits/uses_extern_trait.rs
+++ b/tests/rustdoc-json/traits/uses_extern_trait.rs
diff --git a/src/test/rustdoc-json/type/dyn.rs b/tests/rustdoc-json/type/dyn.rs
index eaf249252..eaf249252 100644
--- a/src/test/rustdoc-json/type/dyn.rs
+++ b/tests/rustdoc-json/type/dyn.rs
diff --git a/src/test/rustdoc-json/type/extern.rs b/tests/rustdoc-json/type/extern.rs
index d287d5ebe..d287d5ebe 100644
--- a/src/test/rustdoc-json/type/extern.rs
+++ b/tests/rustdoc-json/type/extern.rs
diff --git a/src/test/rustdoc-json/type/fn_lifetime.rs b/tests/rustdoc-json/type/fn_lifetime.rs
index d7216ec76..d7216ec76 100644
--- a/src/test/rustdoc-json/type/fn_lifetime.rs
+++ b/tests/rustdoc-json/type/fn_lifetime.rs
diff --git a/src/test/rustdoc-json/type/generic_default.rs b/tests/rustdoc-json/type/generic_default.rs
index 9c6d4540b..9c6d4540b 100644
--- a/src/test/rustdoc-json/type/generic_default.rs
+++ b/tests/rustdoc-json/type/generic_default.rs
diff --git a/src/test/rustdoc-json/type/hrtb.rs b/tests/rustdoc-json/type/hrtb.rs
index 2c4ee00d4..2c4ee00d4 100644
--- a/src/test/rustdoc-json/type/hrtb.rs
+++ b/tests/rustdoc-json/type/hrtb.rs
diff --git a/src/test/rustdoc-json/unions/impl.rs b/tests/rustdoc-json/unions/impl.rs
index 4454a69ec..4454a69ec 100644
--- a/src/test/rustdoc-json/unions/impl.rs
+++ b/tests/rustdoc-json/unions/impl.rs
diff --git a/src/test/rustdoc-json/unions/union.rs b/tests/rustdoc-json/unions/union.rs
index c9df2b81c..c9df2b81c 100644
--- a/src/test/rustdoc-json/unions/union.rs
+++ b/tests/rustdoc-json/unions/union.rs