Rollup merge of #138763 - aDotInTheVoid:two-years-later, r=GuillaumeGomez

jsondocck: Replace `jsonpath_lib` with `jsonpath-rust`

The current jsonpath implementation we use isn't spec-compliant, and is buggy. See https://github.com/freestrings/jsonpath/issues/91

To solve it, it's replaced with https://github.com/besok/jsonpath-rust. This is spec-compiant, and doesn't have a really awkward bug we need to always dance around.

Unfortunately, this requires rewriting almost every test, as the behaviour of `[?(```@`,``` which is *extremely* common was changed. (But the new behaviour makes way more sense, and isn't buggy with tripply nested selectors)

Unblocks #110406. Makes #100515 much easier as we don't need to explain the broken JSONPath implementation

Best reviewed commit-by-commit. The first does the replacement. The next two rewrite the test-suite mechanically. The last rewrites the test-suite by hand.

r? ```@GuillaumeGomez```
This commit is contained in:
Matthias Krüger 2025-03-22 11:59:19 +01:00 committed by GitHub
commit a4c0173d12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
155 changed files with 1259 additions and 1192 deletions

View file

@ -1925,7 +1925,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"fs-err", "fs-err",
"getopts", "getopts",
"jsonpath_lib", "jsonpath-rust",
"regex", "regex",
"serde_json", "serde_json",
"shlex", "shlex",
@ -1945,14 +1945,16 @@ dependencies = [
] ]
[[package]] [[package]]
name = "jsonpath_lib" name = "jsonpath-rust"
version = "0.3.0" version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" checksum = "9b0231bb404a6cd6c8f0ab41b907049063a089fc02aa7636cc5cd9a4d87364c9"
dependencies = [ dependencies = [
"log", "pest",
"serde", "pest_derive",
"regex",
"serde_json", "serde_json",
"thiserror 2.0.11",
] ]
[[package]] [[package]]
@ -2645,6 +2647,51 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "pest"
version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc"
dependencies = [
"memchr",
"thiserror 2.0.11",
"ucd-trie",
]
[[package]]
name = "pest_derive"
version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e"
dependencies = [
"pest",
"pest_generator",
]
[[package]]
name = "pest_generator"
version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
"syn 2.0.96",
]
[[package]]
name = "pest_meta"
version = "2.7.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea"
dependencies = [
"once_cell",
"pest",
"sha2",
]
[[package]] [[package]]
name = "phf" name = "phf"
version = "0.11.3" version = "0.11.3"
@ -4780,7 +4827,6 @@ version = "1.0.135"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9"
dependencies = [ dependencies = [
"indexmap",
"itoa", "itoa",
"memchr", "memchr",
"ryu", "ryu",
@ -5486,6 +5532,12 @@ dependencies = [
"regex-lite", "regex-lite",
] ]
[[package]]
name = "ucd-trie"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
[[package]] [[package]]
name = "ui_test" name = "ui_test"
version = "0.28.0" version = "0.28.0"

View file

@ -6,18 +6,25 @@ pub static CRATES: &[&str] = &[
"annotate-snippets", "annotate-snippets",
"anstyle", "anstyle",
"basic-toml", "basic-toml",
"block-buffer",
"bumpalo", "bumpalo",
"cfg-if",
"cpufeatures",
"crypto-common",
"darling", "darling",
"darling_core", "darling_core",
"derive_builder_core", "derive_builder_core",
"digest",
"fluent-bundle", "fluent-bundle",
"fluent-langneg", "fluent-langneg",
"fluent-syntax", "fluent-syntax",
"fnv", "fnv",
"generic-array",
"heck", "heck",
"ident_case", "ident_case",
"intl-memoizer", "intl-memoizer",
"intl_pluralrules", "intl_pluralrules",
"libc",
"log", "log",
"memchr", "memchr",
"mime", "mime",
@ -25,12 +32,17 @@ pub static CRATES: &[&str] = &[
"minimal-lexical", "minimal-lexical",
"nom", "nom",
"num-conv", "num-conv",
"once_cell",
"pest",
"pest_generator",
"pest_meta",
"proc-macro2", "proc-macro2",
"quote", "quote",
"rinja_parser", "rinja_parser",
"rustc-hash", "rustc-hash",
"self_cell", "self_cell",
"serde", "serde",
"sha2",
"smallvec", "smallvec",
"stable_deref_trait", "stable_deref_trait",
"strsim", "strsim",
@ -40,12 +52,15 @@ pub static CRATES: &[&str] = &[
"time-core", "time-core",
"tinystr", "tinystr",
"type-map", "type-map",
"typenum",
"ucd-trie",
"unic-langid", "unic-langid",
"unic-langid-impl", "unic-langid-impl",
"unic-langid-macros", "unic-langid-macros",
"unicase", "unicase",
"unicode-ident", "unicode-ident",
"unicode-width", "unicode-width",
"version_check",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-macro-support", "wasm-bindgen-macro-support",
"wasm-bindgen-shared", "wasm-bindgen-shared",

View file

@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
jsonpath_lib = "0.3" jsonpath-rust = "1.0.0"
getopts = "0.2" getopts = "0.2"
regex = "1.4" regex = "1.4"
shlex = "1.0" shlex = "1.0"

View file

@ -30,6 +30,6 @@ impl Cache {
// FIXME: Make this failible, so jsonpath syntax error has line number. // FIXME: Make this failible, so jsonpath syntax error has line number.
pub fn select(&self, path: &str) -> Vec<&Value> { pub fn select(&self, path: &str) -> Vec<&Value> {
jsonpath_lib::select(&self.value, path).unwrap() jsonpath_rust::query::js_path_vals(path, &self.value).unwrap()
} }
} }

View file

@ -3,32 +3,32 @@
pub struct Simple; pub struct Simple;
impl Simple { impl Simple {
//@ has "$.index[*][?(@.name=='CONSTANT')].inner.assoc_const" //@ has "$.index[?(@.name=='CONSTANT')].inner.assoc_const"
pub const CONSTANT: usize = 0; pub const CONSTANT: usize = 0;
} }
pub trait EasyToImpl { pub trait EasyToImpl {
//@ has "$.index[*][?(@.docs=='ToDeclare trait')].inner.assoc_type" //@ 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.type" null
//@ is "$.index[*][?(@.docs=='ToDeclare trait')].inner.assoc_type.bounds" [] //@ is "$.index[?(@.docs=='ToDeclare trait')].inner.assoc_type.bounds" []
/// ToDeclare trait /// ToDeclare trait
type ToDeclare; type ToDeclare;
//@ has "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const" //@ 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.value" null
//@ is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const.type.primitive" '"usize"' //@ is "$.index[?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const.type.primitive" '"usize"'
/// AN_ATTRIBUTE trait /// AN_ATTRIBUTE trait
const AN_ATTRIBUTE: usize; const AN_ATTRIBUTE: usize;
} }
impl EasyToImpl for Simple { impl EasyToImpl for Simple {
//@ has "$.index[*][?(@.docs=='ToDeclare impl')].inner.assoc_type" //@ has "$.index[?(@.docs=='ToDeclare impl')].inner.assoc_type"
//@ is "$.index[*][?(@.docs=='ToDeclare impl')].inner.assoc_type.type.primitive" \"usize\" //@ is "$.index[?(@.docs=='ToDeclare impl')].inner.assoc_type.type.primitive" \"usize\"
/// ToDeclare impl /// ToDeclare impl
type ToDeclare = usize; type ToDeclare = usize;
//@ has "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const" //@ 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.type.primitive" \"usize\"
//@ is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const.value" \"12\" //@ is "$.index[?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const.value" \"12\"
/// AN_ATTRIBUTE impl /// AN_ATTRIBUTE impl
const AN_ATTRIBUTE: usize = 12; const AN_ATTRIBUTE: usize = 12;
} }

View file

@ -1,9 +1,9 @@
// Regression test for <https://github.com/rust-lang/rust/issues/98547>. // Regression test for <https://github.com/rust-lang/rust/issues/98547>.
//@ has "$.index[*][?(@.name=='Trait')]" //@ has "$.index[?(@.name=='Trait')]"
//@ has "$.index[*][?(@.name=='AssocType')]" //@ has "$.index[?(@.name=='AssocType')]"
//@ has "$.index[*][?(@.name=='S')]" //@ has "$.index[?(@.name=='S')]"
//@ has "$.index[*][?(@.name=='S2')]" //@ has "$.index[?(@.name=='S2')]"
pub trait Trait { pub trait Trait {
type AssocType; type AssocType;

View file

@ -1,38 +1,38 @@
//@ is "$.index[*][?(@.name=='not')].attrs" [] //@ is "$.index[?(@.name=='not')].attrs" []
//@ is "$.index[*][?(@.name=='not')].deprecation" null //@ is "$.index[?(@.name=='not')].deprecation" null
pub fn not() {} pub fn not() {}
//@ is "$.index[*][?(@.name=='raw')].attrs" [] //@ is "$.index[?(@.name=='raw')].attrs" []
//@ is "$.index[*][?(@.name=='raw')].deprecation" '{"since": null, "note": null}' //@ is "$.index[?(@.name=='raw')].deprecation" '{"since": null, "note": null}'
#[deprecated] #[deprecated]
pub fn raw() {} pub fn raw() {}
//@ is "$.index[*][?(@.name=='equals_string')].attrs" [] //@ is "$.index[?(@.name=='equals_string')].attrs" []
//@ is "$.index[*][?(@.name=='equals_string')].deprecation" '{"since": null, "note": "here is a reason"}' //@ is "$.index[?(@.name=='equals_string')].deprecation" '{"since": null, "note": "here is a reason"}'
#[deprecated = "here is a reason"] #[deprecated = "here is a reason"]
pub fn equals_string() {} pub fn equals_string() {}
//@ is "$.index[*][?(@.name=='since')].attrs" [] //@ is "$.index[?(@.name=='since')].attrs" []
//@ is "$.index[*][?(@.name=='since')].deprecation" '{"since": "yoinks ago", "note": null}' //@ is "$.index[?(@.name=='since')].deprecation" '{"since": "yoinks ago", "note": null}'
#[deprecated(since = "yoinks ago")] #[deprecated(since = "yoinks ago")]
pub fn since() {} pub fn since() {}
//@ is "$.index[*][?(@.name=='note')].attrs" [] //@ is "$.index[?(@.name=='note')].attrs" []
//@ is "$.index[*][?(@.name=='note')].deprecation" '{"since": null, "note": "7"}' //@ is "$.index[?(@.name=='note')].deprecation" '{"since": null, "note": "7"}'
#[deprecated(note = "7")] #[deprecated(note = "7")]
pub fn note() {} pub fn note() {}
//@ is "$.index[*][?(@.name=='since_and_note')].attrs" [] //@ is "$.index[?(@.name=='since_and_note')].attrs" []
//@ is "$.index[*][?(@.name=='since_and_note')].deprecation" '{"since": "tomorrow", "note": "sorry"}' //@ is "$.index[?(@.name=='since_and_note')].deprecation" '{"since": "tomorrow", "note": "sorry"}'
#[deprecated(since = "tomorrow", note = "sorry")] #[deprecated(since = "tomorrow", note = "sorry")]
pub fn since_and_note() {} pub fn since_and_note() {}
//@ is "$.index[*][?(@.name=='note_and_since')].attrs" [] //@ is "$.index[?(@.name=='note_and_since')].attrs" []
//@ is "$.index[*][?(@.name=='note_and_since')].deprecation" '{"since": "a year from tomorrow", "note": "your welcome"}' //@ is "$.index[?(@.name=='note_and_since')].deprecation" '{"since": "a year from tomorrow", "note": "your welcome"}'
#[deprecated(note = "your welcome", since = "a year from tomorrow")] #[deprecated(note = "your welcome", since = "a year from tomorrow")]
pub fn note_and_since() {} pub fn note_and_since() {}
//@ is "$.index[*][?(@.name=='neither_but_parens')].attrs" [] //@ is "$.index[?(@.name=='neither_but_parens')].attrs" []
//@ is "$.index[*][?(@.name=='neither_but_parens')].deprecation" '{"since": null, "note": null}' //@ is "$.index[?(@.name=='neither_but_parens')].deprecation" '{"since": null, "note": null}'
#[deprecated()] #[deprecated()]
pub fn neither_but_parens() {} pub fn neither_but_parens() {}

View file

@ -1,6 +1,6 @@
//@ edition: 2021 //@ edition: 2021
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='example')].attrs" '["#[export_name = \"altered\"]"]' //@ is "$.index[?(@.name=='example')].attrs" '["#[export_name = \"altered\"]"]'
#[export_name = "altered"] #[export_name = "altered"]
pub extern "C" fn example() {} pub extern "C" fn example() {}

View file

@ -4,6 +4,6 @@
// The representation of `#[unsafe(export_name = ..)]` in rustdoc in edition 2024 // The representation of `#[unsafe(export_name = ..)]` in rustdoc in edition 2024
// is still `#[export_name = ..]` without the `unsafe` attribute wrapper. // is still `#[export_name = ..]` without the `unsafe` attribute wrapper.
//@ is "$.index[*][?(@.name=='example')].attrs" '["#[export_name = \"altered\"]"]' //@ is "$.index[?(@.name=='example')].attrs" '["#[export_name = \"altered\"]"]'
#[unsafe(export_name = "altered")] #[unsafe(export_name = "altered")]
pub extern "C" fn example() {} pub extern "C" fn example() {}

View file

@ -1,9 +1,9 @@
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='example')].attrs" '["#[must_use]"]' //@ is "$.index[?(@.name=='example')].attrs" '["#[must_use]"]'
#[must_use] #[must_use]
pub fn example() -> impl Iterator<Item = i64> {} pub fn example() -> impl Iterator<Item = i64> {}
//@ is "$.index[*][?(@.name=='explicit_message')].attrs" '["#[must_use = \"does nothing if you do not use it\"]"]' //@ is "$.index[?(@.name=='explicit_message')].attrs" '["#[must_use = \"does nothing if you do not use it\"]"]'
#[must_use = "does nothing if you do not use it"] #[must_use = "does nothing if you do not use it"]
pub fn explicit_message() -> impl Iterator<Item = i64> {} pub fn explicit_message() -> impl Iterator<Item = i64> {}

View file

@ -1,6 +1,6 @@
//@ edition: 2021 //@ edition: 2021
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='example')].attrs" '["#[no_mangle]"]' //@ is "$.index[?(@.name=='example')].attrs" '["#[no_mangle]"]'
#[no_mangle] #[no_mangle]
pub extern "C" fn example() {} pub extern "C" fn example() {}

View file

@ -4,6 +4,6 @@
// The representation of `#[unsafe(no_mangle)]` in rustdoc in edition 2024 // The representation of `#[unsafe(no_mangle)]` in rustdoc in edition 2024
// is still `#[no_mangle]` without the `unsafe` attribute wrapper. // is still `#[no_mangle]` without the `unsafe` attribute wrapper.
//@ is "$.index[*][?(@.name=='example')].attrs" '["#[no_mangle]"]' //@ is "$.index[?(@.name=='example')].attrs" '["#[no_mangle]"]'
#[unsafe(no_mangle)] #[unsafe(no_mangle)]
pub extern "C" fn example() {} pub extern "C" fn example() {}

View file

@ -1,18 +1,18 @@
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='MyEnum')].attrs" '["#[non_exhaustive]"]' //@ is "$.index[?(@.name=='MyEnum')].attrs" '["#[non_exhaustive]"]'
#[non_exhaustive] #[non_exhaustive]
pub enum MyEnum { pub enum MyEnum {
First, First,
} }
pub enum NonExhaustiveVariant { pub enum NonExhaustiveVariant {
//@ is "$.index[*][?(@.name=='Variant')].attrs" '["#[non_exhaustive]"]' //@ is "$.index[?(@.name=='Variant')].attrs" '["#[non_exhaustive]"]'
#[non_exhaustive] #[non_exhaustive]
Variant(i64), Variant(i64),
} }
//@ is "$.index[*][?(@.name=='MyStruct')].attrs" '["#[non_exhaustive]"]' //@ is "$.index[?(@.name=='MyStruct')].attrs" '["#[non_exhaustive]"]'
#[non_exhaustive] #[non_exhaustive]
pub struct MyStruct { pub struct MyStruct {
pub x: i64, pub x: i64,

View file

@ -1,6 +1,6 @@
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='Aligned')].attrs" '["#[attr = Repr([ReprAlign(Align(4 bytes))])]\n"]' //@ is "$.index[?(@.name=='Aligned')].attrs" '["#[attr = Repr([ReprAlign(Align(4 bytes))])]\n"]'
#[repr(align(4))] #[repr(align(4))]
pub struct Aligned { pub struct Aligned {
a: i8, a: i8,

View file

@ -1,16 +1,16 @@
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='ReprCStruct')].attrs" '["#[attr = Repr([ReprC])]\n"]' //@ is "$.index[?(@.name=='ReprCStruct')].attrs" '["#[attr = Repr([ReprC])]\n"]'
#[repr(C)] #[repr(C)]
pub struct ReprCStruct(pub i64); pub struct ReprCStruct(pub i64);
//@ is "$.index[*][?(@.name=='ReprCEnum')].attrs" '["#[attr = Repr([ReprC])]\n"]' //@ is "$.index[?(@.name=='ReprCEnum')].attrs" '["#[attr = Repr([ReprC])]\n"]'
#[repr(C)] #[repr(C)]
pub enum ReprCEnum { pub enum ReprCEnum {
First, First,
} }
//@ is "$.index[*][?(@.name=='ReprCUnion')].attrs" '["#[attr = Repr([ReprC])]\n"]' //@ is "$.index[?(@.name=='ReprCUnion')].attrs" '["#[attr = Repr([ReprC])]\n"]'
#[repr(C)] #[repr(C)]
pub union ReprCUnion { pub union ReprCUnion {
pub left: i64, pub left: i64,

View file

@ -2,33 +2,33 @@
// Combinations of `#[repr(..)]` attributes. // Combinations of `#[repr(..)]` attributes.
//@ is "$.index[*][?(@.name=='ReprCI8')].attrs" '["#[attr = Repr([ReprC, ReprInt(SignedInt(I8))])]\n"]' //@ is "$.index[?(@.name=='ReprCI8')].attrs" '["#[attr = Repr([ReprC, ReprInt(SignedInt(I8))])]\n"]'
#[repr(C, i8)] #[repr(C, i8)]
pub enum ReprCI8 { pub enum ReprCI8 {
First, First,
} }
//@ is "$.index[*][?(@.name=='SeparateReprCI16')].attrs" '["#[attr = Repr([ReprC, ReprInt(SignedInt(I16))])]\n"]' //@ is "$.index[?(@.name=='SeparateReprCI16')].attrs" '["#[attr = Repr([ReprC, ReprInt(SignedInt(I16))])]\n"]'
#[repr(C)] #[repr(C)]
#[repr(i16)] #[repr(i16)]
pub enum SeparateReprCI16 { pub enum SeparateReprCI16 {
First, First,
} }
//@ is "$.index[*][?(@.name=='ReversedReprCUsize')].attrs" '["#[attr = Repr([ReprInt(UnsignedInt(Usize)), ReprC])]\n"]' //@ is "$.index[?(@.name=='ReversedReprCUsize')].attrs" '["#[attr = Repr([ReprInt(UnsignedInt(Usize)), ReprC])]\n"]'
#[repr(usize, C)] #[repr(usize, C)]
pub enum ReversedReprCUsize { pub enum ReversedReprCUsize {
First, First,
} }
//@ is "$.index[*][?(@.name=='ReprCPacked')].attrs" '["#[attr = Repr([ReprC, ReprPacked(Align(1 bytes))])]\n"]' //@ is "$.index[?(@.name=='ReprCPacked')].attrs" '["#[attr = Repr([ReprC, ReprPacked(Align(1 bytes))])]\n"]'
#[repr(C, packed)] #[repr(C, packed)]
pub struct ReprCPacked { pub struct ReprCPacked {
a: i8, a: i8,
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='SeparateReprCPacked')].attrs" '["#[attr = Repr([ReprC, ReprPacked(Align(2 bytes))])]\n"]' //@ is "$.index[?(@.name=='SeparateReprCPacked')].attrs" '["#[attr = Repr([ReprC, ReprPacked(Align(2 bytes))])]\n"]'
#[repr(C)] #[repr(C)]
#[repr(packed(2))] #[repr(packed(2))]
pub struct SeparateReprCPacked { pub struct SeparateReprCPacked {
@ -36,21 +36,21 @@ pub struct SeparateReprCPacked {
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='ReversedReprCPacked')].attrs" '["#[attr = Repr([ReprPacked(Align(2 bytes)), ReprC])]\n"]' //@ is "$.index[?(@.name=='ReversedReprCPacked')].attrs" '["#[attr = Repr([ReprPacked(Align(2 bytes)), ReprC])]\n"]'
#[repr(packed(2), C)] #[repr(packed(2), C)]
pub struct ReversedReprCPacked { pub struct ReversedReprCPacked {
a: i8, a: i8,
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='ReprCAlign')].attrs" '["#[attr = Repr([ReprC, ReprAlign(Align(16 bytes))])]\n"]' //@ is "$.index[?(@.name=='ReprCAlign')].attrs" '["#[attr = Repr([ReprC, ReprAlign(Align(16 bytes))])]\n"]'
#[repr(C, align(16))] #[repr(C, align(16))]
pub struct ReprCAlign { pub struct ReprCAlign {
a: i8, a: i8,
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='SeparateReprCAlign')].attrs" '["#[attr = Repr([ReprC, ReprAlign(Align(2 bytes))])]\n"]' //@ is "$.index[?(@.name=='SeparateReprCAlign')].attrs" '["#[attr = Repr([ReprC, ReprAlign(Align(2 bytes))])]\n"]'
#[repr(C)] #[repr(C)]
#[repr(align(2))] #[repr(align(2))]
pub struct SeparateReprCAlign { pub struct SeparateReprCAlign {
@ -58,20 +58,20 @@ pub struct SeparateReprCAlign {
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='ReversedReprCAlign')].attrs" '["#[attr = Repr([ReprAlign(Align(2 bytes)), ReprC])]\n"]' //@ is "$.index[?(@.name=='ReversedReprCAlign')].attrs" '["#[attr = Repr([ReprAlign(Align(2 bytes)), ReprC])]\n"]'
#[repr(align(2), C)] #[repr(align(2), C)]
pub struct ReversedReprCAlign { pub struct ReversedReprCAlign {
a: i8, a: i8,
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='AlignedExplicitRepr')].attrs" '["#[attr = Repr([ReprC, ReprAlign(Align(16 bytes)), ReprInt(SignedInt(Isize))])]\n"]' //@ is "$.index[?(@.name=='AlignedExplicitRepr')].attrs" '["#[attr = Repr([ReprC, ReprAlign(Align(16 bytes)), ReprInt(SignedInt(Isize))])]\n"]'
#[repr(C, align(16), isize)] #[repr(C, align(16), isize)]
pub enum AlignedExplicitRepr { pub enum AlignedExplicitRepr {
First, First,
} }
//@ is "$.index[*][?(@.name=='ReorderedAlignedExplicitRepr')].attrs" '["#[attr = Repr([ReprInt(SignedInt(Isize)), ReprC, ReprAlign(Align(16 bytes))])]\n"]' //@ is "$.index[?(@.name=='ReorderedAlignedExplicitRepr')].attrs" '["#[attr = Repr([ReprInt(SignedInt(Isize)), ReprC, ReprAlign(Align(16 bytes))])]\n"]'
#[repr(isize, C, align(16))] #[repr(isize, C, align(16))]
pub enum ReorderedAlignedExplicitRepr { pub enum ReorderedAlignedExplicitRepr {
First, First,

View file

@ -1,18 +1,18 @@
#![no_std] #![no_std]
//@ is "$.index[*][?(@.name=='I8')].attrs" '["#[attr = Repr([ReprInt(SignedInt(I8))])]\n"]' //@ is "$.index[?(@.name=='I8')].attrs" '["#[attr = Repr([ReprInt(SignedInt(I8))])]\n"]'
#[repr(i8)] #[repr(i8)]
pub enum I8 { pub enum I8 {
First, First,
} }
//@ is "$.index[*][?(@.name=='I32')].attrs" '["#[attr = Repr([ReprInt(SignedInt(I32))])]\n"]' //@ is "$.index[?(@.name=='I32')].attrs" '["#[attr = Repr([ReprInt(SignedInt(I32))])]\n"]'
#[repr(i32)] #[repr(i32)]
pub enum I32 { pub enum I32 {
First, First,
} }
//@ is "$.index[*][?(@.name=='Usize')].attrs" '["#[attr = Repr([ReprInt(UnsignedInt(Usize))])]\n"]' //@ is "$.index[?(@.name=='Usize')].attrs" '["#[attr = Repr([ReprInt(UnsignedInt(Usize))])]\n"]'
#[repr(usize)] #[repr(usize)]
pub enum Usize { pub enum Usize {
First, First,

View file

@ -3,14 +3,14 @@
// Note the normalization: // Note the normalization:
// `#[repr(packed)]` in has the implict "1" in rustdoc JSON. // `#[repr(packed)]` in has the implict "1" in rustdoc JSON.
//@ is "$.index[*][?(@.name=='Packed')].attrs" '["#[attr = Repr([ReprPacked(Align(1 bytes))])]\n"]' //@ is "$.index[?(@.name=='Packed')].attrs" '["#[attr = Repr([ReprPacked(Align(1 bytes))])]\n"]'
#[repr(packed)] #[repr(packed)]
pub struct Packed { pub struct Packed {
a: i8, a: i8,
b: i64, b: i64,
} }
//@ is "$.index[*][?(@.name=='PackedAligned')].attrs" '["#[attr = Repr([ReprPacked(Align(4 bytes))])]\n"]' //@ is "$.index[?(@.name=='PackedAligned')].attrs" '["#[attr = Repr([ReprPacked(Align(4 bytes))])]\n"]'
#[repr(packed(4))] #[repr(packed(4))]
pub struct PackedAligned { pub struct PackedAligned {
a: i8, a: i8,

View file

@ -5,18 +5,18 @@
// //
// https://doc.rust-lang.org/nomicon/other-reprs.html#reprtransparent // https://doc.rust-lang.org/nomicon/other-reprs.html#reprtransparent
//@ is "$.index[*][?(@.name=='Transparent')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]' //@ is "$.index[?(@.name=='Transparent')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]'
#[repr(transparent)] #[repr(transparent)]
pub struct Transparent(pub i64); pub struct Transparent(pub i64);
//@ is "$.index[*][?(@.name=='TransparentNonPub')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]' //@ is "$.index[?(@.name=='TransparentNonPub')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]'
#[repr(transparent)] #[repr(transparent)]
pub struct TransparentNonPub(i64); pub struct TransparentNonPub(i64);
//@ is "$.index[*][?(@.name=='AllZst')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]' //@ is "$.index[?(@.name=='AllZst')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]'
#[repr(transparent)] #[repr(transparent)]
pub struct AllZst<'a>(pub core::marker::PhantomData<&'a ()>, ()); pub struct AllZst<'a>(pub core::marker::PhantomData<&'a ()>, ());
//@ is "$.index[*][?(@.name=='AllZstNotPublic')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]' //@ is "$.index[?(@.name=='AllZstNotPublic')].attrs" '["#[attr = Repr([ReprTransparent])]\n"]'
#[repr(transparent)] #[repr(transparent)]
pub struct AllZstNotPublic<'a>(core::marker::PhantomData<&'a ()>, ()); pub struct AllZstNotPublic<'a>(core::marker::PhantomData<&'a ()>, ());

View file

@ -2,7 +2,7 @@
#![no_std] #![no_std]
//@ has "$.index[*][?(@.name=='Error')].inner.assoc_type" //@ has "$.index[?(@.name=='Error')].inner.assoc_type"
//@ has "$.index[*][?(@.name=='Error')].inner.assoc_type.type.resolved_path" //@ has "$.index[?(@.name=='Error')].inner.assoc_type.type.resolved_path"
//@ has "$.index[*][?(@.name=='Error')].inner.assoc_type.type.resolved_path.path" \"Infallible\" //@ has "$.index[?(@.name=='Error')].inner.assoc_type.type.resolved_path.path" \"Infallible\"
pub struct ForBlanketTryFromImpl; pub struct ForBlanketTryFromImpl;

View file

@ -11,8 +11,8 @@ mod auto {
} }
} }
//@ count "$.index[*][?(@.name=='builders')]" 1 //@ count "$.index[?(@.name=='builders')]" 1
//@ has "$.index[*][?(@.name == 'ActionRowBuilder')"] //@ has "$.index[?(@.name == 'ActionRowBuilder')"]
pub use auto::*; pub use auto::*;
pub mod builders { pub mod builders {

View file

@ -1,12 +1,12 @@
#[repr(i8)] #[repr(i8)]
pub enum Ordering { pub enum Ordering {
//@ is "$.index[*][?(@.name=='Less')].inner.variant.discriminant.expr" '"-1"' //@ is "$.index[?(@.name=='Less')].inner.variant.discriminant.expr" '"-1"'
//@ is "$.index[*][?(@.name=='Less')].inner.variant.discriminant.value" '"-1"' //@ is "$.index[?(@.name=='Less')].inner.variant.discriminant.value" '"-1"'
Less = -1, Less = -1,
//@ is "$.index[*][?(@.name=='Equal')].inner.variant.discriminant.expr" '"0"' //@ is "$.index[?(@.name=='Equal')].inner.variant.discriminant.expr" '"0"'
//@ is "$.index[*][?(@.name=='Equal')].inner.variant.discriminant.value" '"0"' //@ is "$.index[?(@.name=='Equal')].inner.variant.discriminant.value" '"0"'
Equal = 0, Equal = 0,
//@ is "$.index[*][?(@.name=='Greater')].inner.variant.discriminant.expr" '"1"' //@ is "$.index[?(@.name=='Greater')].inner.variant.discriminant.expr" '"1"'
//@ is "$.index[*][?(@.name=='Greater')].inner.variant.discriminant.value" '"1"' //@ is "$.index[?(@.name=='Greater')].inner.variant.discriminant.value" '"1"'
Greater = 1, Greater = 1,
} }

View file

@ -1,30 +1,30 @@
pub enum Foo { pub enum Foo {
//@ is "$.index[*][?(@.name=='Addition')].inner.variant.discriminant.value" '"0"' //@ is "$.index[?(@.name=='Addition')].inner.variant.discriminant.value" '"0"'
//@ is "$.index[*][?(@.name=='Addition')].inner.variant.discriminant.expr" '"{ _ }"' //@ is "$.index[?(@.name=='Addition')].inner.variant.discriminant.expr" '"{ _ }"'
Addition = 0 + 0, Addition = 0 + 0,
//@ is "$.index[*][?(@.name=='Bin')].inner.variant.discriminant.value" '"1"' //@ is "$.index[?(@.name=='Bin')].inner.variant.discriminant.value" '"1"'
//@ is "$.index[*][?(@.name=='Bin')].inner.variant.discriminant.expr" '"0b1"' //@ is "$.index[?(@.name=='Bin')].inner.variant.discriminant.expr" '"0b1"'
Bin = 0b1, Bin = 0b1,
//@ is "$.index[*][?(@.name=='Oct')].inner.variant.discriminant.value" '"2"' //@ is "$.index[?(@.name=='Oct')].inner.variant.discriminant.value" '"2"'
//@ is "$.index[*][?(@.name=='Oct')].inner.variant.discriminant.expr" '"0o2"' //@ is "$.index[?(@.name=='Oct')].inner.variant.discriminant.expr" '"0o2"'
Oct = 0o2, Oct = 0o2,
//@ is "$.index[*][?(@.name=='PubConst')].inner.variant.discriminant.value" '"3"' //@ is "$.index[?(@.name=='PubConst')].inner.variant.discriminant.value" '"3"'
//@ is "$.index[*][?(@.name=='PubConst')].inner.variant.discriminant.expr" '"THREE"' //@ is "$.index[?(@.name=='PubConst')].inner.variant.discriminant.expr" '"THREE"'
PubConst = THREE, PubConst = THREE,
//@ is "$.index[*][?(@.name=='Hex')].inner.variant.discriminant.value" '"4"' //@ is "$.index[?(@.name=='Hex')].inner.variant.discriminant.value" '"4"'
//@ is "$.index[*][?(@.name=='Hex')].inner.variant.discriminant.expr" '"0x4"' //@ is "$.index[?(@.name=='Hex')].inner.variant.discriminant.expr" '"0x4"'
Hex = 0x4, Hex = 0x4,
//@ is "$.index[*][?(@.name=='Cast')].inner.variant.discriminant.value" '"5"' //@ is "$.index[?(@.name=='Cast')].inner.variant.discriminant.value" '"5"'
//@ is "$.index[*][?(@.name=='Cast')].inner.variant.discriminant.expr" '"{ _ }"' //@ is "$.index[?(@.name=='Cast')].inner.variant.discriminant.expr" '"{ _ }"'
Cast = 5 as isize, Cast = 5 as isize,
//@ is "$.index[*][?(@.name=='PubCall')].inner.variant.discriminant.value" '"6"' //@ is "$.index[?(@.name=='PubCall')].inner.variant.discriminant.value" '"6"'
//@ is "$.index[*][?(@.name=='PubCall')].inner.variant.discriminant.expr" '"{ _ }"' //@ is "$.index[?(@.name=='PubCall')].inner.variant.discriminant.expr" '"{ _ }"'
PubCall = six(), PubCall = six(),
//@ is "$.index[*][?(@.name=='PrivCall')].inner.variant.discriminant.value" '"7"' //@ is "$.index[?(@.name=='PrivCall')].inner.variant.discriminant.value" '"7"'
//@ is "$.index[*][?(@.name=='PrivCall')].inner.variant.discriminant.expr" '"{ _ }"' //@ is "$.index[?(@.name=='PrivCall')].inner.variant.discriminant.expr" '"{ _ }"'
PrivCall = seven(), PrivCall = seven(),
//@ is "$.index[*][?(@.name=='PrivConst')].inner.variant.discriminant.value" '"8"' //@ is "$.index[?(@.name=='PrivConst')].inner.variant.discriminant.value" '"8"'
//@ is "$.index[*][?(@.name=='PrivConst')].inner.variant.discriminant.expr" '"EIGHT"' //@ is "$.index[?(@.name=='PrivConst')].inner.variant.discriminant.expr" '"EIGHT"'
PrivConst = EIGHT, PrivConst = EIGHT,
} }

View file

@ -3,40 +3,40 @@
#[repr(u64)] #[repr(u64)]
pub enum U64 { pub enum U64 {
//@ is "$.index[*][?(@.name=='U64Min')].inner.variant.discriminant.value" '"0"' //@ is "$.index[?(@.name=='U64Min')].inner.variant.discriminant.value" '"0"'
//@ is "$.index[*][?(@.name=='U64Min')].inner.variant.discriminant.expr" '"u64::MIN"' //@ is "$.index[?(@.name=='U64Min')].inner.variant.discriminant.expr" '"u64::MIN"'
U64Min = u64::MIN, U64Min = u64::MIN,
//@ is "$.index[*][?(@.name=='U64Max')].inner.variant.discriminant.value" '"18446744073709551615"' //@ is "$.index[?(@.name=='U64Max')].inner.variant.discriminant.value" '"18446744073709551615"'
//@ is "$.index[*][?(@.name=='U64Max')].inner.variant.discriminant.expr" '"u64::MAX"' //@ is "$.index[?(@.name=='U64Max')].inner.variant.discriminant.expr" '"u64::MAX"'
U64Max = u64::MAX, U64Max = u64::MAX,
} }
#[repr(i64)] #[repr(i64)]
pub enum I64 { pub enum I64 {
//@ is "$.index[*][?(@.name=='I64Min')].inner.variant.discriminant.value" '"-9223372036854775808"' //@ is "$.index[?(@.name=='I64Min')].inner.variant.discriminant.value" '"-9223372036854775808"'
//@ is "$.index[*][?(@.name=='I64Min')].inner.variant.discriminant.expr" '"i64::MIN"' //@ is "$.index[?(@.name=='I64Min')].inner.variant.discriminant.expr" '"i64::MIN"'
I64Min = i64::MIN, I64Min = i64::MIN,
//@ is "$.index[*][?(@.name=='I64Max')].inner.variant.discriminant.value" '"9223372036854775807"' //@ is "$.index[?(@.name=='I64Max')].inner.variant.discriminant.value" '"9223372036854775807"'
//@ is "$.index[*][?(@.name=='I64Max')].inner.variant.discriminant.expr" '"i64::MAX"' //@ is "$.index[?(@.name=='I64Max')].inner.variant.discriminant.expr" '"i64::MAX"'
I64Max = i64::MAX, I64Max = i64::MAX,
} }
#[repr(u128)] #[repr(u128)]
pub enum U128 { pub enum U128 {
//@ is "$.index[*][?(@.name=='U128Min')].inner.variant.discriminant.value" '"0"' //@ is "$.index[?(@.name=='U128Min')].inner.variant.discriminant.value" '"0"'
//@ is "$.index[*][?(@.name=='U128Min')].inner.variant.discriminant.expr" '"u128::MIN"' //@ is "$.index[?(@.name=='U128Min')].inner.variant.discriminant.expr" '"u128::MIN"'
U128Min = u128::MIN, U128Min = u128::MIN,
//@ is "$.index[*][?(@.name=='U128Max')].inner.variant.discriminant.value" '"340282366920938463463374607431768211455"' //@ is "$.index[?(@.name=='U128Max')].inner.variant.discriminant.value" '"340282366920938463463374607431768211455"'
//@ is "$.index[*][?(@.name=='U128Max')].inner.variant.discriminant.expr" '"u128::MAX"' //@ is "$.index[?(@.name=='U128Max')].inner.variant.discriminant.expr" '"u128::MAX"'
U128Max = u128::MAX, U128Max = u128::MAX,
} }
#[repr(i128)] #[repr(i128)]
pub enum I128 { pub enum I128 {
//@ is "$.index[*][?(@.name=='I128Min')].inner.variant.discriminant.value" '"-170141183460469231731687303715884105728"' //@ is "$.index[?(@.name=='I128Min')].inner.variant.discriminant.value" '"-170141183460469231731687303715884105728"'
//@ is "$.index[*][?(@.name=='I128Min')].inner.variant.discriminant.expr" '"i128::MIN"' //@ is "$.index[?(@.name=='I128Min')].inner.variant.discriminant.expr" '"i128::MIN"'
I128Min = i128::MIN, I128Min = i128::MIN,
//@ is "$.index[*][?(@.name=='I128Max')].inner.variant.discriminant.value" '"170141183460469231731687303715884105727"' //@ is "$.index[?(@.name=='I128Max')].inner.variant.discriminant.value" '"170141183460469231731687303715884105727"'
//@ is "$.index[*][?(@.name=='I128Max')].inner.variant.discriminant.expr" '"i128::MAX"' //@ is "$.index[?(@.name=='I128Max')].inner.variant.discriminant.expr" '"i128::MAX"'
I128Max = i128::MAX, I128Max = i128::MAX,
} }

View file

@ -1,15 +1,15 @@
#[repr(u32)] #[repr(u32)]
pub enum Foo { pub enum Foo {
//@ is "$.index[*][?(@.name=='Basic')].inner.variant.discriminant.value" '"0"' //@ is "$.index[?(@.name=='Basic')].inner.variant.discriminant.value" '"0"'
//@ is "$.index[*][?(@.name=='Basic')].inner.variant.discriminant.expr" '"0"' //@ is "$.index[?(@.name=='Basic')].inner.variant.discriminant.expr" '"0"'
Basic = 0, Basic = 0,
//@ is "$.index[*][?(@.name=='Suffix')].inner.variant.discriminant.value" '"10"' //@ is "$.index[?(@.name=='Suffix')].inner.variant.discriminant.value" '"10"'
//@ is "$.index[*][?(@.name=='Suffix')].inner.variant.discriminant.expr" '"10u32"' //@ is "$.index[?(@.name=='Suffix')].inner.variant.discriminant.expr" '"10u32"'
Suffix = 10u32, Suffix = 10u32,
//@ is "$.index[*][?(@.name=='Underscore')].inner.variant.discriminant.value" '"100"' //@ is "$.index[?(@.name=='Underscore')].inner.variant.discriminant.value" '"100"'
//@ is "$.index[*][?(@.name=='Underscore')].inner.variant.discriminant.expr" '"1_0_0"' //@ is "$.index[?(@.name=='Underscore')].inner.variant.discriminant.expr" '"1_0_0"'
Underscore = 1_0_0, Underscore = 1_0_0,
//@ is "$.index[*][?(@.name=='SuffixUnderscore')].inner.variant.discriminant.value" '"1000"' //@ is "$.index[?(@.name=='SuffixUnderscore')].inner.variant.discriminant.value" '"1000"'
//@ is "$.index[*][?(@.name=='SuffixUnderscore')].inner.variant.discriminant.expr" '"1_0_0_0u32"' //@ is "$.index[?(@.name=='SuffixUnderscore')].inner.variant.discriminant.expr" '"1_0_0_0u32"'
SuffixUnderscore = 1_0_0_0u32, SuffixUnderscore = 1_0_0_0u32,
} }

View file

@ -1,10 +1,10 @@
pub enum Foo { pub enum Foo {
//@ is "$.index[*][?(@.name=='Has')].inner.variant.discriminant" '{"expr":"0", "value":"0"}' //@ is "$.index[?(@.name=='Has')].inner.variant.discriminant" '{"expr":"0", "value":"0"}'
Has = 0, Has = 0,
//@ is "$.index[*][?(@.name=='Doesnt')].inner.variant.discriminant" null //@ is "$.index[?(@.name=='Doesnt')].inner.variant.discriminant" null
Doesnt, Doesnt,
//@ is "$.index[*][?(@.name=='AlsoDoesnt')].inner.variant.discriminant" null //@ is "$.index[?(@.name=='AlsoDoesnt')].inner.variant.discriminant" null
AlsoDoesnt, AlsoDoesnt,
//@ is "$.index[*][?(@.name=='AlsoHas')].inner.variant.discriminant" '{"expr":"44", "value":"44"}' //@ is "$.index[?(@.name=='AlsoHas')].inner.variant.discriminant" '{"expr":"44", "value":"44"}'
AlsoHas = 44, AlsoHas = 44,
} }

View file

@ -1,13 +1,13 @@
#[repr(i32)] #[repr(i32)]
//@ is "$.index[*][?(@.name=='Foo')].attrs" '["#[attr = Repr([ReprInt(SignedInt(I32))])]\n"]' //@ is "$.index[?(@.name=='Foo')].attrs" '["#[attr = Repr([ReprInt(SignedInt(I32))])]\n"]'
pub enum Foo { pub enum Foo {
//@ is "$.index[*][?(@.name=='Struct')].inner.variant.discriminant" null //@ is "$.index[?(@.name=='Struct')].inner.variant.discriminant" null
//@ count "$.index[*][?(@.name=='Struct')].inner.variant.kind.struct.fields[*]" 0 //@ count "$.index[?(@.name=='Struct')].inner.variant.kind.struct.fields[*]" 0
Struct {}, Struct {},
//@ is "$.index[*][?(@.name=='StructWithDiscr')].inner.variant.discriminant" '{"expr": "42", "value": "42"}' //@ is "$.index[?(@.name=='StructWithDiscr')].inner.variant.discriminant" '{"expr": "42", "value": "42"}'
//@ count "$.index[*][?(@.name=='StructWithDiscr')].inner.variant.kind.struct.fields[*]" 1 //@ count "$.index[?(@.name=='StructWithDiscr')].inner.variant.kind.struct.fields[*]" 1
StructWithDiscr { x: i32 } = 42, StructWithDiscr { x: i32 } = 42,
//@ is "$.index[*][?(@.name=='StructWithHexDiscr')].inner.variant.discriminant" '{"expr": "0x42", "value": "66"}' //@ is "$.index[?(@.name=='StructWithHexDiscr')].inner.variant.discriminant" '{"expr": "0x42", "value": "66"}'
//@ count "$.index[*][?(@.name=='StructWithHexDiscr')].inner.variant.kind.struct.fields[*]" 2 //@ count "$.index[?(@.name=='StructWithHexDiscr')].inner.variant.kind.struct.fields[*]" 2
StructWithHexDiscr { x: i32, y: bool } = 0x42, StructWithHexDiscr { x: i32, y: bool } = 0x42,
} }

View file

@ -1,13 +1,13 @@
#[repr(u32)] #[repr(u32)]
//@ is "$.index[*][?(@.name=='Foo')].attrs" '["#[attr = Repr([ReprInt(UnsignedInt(U32))])]\n"]' //@ is "$.index[?(@.name=='Foo')].attrs" '["#[attr = Repr([ReprInt(UnsignedInt(U32))])]\n"]'
pub enum Foo { pub enum Foo {
//@ is "$.index[*][?(@.name=='Tuple')].inner.variant.discriminant" null //@ is "$.index[?(@.name=='Tuple')].inner.variant.discriminant" null
//@ count "$.index[*][?(@.name=='Tuple')].inner.variant.kind.tuple[*]" 0 //@ count "$.index[?(@.name=='Tuple')].inner.variant.kind.tuple[*]" 0
Tuple(), Tuple(),
//@ is "$.index[*][?(@.name=='TupleWithDiscr')].inner.variant.discriminant" '{"expr": "1", "value": "1"}' //@ is "$.index[?(@.name=='TupleWithDiscr')].inner.variant.discriminant" '{"expr": "1", "value": "1"}'
//@ count "$.index[*][?(@.name=='TupleWithDiscr')].inner.variant.kind.tuple[*]" 1 //@ count "$.index[?(@.name=='TupleWithDiscr')].inner.variant.kind.tuple[*]" 1
TupleWithDiscr(i32) = 1, TupleWithDiscr(i32) = 1,
//@ is "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.variant.discriminant" '{"expr": "0b10", "value": "2"}' //@ is "$.index[?(@.name=='TupleWithBinDiscr')].inner.variant.discriminant" '{"expr": "0b10", "value": "2"}'
//@ count "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.variant.kind.tuple[*]" 2 //@ count "$.index[?(@.name=='TupleWithBinDiscr')].inner.variant.kind.tuple[*]" 2
TupleWithBinDiscr(i32, i32) = 0b10, TupleWithBinDiscr(i32, i32) = 0b10,
} }

View file

@ -5,7 +5,7 @@
extern crate color; extern crate color;
use color::Color::Red; use color::Color::Red;
//@ set red = "$.index[*][?(@.inner.module.is_crate)].links.Red" //@ set red = "$.index[?(@.inner.module.is_crate)].links.Red"
//@ !has "$.index[*][?(@.name == 'Red')]" //@ !has "$.index[?(@.name == 'Red')]"
//@ !has "$.index[*][?(@.name == 'Color')]" //@ !has "$.index[?(@.name == 'Color')]"

View file

@ -1,9 +1,9 @@
// Regression test for <https://github.com/rust-lang/rust/issues/100529>. // Regression test for <https://github.com/rust-lang/rust/issues/100529>.
//@ has "$.index[*][?(@.name=='ParseError')]" //@ has "$.index[?(@.name=='ParseError')]"
//@ has "$.index[*][?(@.name=='UnexpectedEndTag')]" //@ has "$.index[?(@.name=='UnexpectedEndTag')]"
//@ is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant.kind.tuple" [null] //@ is "$.index[?(@.name=='UnexpectedEndTag')].inner.variant.kind.tuple" [null]
//@ is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant.discriminant" null //@ is "$.index[?(@.name=='UnexpectedEndTag')].inner.variant.discriminant" null
pub enum ParseError { pub enum ParseError {
UnexpectedEndTag(#[doc(hidden)] u32), UnexpectedEndTag(#[doc(hidden)] u32),

View file

@ -17,24 +17,24 @@ pub enum Whatever {
}, },
} }
//@ set 0 = '$.index[*][?(@.name == "ews_0")].id' //@ set 0 = '$.index[?(@.name == "ews_0")].id'
//@ set 1 = '$.index[*][?(@.name == "dik_1")].id' //@ set 1 = '$.index[?(@.name == "dik_1")].id'
//@ set 2 = '$.index[*][?(@.name == "hsk_2")].id' //@ set 2 = '$.index[?(@.name == "hsk_2")].id'
//@ set 3 = '$.index[*][?(@.name == "djt_3")].id' //@ set 3 = '$.index[?(@.name == "djt_3")].id'
//@ set 4 = '$.index[*][?(@.name == "jnr_4")].id' //@ set 4 = '$.index[?(@.name == "jnr_4")].id'
//@ set 5 = '$.index[*][?(@.name == "dfs_5")].id' //@ set 5 = '$.index[?(@.name == "dfs_5")].id'
//@ set 6 = '$.index[*][?(@.name == "bja_6")].id' //@ set 6 = '$.index[?(@.name == "bja_6")].id'
//@ set 7 = '$.index[*][?(@.name == "lyc_7")].id' //@ set 7 = '$.index[?(@.name == "lyc_7")].id'
//@ set 8 = '$.index[*][?(@.name == "yqd_8")].id' //@ set 8 = '$.index[?(@.name == "yqd_8")].id'
//@ set 9 = '$.index[*][?(@.name == "vll_9")].id' //@ set 9 = '$.index[?(@.name == "vll_9")].id'
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[0]' $0 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[0]' $0
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[1]' $1 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[1]' $1
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[2]' $2 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[2]' $2
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[3]' $3 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[3]' $3
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[4]' $4 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[4]' $4
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[5]' $5 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[5]' $5
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[6]' $6 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[6]' $6
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[7]' $7 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[7]' $7
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[8]' $8 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[8]' $8
//@ is '$.index[*][?(@.name == "Foo")].inner.variant.kind.struct.fields[9]' $9 //@ is '$.index[?(@.name == "Foo")].inner.variant.kind.struct.fields[9]' $9

View file

@ -1,27 +1,27 @@
pub enum Foo { pub enum Foo {
//@ set Unit = "$.index[*][?(@.name=='Unit')].id" //@ set Unit = "$.index[?(@.name=='Unit')].id"
//@ is "$.index[*][?(@.name=='Unit')].inner.variant.kind" '"plain"' //@ is "$.index[?(@.name=='Unit')].inner.variant.kind" '"plain"'
Unit, Unit,
//@ set Named = "$.index[*][?(@.name=='Named')].id" //@ set Named = "$.index[?(@.name=='Named')].id"
//@ is "$.index[*][?(@.name=='Named')].inner.variant.kind.struct" '{"fields": [], "has_stripped_fields": false}' //@ is "$.index[?(@.name=='Named')].inner.variant.kind.struct" '{"fields": [], "has_stripped_fields": false}'
Named {}, Named {},
//@ set Tuple = "$.index[*][?(@.name=='Tuple')].id" //@ set Tuple = "$.index[?(@.name=='Tuple')].id"
//@ is "$.index[*][?(@.name=='Tuple')].inner.variant.kind.tuple" [] //@ is "$.index[?(@.name=='Tuple')].inner.variant.kind.tuple" []
Tuple(), Tuple(),
//@ set NamedField = "$.index[*][?(@.name=='NamedField')].id" //@ set NamedField = "$.index[?(@.name=='NamedField')].id"
//@ set x = "$.index[*][?(@.name=='x' && @.inner.struct_field)].id" //@ set x = "$.index[?(@.name=='x' && @.inner.struct_field)].id"
//@ is "$.index[*][?(@.name=='NamedField')].inner.variant.kind.struct.fields[*]" $x //@ is "$.index[?(@.name=='NamedField')].inner.variant.kind.struct.fields[*]" $x
//@ is "$.index[*][?(@.name=='NamedField')].inner.variant.kind.struct.has_stripped_fields" false //@ is "$.index[?(@.name=='NamedField')].inner.variant.kind.struct.has_stripped_fields" false
NamedField { x: i32 }, NamedField { x: i32 },
//@ set TupleField = "$.index[*][?(@.name=='TupleField')].id" //@ set TupleField = "$.index[?(@.name=='TupleField')].id"
//@ set tup_field = "$.index[*][?(@.name=='0' && @.inner.struct_field)].id" //@ set tup_field = "$.index[?(@.name=='0' && @.inner.struct_field)].id"
//@ is "$.index[*][?(@.name=='TupleField')].inner.variant.kind.tuple[*]" $tup_field //@ is "$.index[?(@.name=='TupleField')].inner.variant.kind.tuple[*]" $tup_field
TupleField(i32), TupleField(i32),
} }
//@ is "$.index[*][?(@.name=='Foo')].inner.enum.variants[0]" $Unit //@ is "$.index[?(@.name=='Foo')].inner.enum.variants[0]" $Unit
//@ is "$.index[*][?(@.name=='Foo')].inner.enum.variants[1]" $Named //@ is "$.index[?(@.name=='Foo')].inner.enum.variants[1]" $Named
//@ is "$.index[*][?(@.name=='Foo')].inner.enum.variants[2]" $Tuple //@ is "$.index[?(@.name=='Foo')].inner.enum.variants[2]" $Tuple
//@ is "$.index[*][?(@.name=='Foo')].inner.enum.variants[3]" $NamedField //@ is "$.index[?(@.name=='Foo')].inner.enum.variants[3]" $NamedField
//@ is "$.index[*][?(@.name=='Foo')].inner.enum.variants[4]" $TupleField //@ is "$.index[?(@.name=='Foo')].inner.enum.variants[4]" $TupleField
//@ count "$.index[*][?(@.name=='Foo')].inner.enum.variants[*]" 5 //@ count "$.index[?(@.name=='Foo')].inner.enum.variants[*]" 5

View file

@ -2,15 +2,15 @@ pub enum Foo {
Variant { Variant {
#[doc(hidden)] #[doc(hidden)]
a: i32, a: i32,
//@ set b = "$.index[*][?(@.name=='b')].id" //@ set b = "$.index[?(@.name=='b')].id"
b: i32, b: i32,
#[doc(hidden)] #[doc(hidden)]
x: i32, x: i32,
//@ set y = "$.index[*][?(@.name=='y')].id" //@ set y = "$.index[?(@.name=='y')].id"
y: i32, y: i32,
}, },
//@ is "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.has_stripped_fields" true //@ is "$.index[?(@.name=='Variant')].inner.variant.kind.struct.has_stripped_fields" true
//@ is "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields[0]" $b //@ is "$.index[?(@.name=='Variant')].inner.variant.kind.struct.fields[0]" $b
//@ is "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields[1]" $y //@ is "$.index[?(@.name=='Variant')].inner.variant.kind.struct.fields[1]" $y
//@ count "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields[*]" 2 //@ count "$.index[?(@.name=='Variant')].inner.variant.kind.struct.fields[*]" 2
} }

View file

@ -1,80 +1,80 @@
//@ set 1.1.0 = "$.index[*][?(@.docs=='1.1.0')].id" //@ set 1.1.0 = "$.index[?(@.docs=='1.1.0')].id"
//@ set 2.1.0 = "$.index[*][?(@.docs=='2.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.1.1 = "$.index[?(@.docs=='2.1.1')].id"
//@ set 2.2.1 = "$.index[*][?(@.docs=='2.2.1')].id" //@ set 2.2.1 = "$.index[?(@.docs=='2.2.1')].id"
//@ set 2.3.0 = "$.index[*][?(@.docs=='2.3.0')].id" //@ set 2.3.0 = "$.index[?(@.docs=='2.3.0')].id"
//@ set 3.1.1 = "$.index[*][?(@.docs=='3.1.1')].id" //@ set 3.1.1 = "$.index[?(@.docs=='3.1.1')].id"
//@ set 3.1.2 = "$.index[*][?(@.docs=='3.1.2')].id" //@ set 3.1.2 = "$.index[?(@.docs=='3.1.2')].id"
//@ set 3.2.0 = "$.index[*][?(@.docs=='3.2.0')].id" //@ set 3.2.0 = "$.index[?(@.docs=='3.2.0')].id"
//@ set 3.2.2 = "$.index[*][?(@.docs=='3.2.2')].id" //@ set 3.2.2 = "$.index[?(@.docs=='3.2.2')].id"
//@ set 3.3.0 = "$.index[*][?(@.docs=='3.3.0')].id" //@ set 3.3.0 = "$.index[?(@.docs=='3.3.0')].id"
//@ set 3.3.1 = "$.index[*][?(@.docs=='3.3.1')].id" //@ set 3.3.1 = "$.index[?(@.docs=='3.3.1')].id"
pub enum EnumWithStrippedTupleVariants { pub enum EnumWithStrippedTupleVariants {
//@ count "$.index[*][?(@.name=='None')].inner.variant.kind.tuple[*]" 0 //@ count "$.index[?(@.name=='None')].inner.variant.kind.tuple[*]" 0
None(), None(),
//@ count "$.index[*][?(@.name=='One')].inner.variant.kind.tuple[*]" 1 //@ count "$.index[?(@.name=='One')].inner.variant.kind.tuple[*]" 1
//@ is "$.index[*][?(@.name=='One')].inner.variant.kind.tuple[0]" $1.1.0 //@ is "$.index[?(@.name=='One')].inner.variant.kind.tuple[0]" $1.1.0
One(/** 1.1.0*/ bool), One(/** 1.1.0*/ bool),
//@ count "$.index[*][?(@.name=='OneHidden')].inner.variant.kind.tuple[*]" 1 //@ count "$.index[?(@.name=='OneHidden')].inner.variant.kind.tuple[*]" 1
//@ is "$.index[*][?(@.name=='OneHidden')].inner.variant.kind.tuple[0]" null //@ is "$.index[?(@.name=='OneHidden')].inner.variant.kind.tuple[0]" null
OneHidden(#[doc(hidden)] bool), OneHidden(#[doc(hidden)] bool),
//@ count "$.index[*][?(@.name=='Two')].inner.variant.kind.tuple[*]" 2 //@ count "$.index[?(@.name=='Two')].inner.variant.kind.tuple[*]" 2
//@ is "$.index[*][?(@.name=='Two')].inner.variant.kind.tuple[0]" $2.1.0 //@ is "$.index[?(@.name=='Two')].inner.variant.kind.tuple[0]" $2.1.0
//@ is "$.index[*][?(@.name=='Two')].inner.variant.kind.tuple[1]" $2.1.1 //@ is "$.index[?(@.name=='Two')].inner.variant.kind.tuple[1]" $2.1.1
Two(/** 2.1.0*/ bool, /** 2.1.1*/ bool), Two(/** 2.1.0*/ bool, /** 2.1.1*/ bool),
//@ count "$.index[*][?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[*]" 2 //@ count "$.index[?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[*]" 2
//@ is "$.index[*][?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[0]" null //@ is "$.index[?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[0]" null
//@ is "$.index[*][?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[1]" $2.2.1 //@ is "$.index[?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[1]" $2.2.1
TwoLeftHidden(#[doc(hidden)] bool, /** 2.2.1*/ bool), TwoLeftHidden(#[doc(hidden)] bool, /** 2.2.1*/ bool),
//@ count "$.index[*][?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[*]" 2 //@ count "$.index[?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[*]" 2
//@ is "$.index[*][?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[0]" $2.3.0 //@ is "$.index[?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[0]" $2.3.0
//@ is "$.index[*][?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[1]" null //@ is "$.index[?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[1]" null
TwoRightHidden(/** 2.3.0*/ bool, #[doc(hidden)] bool), TwoRightHidden(/** 2.3.0*/ bool, #[doc(hidden)] bool),
//@ count "$.index[*][?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[*]" 2 //@ count "$.index[?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[*]" 2
//@ is "$.index[*][?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[0]" null //@ is "$.index[?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[0]" null
//@ is "$.index[*][?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[1]" null //@ is "$.index[?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[1]" null
TwoBothHidden(#[doc(hidden)] bool, #[doc(hidden)] bool), TwoBothHidden(#[doc(hidden)] bool, #[doc(hidden)] bool),
//@ count "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[*]" 3 //@ count "$.index[?(@.name=='Three1')].inner.variant.kind.tuple[*]" 3
//@ is "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[0]" null //@ is "$.index[?(@.name=='Three1')].inner.variant.kind.tuple[0]" null
//@ is "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[1]" $3.1.1 //@ is "$.index[?(@.name=='Three1')].inner.variant.kind.tuple[1]" $3.1.1
//@ is "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[2]" $3.1.2 //@ is "$.index[?(@.name=='Three1')].inner.variant.kind.tuple[2]" $3.1.2
Three1(#[doc(hidden)] bool, /** 3.1.1*/ bool, /** 3.1.2*/ bool), Three1(#[doc(hidden)] bool, /** 3.1.1*/ bool, /** 3.1.2*/ bool),
//@ count "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[*]" 3 //@ count "$.index[?(@.name=='Three2')].inner.variant.kind.tuple[*]" 3
//@ is "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[0]" $3.2.0 //@ is "$.index[?(@.name=='Three2')].inner.variant.kind.tuple[0]" $3.2.0
//@ is "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[1]" null //@ is "$.index[?(@.name=='Three2')].inner.variant.kind.tuple[1]" null
//@ is "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[2]" $3.2.2 //@ is "$.index[?(@.name=='Three2')].inner.variant.kind.tuple[2]" $3.2.2
Three2(/** 3.2.0*/ bool, #[doc(hidden)] bool, /** 3.2.2*/ bool), Three2(/** 3.2.0*/ bool, #[doc(hidden)] bool, /** 3.2.2*/ bool),
//@ count "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[*]" 3 //@ count "$.index[?(@.name=='Three3')].inner.variant.kind.tuple[*]" 3
//@ is "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[0]" $3.3.0 //@ is "$.index[?(@.name=='Three3')].inner.variant.kind.tuple[0]" $3.3.0
//@ is "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[1]" $3.3.1 //@ is "$.index[?(@.name=='Three3')].inner.variant.kind.tuple[1]" $3.3.1
//@ is "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[2]" null //@ is "$.index[?(@.name=='Three3')].inner.variant.kind.tuple[2]" null
Three3(/** 3.3.0*/ bool, /** 3.3.1*/ bool, #[doc(hidden)] bool), Three3(/** 3.3.0*/ bool, /** 3.3.1*/ bool, #[doc(hidden)] bool),
} }
//@ is "$.index[*][?(@.docs=='1.1.0')].name" '"0"' //@ is "$.index[?(@.docs=='1.1.0')].name" '"0"'
//@ is "$.index[*][?(@.docs=='2.1.0')].name" '"0"' //@ is "$.index[?(@.docs=='2.1.0')].name" '"0"'
//@ is "$.index[*][?(@.docs=='2.1.1')].name" '"1"' //@ is "$.index[?(@.docs=='2.1.1')].name" '"1"'
//@ is "$.index[*][?(@.docs=='2.2.1')].name" '"1"' //@ is "$.index[?(@.docs=='2.2.1')].name" '"1"'
//@ is "$.index[*][?(@.docs=='2.3.0')].name" '"0"' //@ is "$.index[?(@.docs=='2.3.0')].name" '"0"'
//@ is "$.index[*][?(@.docs=='3.1.1')].name" '"1"' //@ is "$.index[?(@.docs=='3.1.1')].name" '"1"'
//@ is "$.index[*][?(@.docs=='3.1.2')].name" '"2"' //@ is "$.index[?(@.docs=='3.1.2')].name" '"2"'
//@ is "$.index[*][?(@.docs=='3.2.0')].name" '"0"' //@ is "$.index[?(@.docs=='3.2.0')].name" '"0"'
//@ is "$.index[*][?(@.docs=='3.2.2')].name" '"2"' //@ is "$.index[?(@.docs=='3.2.2')].name" '"2"'
//@ is "$.index[*][?(@.docs=='3.3.0')].name" '"0"' //@ is "$.index[?(@.docs=='3.3.0')].name" '"0"'
//@ is "$.index[*][?(@.docs=='3.3.1')].name" '"1"' //@ is "$.index[?(@.docs=='3.3.1')].name" '"1"'
//@ is "$.index[*][?(@.docs=='1.1.0')].inner.struct_field" '{"primitive": "bool"}' //@ 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.0')].inner.struct_field" '{"primitive": "bool"}'
//@ is "$.index[*][?(@.docs=='2.1.1')].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.2.1')].inner.struct_field" '{"primitive": "bool"}'
//@ is "$.index[*][?(@.docs=='2.3.0')].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.1')].inner.struct_field" '{"primitive": "bool"}'
//@ is "$.index[*][?(@.docs=='3.1.2')].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.0')].inner.struct_field" '{"primitive": "bool"}'
//@ is "$.index[*][?(@.docs=='3.2.2')].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.0')].inner.struct_field" '{"primitive": "bool"}'
//@ is "$.index[*][?(@.docs=='3.3.1')].inner.struct_field" '{"primitive": "bool"}' //@ is "$.index[?(@.docs=='3.3.1')].inner.struct_field" '{"primitive": "bool"}'

View file

@ -1,15 +1,15 @@
// Regression test for <https://github.com/rust-lang/rust/issues/104942> // Regression test for <https://github.com/rust-lang/rust/issues/104942>
//@ set Color = "$.index[*][?(@.name == 'Color')].id" //@ set Color = "$.index[?(@.name == 'Color')].id"
pub enum Color { pub enum Color {
Red, Red,
Green, Green,
Blue, Blue,
} }
//@ set use_Color = "$.index[*][?(@.inner.use)].id" //@ set use_Color = "$.index[?(@.inner.use)].id"
//@ is "$.index[*][?(@.inner.use)].inner.use.id" $Color //@ is "$.index[?(@.inner.use)].inner.use.id" $Color
//@ is "$.index[*][?(@.inner.use)].inner.use.is_glob" true //@ is "$.index[?(@.inner.use)].inner.use.is_glob" true
pub use Color::*; pub use Color::*;
//@ ismany "$.index[*][?(@.name == 'use_glob')].inner.module.items[*]" $Color $use_Color //@ ismany "$.index[?(@.name == 'use_glob')].inner.module.items[*]" $Color $use_Color

View file

@ -1,12 +1,12 @@
//@ set AlwaysNone = "$.index[*][?(@.name == 'AlwaysNone')].id" //@ set AlwaysNone = "$.index[?(@.name == 'AlwaysNone')].id"
pub enum AlwaysNone { pub enum AlwaysNone {
//@ set None = "$.index[*][?(@.name == 'None')].id" //@ set None = "$.index[?(@.name == 'None')].id"
None, None,
} }
//@ is "$.index[*][?(@.name == 'AlwaysNone')].inner.enum.variants[*]" $None //@ is "$.index[?(@.name == 'AlwaysNone')].inner.enum.variants[*]" $None
//@ set use_None = "$.index[*][?(@.inner.use)].id" //@ set use_None = "$.index[?(@.inner.use)].id"
//@ is "$.index[*][?(@.inner.use)].inner.use.id" $None //@ is "$.index[?(@.inner.use)].inner.use.id" $None
pub use AlwaysNone::None; pub use AlwaysNone::None;
//@ ismany "$.index[*][?(@.name == 'use_variant')].inner.module.items[*]" $AlwaysNone $use_None //@ ismany "$.index[?(@.name == 'use_variant')].inner.module.items[*]" $AlwaysNone $use_None

View file

@ -2,8 +2,8 @@
extern crate color; extern crate color;
//@ has "$.index[*].inner.use[?(@.name == 'Red')]" //@ has "$.index[?(@.inner.use.name == 'Red')]"
pub use color::Color::Red; pub use color::Color::Red;
//@ !has "$.index[*][?(@.name == 'Red')]" //@ !has "$.index[?(@.name == 'Red')]"
//@ !has "$.index[*][?(@.name == 'Color')]" //@ !has "$.index[?(@.name == 'Color')]"

View file

@ -15,24 +15,24 @@ pub enum Foo {
Vll9, Vll9,
} }
//@ set 0 = '$.index[*][?(@.name == "Ews0")].id' //@ set 0 = '$.index[?(@.name == "Ews0")].id'
//@ set 1 = '$.index[*][?(@.name == "Dik1")].id' //@ set 1 = '$.index[?(@.name == "Dik1")].id'
//@ set 2 = '$.index[*][?(@.name == "Hsk2")].id' //@ set 2 = '$.index[?(@.name == "Hsk2")].id'
//@ set 3 = '$.index[*][?(@.name == "Djt3")].id' //@ set 3 = '$.index[?(@.name == "Djt3")].id'
//@ set 4 = '$.index[*][?(@.name == "Jnr4")].id' //@ set 4 = '$.index[?(@.name == "Jnr4")].id'
//@ set 5 = '$.index[*][?(@.name == "Dfs5")].id' //@ set 5 = '$.index[?(@.name == "Dfs5")].id'
//@ set 6 = '$.index[*][?(@.name == "Bja6")].id' //@ set 6 = '$.index[?(@.name == "Bja6")].id'
//@ set 7 = '$.index[*][?(@.name == "Lyc7")].id' //@ set 7 = '$.index[?(@.name == "Lyc7")].id'
//@ set 8 = '$.index[*][?(@.name == "Yqd8")].id' //@ set 8 = '$.index[?(@.name == "Yqd8")].id'
//@ set 9 = '$.index[*][?(@.name == "Vll9")].id' //@ set 9 = '$.index[?(@.name == "Vll9")].id'
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[0]' $0 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[0]' $0
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[1]' $1 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[1]' $1
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[2]' $2 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[2]' $2
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[3]' $3 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[3]' $3
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[4]' $4 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[4]' $4
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[5]' $5 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[5]' $5
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[6]' $6 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[6]' $6
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[7]' $7 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[7]' $7
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[8]' $8 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[8]' $8
//@ is '$.index[*][?(@.name == "Foo")].inner.enum.variants[9]' $9 //@ is '$.index[?(@.name == "Foo")].inner.enum.variants[9]' $9

View file

@ -1,10 +1,10 @@
//@ is "$.index[*][?(@.name=='EnumStruct')].visibility" \"public\" //@ is "$.index[?(@.name=='EnumStruct')].visibility" \"public\"
//@ has "$.index[*][?(@.name=='EnumStruct')].inner.enum" //@ has "$.index[?(@.name=='EnumStruct')].inner.enum"
pub enum EnumStruct { pub enum EnumStruct {
//@ has "$.index[*][?(@.name=='x')].inner.struct_field" //@ has "$.index[?(@.name=='x')].inner.struct_field"
//@ set x = "$.index[*][?(@.name=='x')].id" //@ set x = "$.index[?(@.name=='x')].id"
//@ has "$.index[*][?(@.name=='y')].inner.struct_field" //@ has "$.index[?(@.name=='y')].inner.struct_field"
//@ set y = "$.index[*][?(@.name=='y')].id" //@ set y = "$.index[?(@.name=='y')].id"
//@ ismany "$.index[*][?(@.name=='VariantS')].inner.variant.kind.struct.fields[*]" $x $y //@ ismany "$.index[?(@.name=='VariantS')].inner.variant.kind.struct.fields[*]" $x $y
VariantS { x: u32, y: String }, VariantS { x: u32, y: String },
} }

View file

@ -1,10 +1,10 @@
//@ is "$.index[*][?(@.name=='EnumTupleStruct')].visibility" \"public\" //@ is "$.index[?(@.name=='EnumTupleStruct')].visibility" \"public\"
//@ has "$.index[*][?(@.name=='EnumTupleStruct')].inner.enum" //@ has "$.index[?(@.name=='EnumTupleStruct')].inner.enum"
pub enum EnumTupleStruct { pub enum EnumTupleStruct {
//@ has "$.index[*][?(@.name=='0')].inner.struct_field" //@ has "$.index[?(@.name=='0')].inner.struct_field"
//@ set f0 = "$.index[*][?(@.name=='0')].id" //@ set f0 = "$.index[?(@.name=='0')].id"
//@ has "$.index[*][?(@.name=='1')].inner.struct_field" //@ has "$.index[?(@.name=='1')].inner.struct_field"
//@ set f1 = "$.index[*][?(@.name=='1')].id" //@ set f1 = "$.index[?(@.name=='1')].id"
//@ ismany "$.index[*][?(@.name=='VariantA')].inner.variant.kind.tuple[*]" $f0 $f1 //@ ismany "$.index[?(@.name=='VariantA')].inner.variant.kind.tuple[*]" $f0 $f1
VariantA(u32, String), VariantA(u32, String),
} }

View file

@ -1,22 +1,22 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
//@ is "$.index[*][?(@.name=='AbiRust')].inner.type_alias.type.function_pointer.header.abi" \"Rust\" //@ is "$.index[?(@.name=='AbiRust')].inner.type_alias.type.function_pointer.header.abi" \"Rust\"
pub type AbiRust = fn(); pub type AbiRust = fn();
//@ is "$.index[*][?(@.name=='AbiC')].inner.type_alias.type.function_pointer.header.abi" '{"C": {"unwind": false}}' //@ is "$.index[?(@.name=='AbiC')].inner.type_alias.type.function_pointer.header.abi" '{"C": {"unwind": false}}'
pub type AbiC = extern "C" fn(); pub type AbiC = extern "C" fn();
//@ is "$.index[*][?(@.name=='AbiSystem')].inner.type_alias.type.function_pointer.header.abi" '{"System": {"unwind": false}}' //@ is "$.index[?(@.name=='AbiSystem')].inner.type_alias.type.function_pointer.header.abi" '{"System": {"unwind": false}}'
pub type AbiSystem = extern "system" fn(); pub type AbiSystem = extern "system" fn();
//@ is "$.index[*][?(@.name=='AbiCUnwind')].inner.type_alias.type.function_pointer.header.abi" '{"C": {"unwind": true}}' //@ is "$.index[?(@.name=='AbiCUnwind')].inner.type_alias.type.function_pointer.header.abi" '{"C": {"unwind": true}}'
pub type AbiCUnwind = extern "C-unwind" fn(); pub type AbiCUnwind = extern "C-unwind" fn();
//@ is "$.index[*][?(@.name=='AbiSystemUnwind')].inner.type_alias.type.function_pointer.header.abi" '{"System": {"unwind": true}}' //@ is "$.index[?(@.name=='AbiSystemUnwind')].inner.type_alias.type.function_pointer.header.abi" '{"System": {"unwind": true}}'
pub type AbiSystemUnwind = extern "system-unwind" fn(); pub type AbiSystemUnwind = extern "system-unwind" fn();
//@ is "$.index[*][?(@.name=='AbiVecorcall')].inner.type_alias.type.function_pointer.header.abi.Other" '"\"vectorcall\""' //@ is "$.index[?(@.name=='AbiVecorcall')].inner.type_alias.type.function_pointer.header.abi.Other" '"\"vectorcall\""'
pub type AbiVecorcall = extern "vectorcall" fn(); pub type AbiVecorcall = extern "vectorcall" fn();
//@ is "$.index[*][?(@.name=='AbiVecorcallUnwind')].inner.type_alias.type.function_pointer.header.abi.Other" '"\"vectorcall-unwind\""' //@ is "$.index[?(@.name=='AbiVecorcallUnwind')].inner.type_alias.type.function_pointer.header.abi.Other" '"\"vectorcall-unwind\""'
pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn(); pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn();

View file

@ -1,8 +1,8 @@
//@ count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.inputs[*]" 1 //@ count "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.inputs[*]" 1
//@ is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.inputs[0][0]" '"val"' //@ is "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.inputs[0][0]" '"val"'
//@ is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.inputs[0][1].borrowed_ref.lifetime" \"\'c\" //@ is "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.inputs[0][1].borrowed_ref.lifetime" \"\'c\"
//@ is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.output.primitive" \"i32\" //@ is "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.sig.output.primitive" \"i32\"
//@ count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.generic_params[*]" 1 //@ count "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.generic_params[*]" 1
//@ is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.generic_params[0].name" \"\'c\" //@ is "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.generic_params[0].name" \"\'c\"
//@ is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }' //@ is "$.index[?(@.name=='WithHigherRankTraitBounds')].inner.type_alias.type.function_pointer.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }'
pub type WithHigherRankTraitBounds = for<'c> fn(val: &'c i32) -> i32; pub type WithHigherRankTraitBounds = for<'c> fn(val: &'c i32) -> i32;

View file

@ -1,9 +1,9 @@
//@ is "$.index[*][?(@.name=='FnPointer')].inner.type_alias.type.function_pointer.header.is_unsafe" false //@ is "$.index[?(@.name=='FnPointer')].inner.type_alias.type.function_pointer.header.is_unsafe" false
//@ is "$.index[*][?(@.name=='FnPointer')].inner.type_alias.type.function_pointer.header.is_const" false //@ is "$.index[?(@.name=='FnPointer')].inner.type_alias.type.function_pointer.header.is_const" false
//@ is "$.index[*][?(@.name=='FnPointer')].inner.type_alias.type.function_pointer.header.is_async" false //@ is "$.index[?(@.name=='FnPointer')].inner.type_alias.type.function_pointer.header.is_async" false
pub type FnPointer = fn(); pub type FnPointer = fn();
//@ is "$.index[*][?(@.name=='UnsafePointer')].inner.type_alias.type.function_pointer.header.is_unsafe" true //@ is "$.index[?(@.name=='UnsafePointer')].inner.type_alias.type.function_pointer.header.is_unsafe" true
//@ is "$.index[*][?(@.name=='UnsafePointer')].inner.type_alias.type.function_pointer.header.is_const" false //@ is "$.index[?(@.name=='UnsafePointer')].inner.type_alias.type.function_pointer.header.is_const" false
//@ is "$.index[*][?(@.name=='UnsafePointer')].inner.type_alias.type.function_pointer.header.is_async" false //@ is "$.index[?(@.name=='UnsafePointer')].inner.type_alias.type.function_pointer.header.is_async" false
pub type UnsafePointer = unsafe fn(); pub type UnsafePointer = unsafe fn();

View file

@ -1,22 +1,22 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
//@ is "$.index[*][?(@.name=='abi_rust')].inner.function.header.abi" \"Rust\" //@ is "$.index[?(@.name=='abi_rust')].inner.function.header.abi" \"Rust\"
pub fn abi_rust() {} pub fn abi_rust() {}
//@ is "$.index[*][?(@.name=='abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}' //@ is "$.index[?(@.name=='abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}'
pub extern "C" fn abi_c() {} pub extern "C" fn abi_c() {}
//@ is "$.index[*][?(@.name=='abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}' //@ is "$.index[?(@.name=='abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}'
pub extern "system" fn abi_system() {} pub extern "system" fn abi_system() {}
//@ is "$.index[*][?(@.name=='abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}' //@ is "$.index[?(@.name=='abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}'
pub extern "C-unwind" fn abi_c_unwind() {} pub extern "C-unwind" fn abi_c_unwind() {}
//@ is "$.index[*][?(@.name=='abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}' //@ is "$.index[?(@.name=='abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}'
pub extern "system-unwind" fn abi_system_unwind() {} pub extern "system-unwind" fn abi_system_unwind() {}
//@ is "$.index[*][?(@.name=='abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""' //@ is "$.index[?(@.name=='abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""'
pub extern "vectorcall" fn abi_vectorcall() {} pub extern "vectorcall" fn abi_vectorcall() {}
//@ is "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""' //@ is "$.index[?(@.name=='abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""'
pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {} pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {}

View file

@ -4,30 +4,30 @@
use std::future::Future; use std::future::Future;
//@ is "$.index[*][?(@.name=='get_int')].inner.function.sig.output.primitive" \"i32\" //@ is "$.index[?(@.name=='get_int')].inner.function.sig.output.primitive" \"i32\"
//@ is "$.index[*][?(@.name=='get_int')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='get_int')].inner.function.header.is_async" false
pub fn get_int() -> i32 { pub fn get_int() -> i32 {
42 42
} }
//@ is "$.index[*][?(@.name=='get_int_async')].inner.function.sig.output.primitive" \"i32\" //@ is "$.index[?(@.name=='get_int_async')].inner.function.sig.output.primitive" \"i32\"
//@ is "$.index[*][?(@.name=='get_int_async')].inner.function.header.is_async" true //@ is "$.index[?(@.name=='get_int_async')].inner.function.header.is_async" true
pub async fn get_int_async() -> i32 { pub async fn get_int_async() -> i32 {
42 42
} }
//@ is "$.index[*][?(@.name=='get_int_future')].inner.function.sig.output.impl_trait[0].trait_bound.trait.path" '"Future"' //@ is "$.index[?(@.name=='get_int_future')].inner.function.sig.output.impl_trait[0].trait_bound.trait.path" '"Future"'
//@ is "$.index[*][?(@.name=='get_int_future')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].name" '"Output"' //@ is "$.index[?(@.name=='get_int_future')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].name" '"Output"'
//@ is "$.index[*][?(@.name=='get_int_future')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].binding.equality.type.primitive" \"i32\" //@ is "$.index[?(@.name=='get_int_future')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].binding.equality.type.primitive" \"i32\"
//@ is "$.index[*][?(@.name=='get_int_future')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='get_int_future')].inner.function.header.is_async" false
pub fn get_int_future() -> impl Future<Output = i32> { pub fn get_int_future() -> impl Future<Output = i32> {
async { 42 } async { 42 }
} }
//@ is "$.index[*][?(@.name=='get_int_future_async')].inner.function.sig.output.impl_trait[0].trait_bound.trait.path" '"Future"' //@ is "$.index[?(@.name=='get_int_future_async')].inner.function.sig.output.impl_trait[0].trait_bound.trait.path" '"Future"'
//@ is "$.index[*][?(@.name=='get_int_future_async')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].name" '"Output"' //@ is "$.index[?(@.name=='get_int_future_async')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].name" '"Output"'
//@ is "$.index[*][?(@.name=='get_int_future_async')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].binding.equality.type.primitive" \"i32\" //@ is "$.index[?(@.name=='get_int_future_async')].inner.function.sig.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.constraints[0].binding.equality.type.primitive" \"i32\"
//@ is "$.index[*][?(@.name=='get_int_future_async')].inner.function.header.is_async" true //@ is "$.index[?(@.name=='get_int_future_async')].inner.function.header.is_async" true
pub async fn get_int_future_async() -> impl Future<Output = i32> { pub async fn get_int_future_async() -> impl Future<Output = i32> {
async { 42 } async { 42 }
} }

View file

@ -1,6 +1,6 @@
extern "C" { extern "C" {
//@ is "$.index[*][?(@.name == 'not_variadic')].inner.function.sig.is_c_variadic" false //@ is "$.index[?(@.name == 'not_variadic')].inner.function.sig.is_c_variadic" false
pub fn not_variadic(_: i32); pub fn not_variadic(_: i32);
//@ is "$.index[*][?(@.name == 'variadic')].inner.function.sig.is_c_variadic" true //@ is "$.index[?(@.name == 'variadic')].inner.function.sig.is_c_variadic" true
pub fn variadic(_: i32, ...); pub fn variadic(_: i32, ...);
} }

View file

@ -1,17 +1,17 @@
extern "C" { extern "C" {
//@ is "$.index[*][?(@.name=='f1')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='f1')].inner.function.header.is_unsafe" true
pub fn f1(); pub fn f1();
// items in `extern` blocks without an `unsafe` qualifier cannot have safety qualifiers // items in `extern` blocks without an `unsafe` qualifier cannot have safety qualifiers
} }
unsafe extern "C" { unsafe extern "C" {
//@ is "$.index[*][?(@.name=='f4')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='f4')].inner.function.header.is_unsafe" true
pub fn f4(); pub fn f4();
//@ is "$.index[*][?(@.name=='f5')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='f5')].inner.function.header.is_unsafe" true
pub unsafe fn f5(); pub unsafe fn f5();
//@ is "$.index[*][?(@.name=='f6')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='f6')].inner.function.header.is_unsafe" false
pub safe fn f6(); pub safe fn f6();
} }

View file

@ -1,58 +1,58 @@
//@ set foo = "$.index[*][?(@.name=='Foo')].id" //@ set foo = "$.index[?(@.name=='Foo')].id"
pub trait Foo {} pub trait Foo {}
//@ set generic_foo = "$.index[*][?(@.name=='GenericFoo')].id" //@ set generic_foo = "$.index[?(@.name=='GenericFoo')].id"
pub trait GenericFoo<'a> {} pub trait GenericFoo<'a> {}
//@ is "$.index[*][?(@.name=='generics')].inner.function.generics.where_predicates" "[]" //@ is "$.index[?(@.name=='generics')].inner.function.generics.where_predicates" "[]"
//@ count "$.index[*][?(@.name=='generics')].inner.function.generics.params[*]" 1 //@ count "$.index[?(@.name=='generics')].inner.function.generics.params[*]" 1
//@ is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].name" '"F"' //@ is "$.index[?(@.name=='generics')].inner.function.generics.params[0].name" '"F"'
//@ is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].kind.type.default" 'null' //@ is "$.index[?(@.name=='generics')].inner.function.generics.params[0].kind.type.default" 'null'
//@ count "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].kind.type.bounds[*]" 1 //@ count "$.index[?(@.name=='generics')].inner.function.generics.params[0].kind.type.bounds[*]" 1
//@ is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" '$foo' //@ is "$.index[?(@.name=='generics')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" '$foo'
//@ count "$.index[*][?(@.name=='generics')].inner.function.sig.inputs[*]" 1 //@ count "$.index[?(@.name=='generics')].inner.function.sig.inputs[*]" 1
//@ is "$.index[*][?(@.name=='generics')].inner.function.sig.inputs[0][0]" '"f"' //@ is "$.index[?(@.name=='generics')].inner.function.sig.inputs[0][0]" '"f"'
//@ is "$.index[*][?(@.name=='generics')].inner.function.sig.inputs[0][1].generic" '"F"' //@ is "$.index[?(@.name=='generics')].inner.function.sig.inputs[0][1].generic" '"F"'
pub fn generics<F: Foo>(f: F) {} pub fn generics<F: Foo>(f: F) {}
//@ is "$.index[*][?(@.name=='impl_trait')].inner.function.generics.where_predicates" "[]" //@ is "$.index[?(@.name=='impl_trait')].inner.function.generics.where_predicates" "[]"
//@ count "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[*]" 1 //@ count "$.index[?(@.name=='impl_trait')].inner.function.generics.params[*]" 1
//@ is "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[0].name" '"impl Foo"' //@ is "$.index[?(@.name=='impl_trait')].inner.function.generics.params[0].name" '"impl Foo"'
//@ is "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $foo //@ is "$.index[?(@.name=='impl_trait')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $foo
//@ count "$.index[*][?(@.name=='impl_trait')].inner.function.sig.inputs[*]" 1 //@ count "$.index[?(@.name=='impl_trait')].inner.function.sig.inputs[*]" 1
//@ is "$.index[*][?(@.name=='impl_trait')].inner.function.sig.inputs[0][0]" '"f"' //@ is "$.index[?(@.name=='impl_trait')].inner.function.sig.inputs[0][0]" '"f"'
//@ count "$.index[*][?(@.name=='impl_trait')].inner.function.sig.inputs[0][1].impl_trait[*]" 1 //@ count "$.index[?(@.name=='impl_trait')].inner.function.sig.inputs[0][1].impl_trait[*]" 1
//@ is "$.index[*][?(@.name=='impl_trait')].inner.function.sig.inputs[0][1].impl_trait[0].trait_bound.trait.id" $foo //@ is "$.index[?(@.name=='impl_trait')].inner.function.sig.inputs[0][1].impl_trait[0].trait_bound.trait.id" $foo
pub fn impl_trait(f: impl Foo) {} pub fn impl_trait(f: impl Foo) {}
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[*]" 3 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.params[*]" 3
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[0].name" '"F"' //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.params[0].name" '"F"'
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[0].kind" '{"type": {"bounds": [], "default": null, "is_synthetic": false}}' //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.params[0].kind" '{"type": {"bounds": [], "default": null, "is_synthetic": false}}'
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.sig.inputs[*]" 3 //@ count "$.index[?(@.name=='where_clase')].inner.function.sig.inputs[*]" 3
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.sig.inputs[0][0]" '"f"' //@ is "$.index[?(@.name=='where_clase')].inner.function.sig.inputs[0][0]" '"f"'
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.sig.inputs[0][1].generic" '"F"' //@ is "$.index[?(@.name=='where_clase')].inner.function.sig.inputs[0][1].generic" '"F"'
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[*]" 3 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[*]" 3
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.type.generic" \"F\" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.type.generic" \"F\"
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.bounds[*]" 1 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.bounds[*]" 1
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.bounds[0].trait_bound.trait.id" $foo //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.bounds[0].trait_bound.trait.id" $foo
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.type.generic" \"G\" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.type.generic" \"G\"
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[*]" 1 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[*]" 1
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.trait.id" $generic_foo //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.trait.id" $generic_foo
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[*]" 1 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[*]" 1
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[0].name" \"\'a\" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[0].name" \"\'a\"
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[0].kind.lifetime.outlives" "[]" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[0].kind.lifetime.outlives" "[]"
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.generic_params" "[]" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.generic_params" "[]"
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.lifetime" \"\'b\" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.lifetime" \"\'b\"
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.type.generic" \"H\" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.type.generic" \"H\"
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[*]" 1 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[*]" 1
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[0].trait_bound.trait.id" $foo //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[0].trait_bound.trait.id" $foo
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[0].trait_bound.generic_params" "[]" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[0].trait_bound.generic_params" "[]"
//@ count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[*]" 1 //@ count "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[*]" 1
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[0].name" \"\'b\" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[0].name" \"\'b\"
//@ is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[0].kind.lifetime.outlives" "[]" //@ is "$.index[?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[0].kind.lifetime.outlives" "[]"
pub fn where_clase<F, G, H>(f: F, g: G, h: H) pub fn where_clase<F, G, H>(f: F, g: G, h: H)
where where
F: Foo, F: Foo,

View file

@ -1,11 +1,11 @@
//@ count "$.index[*][?(@.name=='generic_returns')].inner.module.items[*]" 2 //@ count "$.index[?(@.name=='generic_returns')].inner.module.items[*]" 2
//@ set foo = "$.index[*][?(@.name=='Foo')].id" //@ set foo = "$.index[?(@.name=='Foo')].id"
pub trait Foo {} pub trait Foo {}
//@ is "$.index[*][?(@.name=='get_foo')].inner.function.sig.inputs" [] //@ is "$.index[?(@.name=='get_foo')].inner.function.sig.inputs" []
//@ count "$.index[*][?(@.name=='get_foo')].inner.function.sig.output.impl_trait[*]" 1 //@ count "$.index[?(@.name=='get_foo')].inner.function.sig.output.impl_trait[*]" 1
//@ is "$.index[*][?(@.name=='get_foo')].inner.function.sig.output.impl_trait[0].trait_bound.trait.id" $foo //@ is "$.index[?(@.name=='get_foo')].inner.function.sig.output.impl_trait[0].trait_bound.trait.id" $foo
pub fn get_foo() -> impl Foo { pub fn get_foo() -> impl Foo {
Fooer {} Fooer {}
} }

View file

@ -1,20 +1,20 @@
//@ set wham_id = "$.index[*][?(@.name=='Wham')].id" //@ set wham_id = "$.index[?(@.name=='Wham')].id"
pub trait Wham {} pub trait Wham {}
//@ is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.where_predicates" [] //@ is "$.index[?(@.name=='one_generic_param_fn')].inner.function.generics.where_predicates" []
//@ count "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[*]" 1 //@ count "$.index[?(@.name=='one_generic_param_fn')].inner.function.generics.params[*]" 1
//@ is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].name" '"T"' //@ is "$.index[?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].name" '"T"'
//@ is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.is_synthetic" false //@ is "$.index[?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.is_synthetic" false
//@ is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id //@ is "$.index[?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id
//@ is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.sig.inputs" '[["w", {"generic": "T"}]]' //@ is "$.index[?(@.name=='one_generic_param_fn')].inner.function.sig.inputs" '[["w", {"generic": "T"}]]'
pub fn one_generic_param_fn<T: Wham>(w: T) {} pub fn one_generic_param_fn<T: Wham>(w: T) {}
//@ is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.where_predicates" [] //@ is "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.where_predicates" []
//@ count "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[*]" 1 //@ count "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[*]" 1
//@ is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].name" '"impl Wham"' //@ is "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].name" '"impl Wham"'
//@ is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.is_synthetic" true //@ is "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.is_synthetic" true
//@ is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id //@ is "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id
//@ count "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.sig.inputs[*]" 1 //@ count "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.sig.inputs[*]" 1
//@ is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.sig.inputs[0][0]" '"w"' //@ is "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.sig.inputs[0][0]" '"w"'
//@ is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.sig.inputs[0][1].impl_trait[0].trait_bound.trait.id" $wham_id //@ is "$.index[?(@.name=='one_synthetic_generic_param_fn')].inner.function.sig.inputs[0][1].impl_trait[0].trait_bound.trait.id" $wham_id
pub fn one_synthetic_generic_param_fn(w: impl Wham) {} pub fn one_synthetic_generic_param_fn(w: impl Wham) {}

View file

@ -1,7 +1,7 @@
//@ is "$.index[*][?(@.name=='fst')].inner.function.sig.inputs[0][0]" '"(x, _)"' //@ is "$.index[?(@.name=='fst')].inner.function.sig.inputs[0][0]" '"(x, _)"'
pub fn fst<X, Y>((x, _): (X, Y)) -> X { pub fn fst<X, Y>((x, _): (X, Y)) -> X {
x x
} }
//@ is "$.index[*][?(@.name=='drop_int')].inner.function.sig.inputs[0][0]" '"_"' //@ is "$.index[?(@.name=='drop_int')].inner.function.sig.inputs[0][0]" '"_"'
pub fn drop_int(_: i32) {} pub fn drop_int(_: i32) {}

View file

@ -1,33 +1,33 @@
//@ edition:2018 //@ edition:2018
//@ is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='nothing_fn')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='nothing_fn')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='nothing_fn')].inner.function.header.is_unsafe" false
pub fn nothing_fn() {} pub fn nothing_fn() {}
//@ is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='unsafe_fn')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='unsafe_fn')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='unsafe_fn')].inner.function.header.is_unsafe" true
pub unsafe fn unsafe_fn() {} pub unsafe fn unsafe_fn() {}
//@ is "$.index[*][?(@.name=='const_fn')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='const_fn')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='const_fn')].inner.function.header.is_const" true //@ is "$.index[?(@.name=='const_fn')].inner.function.header.is_const" true
//@ is "$.index[*][?(@.name=='const_fn')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='const_fn')].inner.function.header.is_unsafe" false
pub const fn const_fn() {} pub const fn const_fn() {}
//@ is "$.index[*][?(@.name=='async_fn')].inner.function.header.is_async" true //@ is "$.index[?(@.name=='async_fn')].inner.function.header.is_async" true
//@ is "$.index[*][?(@.name=='async_fn')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='async_fn')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='async_fn')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='async_fn')].inner.function.header.is_unsafe" false
pub async fn async_fn() {} pub async fn async_fn() {}
//@ is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.is_async" true //@ is "$.index[?(@.name=='async_unsafe_fn')].inner.function.header.is_async" true
//@ is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='async_unsafe_fn')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='async_unsafe_fn')].inner.function.header.is_unsafe" true
pub async unsafe fn async_unsafe_fn() {} pub async unsafe fn async_unsafe_fn() {}
//@ is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='const_unsafe_fn')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.is_const" true //@ is "$.index[?(@.name=='const_unsafe_fn')].inner.function.header.is_const" true
//@ is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='const_unsafe_fn')].inner.function.header.is_unsafe" true
pub const unsafe fn const_unsafe_fn() {} pub const unsafe fn const_unsafe_fn() {}
// It's impossible for a function to be both const and async, so no test for that // It's impossible for a function to be both const and async, so no test for that

View file

@ -1,9 +1,9 @@
// Regression test for <https://github.com/rust-lang/rust/issues/104851> // Regression test for <https://github.com/rust-lang/rust/issues/104851>
///@ set foo = "$.index[*][?(@.name=='Foo')].id" ///@ set foo = "$.index[?(@.name=='Foo')].id"
pub type Foo = i32; pub type Foo = i32;
//@ is "$.index[*][?(@.name=='demo')].inner.function.sig.output.resolved_path.id" $foo //@ is "$.index[?(@.name=='demo')].inner.function.sig.output.resolved_path.id" $foo
pub fn demo() -> Foo { pub fn demo() -> Foo {
42 42
} }

View file

@ -1,32 +1,32 @@
pub trait Display {} pub trait Display {}
pub trait LendingIterator { pub trait LendingIterator {
//@ count "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.params[*]" 1 //@ count "$.index[?(@.name=='LendingItem')].inner.assoc_type.generics.params[*]" 1
//@ is "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.params[*].name" \"\'a\" //@ is "$.index[?(@.name=='LendingItem')].inner.assoc_type.generics.params[*].name" \"\'a\"
//@ count "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*]" 1 //@ count "$.index[?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*]" 1
//@ is "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*].bound_predicate.type.generic" \"Self\" //@ is "$.index[?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*].bound_predicate.type.generic" \"Self\"
//@ is "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*].bound_predicate.bounds[*].outlives" \"\'a\" //@ is "$.index[?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*].bound_predicate.bounds[*].outlives" \"\'a\"
//@ count "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.bounds[*]" 1 //@ count "$.index[?(@.name=='LendingItem')].inner.assoc_type.bounds[*]" 1
type LendingItem<'a>: Display type LendingItem<'a>: Display
where where
Self: 'a; Self: 'a;
//@ count "$.index[*][?(@.name=='lending_next')].inner.function.sig.output.qualified_path.args.angle_bracketed.args[*]" 1 //@ count "$.index[?(@.name=='lending_next')].inner.function.sig.output.qualified_path.args.angle_bracketed.args[*]" 1
//@ count "$.index[*][?(@.name=='lending_next')].inner.function.sig.output.qualified_path.args.angle_bracketed.bindings[*]" 0 //@ count "$.index[?(@.name=='lending_next')].inner.function.sig.output.qualified_path.args.angle_bracketed.bindings[*]" 0
//@ is "$.index[*][?(@.name=='lending_next')].inner.function.sig.output.qualified_path.self_type.generic" \"Self\" //@ is "$.index[?(@.name=='lending_next')].inner.function.sig.output.qualified_path.self_type.generic" \"Self\"
//@ is "$.index[*][?(@.name=='lending_next')].inner.function.sig.output.qualified_path.name" \"LendingItem\" //@ is "$.index[?(@.name=='lending_next')].inner.function.sig.output.qualified_path.name" \"LendingItem\"
fn lending_next<'a>(&'a self) -> Self::LendingItem<'a>; fn lending_next<'a>(&'a self) -> Self::LendingItem<'a>;
} }
pub trait Iterator { pub trait Iterator {
//@ count "$.index[*][?(@.name=='Item')].inner.assoc_type.generics.params[*]" 0 //@ count "$.index[?(@.name=='Item')].inner.assoc_type.generics.params[*]" 0
//@ count "$.index[*][?(@.name=='Item')].inner.assoc_type.generics.where_predicates[*]" 0 //@ count "$.index[?(@.name=='Item')].inner.assoc_type.generics.where_predicates[*]" 0
//@ count "$.index[*][?(@.name=='Item')].inner.assoc_type.bounds[*]" 1 //@ count "$.index[?(@.name=='Item')].inner.assoc_type.bounds[*]" 1
type Item: Display; type Item: Display;
//@ count "$.index[*][?(@.name=='next')].inner.function.sig.output.qualified_path.args.angle_bracketed.args[*]" 0 //@ count "$.index[?(@.name=='next')].inner.function.sig.output.qualified_path.args.angle_bracketed.args[*]" 0
//@ count "$.index[*][?(@.name=='next')].inner.function.sig.output.qualified_path.args.angle_bracketed.bindings[*]" 0 //@ count "$.index[?(@.name=='next')].inner.function.sig.output.qualified_path.args.angle_bracketed.bindings[*]" 0
//@ is "$.index[*][?(@.name=='next')].inner.function.sig.output.qualified_path.self_type.generic" \"Self\" //@ is "$.index[?(@.name=='next')].inner.function.sig.output.qualified_path.self_type.generic" \"Self\"
//@ is "$.index[*][?(@.name=='next')].inner.function.sig.output.qualified_path.name" \"Item\" //@ is "$.index[?(@.name=='next')].inner.function.sig.output.qualified_path.name" \"Item\"
fn next<'a>(&'a self) -> Self::Item; fn next<'a>(&'a self) -> Self::Item;
} }

View file

@ -1,8 +1,8 @@
// Regression test for <https://github.com/rust-lang/rust/issues/97986>. // Regression test for <https://github.com/rust-lang/rust/issues/97986>.
//@ has "$.index[*][?(@.name=='f')]" //@ has "$.index[?(@.name=='f')]"
//@ has "$.index[*][?(@.name=='AssocTy')]" //@ has "$.index[?(@.name=='AssocTy')]"
//@ has "$.index[*][?(@.name=='AssocConst')]" //@ has "$.index[?(@.name=='AssocConst')]"
pub mod m { pub mod m {
pub struct S; pub struct S;

View file

@ -2,8 +2,8 @@
#![no_std] #![no_std]
//@ has "$.index[*][?(@.name=='glob')]" //@ has "$.index[?(@.name=='glob')]"
//@ has "$.index[*][?(@.inner.use)].inner.use.name" \"*\" //@ has "$.index[?(@.inner.use)].inner.use.name" \"*\"
mod m1 { mod m1 {
pub fn f() {} pub fn f() {}

View file

@ -4,25 +4,25 @@ pub struct AlwaysTrue;
/// impl IntoIterator /// impl IntoIterator
impl IntoIterator for AlwaysTrue { impl IntoIterator for AlwaysTrue {
//@ set Item = '$.index[*][?(@.docs=="type Item")].id' //@ set Item = '$.index[?(@.docs=="type Item")].id'
/// type Item /// type Item
type Item = bool; type Item = bool;
//@ count '$.index[*][?(@.docs=="type IntoIter")].inner.assoc_type.type.impl_trait[*]' 1 //@ 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"' //@ 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 //@ 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].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"' //@ 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"'
//@ set IntoIter = '$.index[*][?(@.docs=="type IntoIter")].id' //@ set IntoIter = '$.index[?(@.docs=="type IntoIter")].id'
/// type IntoIter /// type IntoIter
type IntoIter = impl Iterator<Item = bool>; type IntoIter = impl Iterator<Item = bool>;
//@ set into_iter = '$.index[*][?(@.docs=="fn into_iter")].id' //@ set into_iter = '$.index[?(@.docs=="fn into_iter")].id'
/// fn into_iter /// fn into_iter
fn into_iter(self) -> Self::IntoIter { fn into_iter(self) -> Self::IntoIter {
std::iter::repeat(true) std::iter::repeat(true)
} }
} }
//@ ismany '$.index[*][?(@.docs=="impl IntoIterator")].inner.impl.items[*]' $Item $IntoIter $into_iter //@ ismany '$.index[?(@.docs=="impl IntoIterator")].inner.impl.items[*]' $Item $IntoIter $into_iter

View file

@ -1,4 +1,4 @@
//@ is "$.index[*][?(@.name=='hello')].inner.function.sig.output.impl_trait[1].use[0].lifetime" \"\'a\" //@ is "$.index[?(@.name=='hello')].inner.function.sig.output.impl_trait[1].use[0].lifetime" \"\'a\"
//@ is "$.index[*][?(@.name=='hello')].inner.function.sig.output.impl_trait[1].use[1].param" \"T\" //@ is "$.index[?(@.name=='hello')].inner.function.sig.output.impl_trait[1].use[1].param" \"T\"
//@ is "$.index[*][?(@.name=='hello')].inner.function.sig.output.impl_trait[1].use[2].param" \"N\" //@ is "$.index[?(@.name=='hello')].inner.function.sig.output.impl_trait[1].use[2].param" \"N\"
pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {} pub fn hello<'a, T, const N: usize>() -> impl Sized + use<'a, T, N> {}

View file

@ -15,8 +15,8 @@ impl Foo {
} }
// Testing spans, so all tests below code // Testing spans, so all tests below code
//@ is "$.index[*][?(@.docs=='has span')].span.begin" "[13, 0]" //@ is "$.index[?(@.docs=='has span')].span.begin" "[13, 0]"
//@ is "$.index[*][?(@.docs=='has span')].span.end" "[15, 1]" //@ is "$.index[?(@.docs=='has span')].span.end" "[15, 1]"
// FIXME: this doesn't work due to https://github.com/freestrings/jsonpath/issues/91 // FIXME: this doesn't work due to https://github.com/freestrings/jsonpath/issues/91
// is "$.index[*][?(@.inner.impl.is_synthetic==true)].span" null // is "$.index[?(@.inner.impl.is_synthetic==true)].span" null
pub struct Foo; pub struct Foo;

View file

@ -1,11 +1,11 @@
// Test for the ICE in rust/83718 // Test for the ICE in rust/83718
// A blanket impl plus a local type together shouldn't result in mismatched ID issues // A blanket impl plus a local type together shouldn't result in mismatched ID issues
//@ has "$.index[*][?(@.name=='Load')]" //@ has "$.index[?(@.name=='Load')]"
pub trait Load { pub trait Load {
//@ has "$.index[*][?(@.name=='load')]" //@ has "$.index[?(@.name=='load')]"
fn load() {} fn load() {}
//@ has "$.index[*][?(@.name=='write')]" //@ has "$.index[?(@.name=='write')]"
fn write(self) {} fn write(self) {}
} }
@ -14,5 +14,5 @@ impl<P> Load for P {
fn write(self) {} fn write(self) {}
} }
//@ has "$.index[*][?(@.name=='Wrapper')]" //@ has "$.index[?(@.name=='Wrapper')]"
pub struct Wrapper {} pub struct Wrapper {}

View file

@ -3,16 +3,16 @@ extern crate foreign_trait;
/// ForeignTrait id hack /// ForeignTrait id hack
pub use foreign_trait::ForeignTrait as _; pub use foreign_trait::ForeignTrait as _;
//@ set ForeignTrait = "$.index[*][?(@.docs=='ForeignTrait id hack')].inner.use.id" //@ set ForeignTrait = "$.index[?(@.docs=='ForeignTrait id hack')].inner.use.id"
pub struct LocalStruct; pub struct LocalStruct;
//@ set LocalStruct = "$.index[*][?(@.name=='LocalStruct')].id" //@ set LocalStruct = "$.index[?(@.name=='LocalStruct')].id"
/// foreign for local /// foreign for local
impl foreign_trait::ForeignTrait for LocalStruct {} impl foreign_trait::ForeignTrait for LocalStruct {}
//@ set impl = "$.index[*][?(@.docs=='foreign for local')].id" //@ 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.for.resolved_path.id" $LocalStruct
//@ is "$.index[*][?(@.docs=='foreign for local')].inner.impl.trait.id" $ForeignTrait //@ is "$.index[?(@.docs=='foreign for local')].inner.impl.trait.id" $ForeignTrait
//@ has "$.index[*][?(@.name=='LocalStruct')].inner.struct.impls[*]" $impl //@ has "$.index[?(@.name=='LocalStruct')].inner.struct.impls[*]" $impl

View file

@ -4,13 +4,13 @@ pub struct Foo;
impl Foo { impl Foo {
fn baz() {} fn baz() {}
} }
//@ !has '$.index[*][?(@.docs=="impl Foo priv")]' //@ !has '$.index[?(@.docs=="impl Foo priv")]'
/// impl Foo pub /// impl Foo pub
impl Foo { impl Foo {
pub fn qux() {} pub fn qux() {}
} }
//@ is '$.index[*][?(@.docs=="impl Foo pub")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo pub")].visibility' '"default"'
/// impl Foo hidden /// impl Foo hidden
impl Foo { impl Foo {
@ -18,4 +18,4 @@ impl Foo {
pub fn __quazl() {} pub fn __quazl() {}
} }
// FIXME(#111564): Is this the right behaviour? // FIXME(#111564): Is this the right behaviour?
//@ is '$.index[*][?(@.docs=="impl Foo hidden")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo hidden")].visibility' '"default"'

View file

@ -7,13 +7,13 @@ impl Foo {
fn baz() {} fn baz() {}
} }
// FIXME(#111564): Is this the right behaviour? // FIXME(#111564): Is this the right behaviour?
//@ is '$.index[*][?(@.docs=="impl Foo priv")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo priv")].visibility' '"default"'
/// impl Foo pub /// impl Foo pub
impl Foo { impl Foo {
pub fn qux() {} pub fn qux() {}
} }
//@ is '$.index[*][?(@.docs=="impl Foo pub")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo pub")].visibility' '"default"'
/// impl Foo hidden /// impl Foo hidden
impl Foo { impl Foo {
@ -21,4 +21,4 @@ impl Foo {
pub fn __quazl() {} pub fn __quazl() {}
} }
// FIXME(#111564): Is this the right behaviour? // FIXME(#111564): Is this the right behaviour?
//@ is '$.index[*][?(@.docs=="impl Foo hidden")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo hidden")].visibility' '"default"'

View file

@ -6,13 +6,13 @@ pub struct Foo;
impl Foo { impl Foo {
fn baz() {} fn baz() {}
} }
//@ is '$.index[*][?(@.docs=="impl Foo priv")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo priv")].visibility' '"default"'
/// impl Foo pub /// impl Foo pub
impl Foo { impl Foo {
pub fn qux() {} pub fn qux() {}
} }
//@ is '$.index[*][?(@.docs=="impl Foo pub")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo pub")].visibility' '"default"'
/// impl Foo hidden /// impl Foo hidden
impl Foo { impl Foo {
@ -20,4 +20,4 @@ impl Foo {
pub fn __quazl() {} pub fn __quazl() {}
} }
// FIXME(#111564): Is this the right behaviour? // FIXME(#111564): Is this the right behaviour?
//@ is '$.index[*][?(@.docs=="impl Foo hidden")].visibility' '"default"' //@ is '$.index[?(@.docs=="impl Foo hidden")].visibility' '"default"'

View file

@ -1,20 +1,20 @@
// https://github.com/rust-lang/rust/issues/100252 // https://github.com/rust-lang/rust/issues/100252
mod bar { mod bar {
//@ set baz = "$.index[*][?(@.name == 'Baz')].id" //@ set baz = "$.index[?(@.name == 'Baz')].id"
pub struct Baz; pub struct Baz;
//@ set impl = "$.index[*][?(@.docs == 'impl')].id" //@ set impl = "$.index[?(@.docs == 'impl')].id"
/// impl /// impl
impl Baz { impl Baz {
//@ set doit = "$.index[*][?(@.name == 'doit')].id" //@ set doit = "$.index[?(@.name == 'doit')].id"
pub fn doit() {} pub fn doit() {}
} }
} }
//@ set import = "$.index[*][?(@.inner.use)].id" //@ set import = "$.index[?(@.inner.use)].id"
pub use bar::Baz; pub use bar::Baz;
//@ is "$.index[*].inner.module.items[*]" $import //@ is "$.index[*].inner.module.items[*]" $import
//@ is "$.index[*].inner.use.id" $baz //@ is "$.index[*].inner.use.id" $baz
//@ has "$.index[*][?(@.name == 'Baz')].inner.struct.impls[*]" $impl //@ has "$.index[?(@.name == 'Baz')].inner.struct.impls[*]" $impl
//@ is "$.index[*][?(@.docs=='impl')].inner.impl.items[*]" $doit //@ is "$.index[?(@.docs=='impl')].inner.impl.items[*]" $doit

View file

@ -1,8 +1,8 @@
//@ has "$.index[*][?(@.docs=='Here')]" //@ has "$.index[?(@.docs=='Here')]"
//@ !has "$.index[*][?(@.docs=='Not Here')]" //@ !has "$.index[?(@.docs=='Not Here')]"
//@ !has "$.index[*][?(@.name == 'HiddenPubStruct')]" //@ !has "$.index[?(@.name == 'HiddenPubStruct')]"
//@ has "$.index[*][?(@.name == 'NotHiddenPubStruct')]" //@ has "$.index[?(@.name == 'NotHiddenPubStruct')]"
//@ has "$.index[*][?(@.name=='PubTrait')]" //@ has "$.index[?(@.name=='PubTrait')]"
pub trait PubTrait {} pub trait PubTrait {}
#[doc(hidden)] #[doc(hidden)]

View file

@ -1,8 +1,8 @@
//@ compile-flags: --document-hidden-items //@ compile-flags: --document-hidden-items
//@ has "$.index[*][?(@.name == 'HiddenPubStruct')]" //@ has "$.index[?(@.name == 'HiddenPubStruct')]"
//@ has "$.index[*][?(@.inner.impl)]" //@ has "$.index[?(@.inner.impl)]"
//@ has "$.index[*][?(@.name=='PubTrait')]" //@ has "$.index[?(@.name=='PubTrait')]"
pub trait PubTrait {} pub trait PubTrait {}
#[doc(hidden)] #[doc(hidden)]

View file

@ -1,21 +1,21 @@
//@ has "$.index[*][?(@.name=='PubTrait')]" //@ has "$.index[?(@.name=='PubTrait')]"
pub trait PubTrait {} pub trait PubTrait {}
#[doc(hidden)] #[doc(hidden)]
pub mod hidden { pub mod hidden {
//@ !has "$.index[*][?(@.name == 'HiddenPubStruct')]" //@ !has "$.index[?(@.name == 'HiddenPubStruct')]"
pub struct HiddenPubStruct; pub struct HiddenPubStruct;
//@ !has "$.index[*][?(@.docs == 'Not Here')]" //@ !has "$.index[?(@.docs == 'Not Here')]"
/// Not Here /// Not Here
impl crate::PubTrait for HiddenPubStruct {} impl crate::PubTrait for HiddenPubStruct {}
} }
pub mod not_hidden { pub mod not_hidden {
//@ has "$.index[*][?(@.name == 'NotHiddenPubStruct')]" //@ has "$.index[?(@.name == 'NotHiddenPubStruct')]"
pub struct NotHiddenPubStruct; pub struct NotHiddenPubStruct;
//@ has "$.index[*][?(@.docs == 'Here')]" //@ has "$.index[?(@.docs == 'Here')]"
/// Here /// Here
impl crate::PubTrait for NotHiddenPubStruct {} impl crate::PubTrait for NotHiddenPubStruct {}
} }

View file

@ -3,16 +3,16 @@ extern crate foreign_struct;
/// ForeignStruct id hack /// ForeignStruct id hack
pub use foreign_struct::ForeignStruct as _; pub use foreign_struct::ForeignStruct as _;
//@ set ForeignStruct = "$.index[*][?(@.docs=='ForeignStruct id hack')].inner.use.id" //@ set ForeignStruct = "$.index[?(@.docs=='ForeignStruct id hack')].inner.use.id"
pub trait LocalTrait {} pub trait LocalTrait {}
//@ set LocalTrait = "$.index[*][?(@.name=='LocalTrait')].id" //@ set LocalTrait = "$.index[?(@.name=='LocalTrait')].id"
/// local for foreign /// local for foreign
impl LocalTrait for foreign_struct::ForeignStruct {} impl LocalTrait for foreign_struct::ForeignStruct {}
//@ set impl = "$.index[*][?(@.docs=='local for foreign')].id" //@ 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.trait.id" $LocalTrait
//@ is "$.index[*][?(@.docs=='local for foreign')].inner.impl.for.resolved_path.id" $ForeignStruct //@ is "$.index[?(@.docs=='local for foreign')].inner.impl.for.resolved_path.id" $ForeignStruct
//@ is "$.index[*][?(@.name=='LocalTrait')].inner.trait.implementations[*]" $impl //@ is "$.index[?(@.name=='LocalTrait')].inner.trait.implementations[*]" $impl

View file

@ -1,12 +1,12 @@
//@ set struct = "$.index[*][?(@.name=='Struct')].id" //@ set struct = "$.index[?(@.name=='Struct')].id"
pub struct Struct; pub struct Struct;
//@ set trait = "$.index[*][?(@.name=='Trait')].id" //@ set trait = "$.index[?(@.name=='Trait')].id"
pub trait Trait {} pub trait Trait {}
//@ set impl = "$.index[*][?(@.docs=='impl')].id" //@ set impl = "$.index[?(@.docs=='impl')].id"
/// impl /// impl
impl Trait for Struct {} impl Trait for Struct {}
//@ has "$.index[*][?(@.name=='Struct')].inner.struct.impls[*]" $impl //@ has "$.index[?(@.name=='Struct')].inner.struct.impls[*]" $impl
//@ is "$.index[*][?(@.name=='Trait')].inner.trait.implementations[*]" $impl //@ is "$.index[?(@.name=='Trait')].inner.trait.implementations[*]" $impl
//@ is "$.index[*][?(@.docs=='impl')].inner.impl.trait.id" $trait //@ is "$.index[?(@.docs=='impl')].inner.impl.trait.id" $trait
//@ is "$.index[*][?(@.docs=='impl')].inner.impl.for.resolved_path.id" $struct //@ is "$.index[?(@.docs=='impl')].inner.impl.for.resolved_path.id" $struct

View file

@ -1,18 +1,18 @@
#![feature(rustc_attrs)] #![feature(rustc_attrs)]
//@ set Local = "$.index[*][?(@.name=='Local')].id" //@ set Local = "$.index[?(@.name=='Local')].id"
pub trait Local {} pub trait Local {}
//@ is "$.index[*][?(@.docs=='Local for bool')].inner.impl.trait.id" $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=='Local for bool')].inner.impl.for.primitive" '"bool"'
/// Local for bool /// Local for bool
impl Local for bool {} impl Local for bool {}
//@ set impl = "$.index[*][?(@.docs=='Local for bool')].id" //@ set impl = "$.index[?(@.docs=='Local for bool')].id"
//@ is "$.index[*][?(@.name=='Local')].inner.trait.implementations[*]" $impl //@ is "$.index[?(@.name=='Local')].inner.trait.implementations[*]" $impl
// FIXME(#101695): Test bool's `impls` include "Local for bool" // FIXME(#101695): Test bool's `impls` include "Local for bool"
//@ has "$.index[*][?(@.name=='bool')]" //@ has "$.index[?(@.name=='bool')]"
#[rustc_doc_primitive = "bool"] #[rustc_doc_primitive = "bool"]
/// Boolean docs /// Boolean docs
mod prim_bool {} mod prim_bool {}

View file

@ -1,7 +1,7 @@
//@ set local = "$.index[*][?(@.name=='Local')]" //@ set local = "$.index[?(@.name=='Local')]"
pub trait Local {} pub trait Local {}
//@ set impl = "$.index[*][?(@.docs=='local for bool')].id" //@ set impl = "$.index[?(@.docs=='local for bool')].id"
//@ is "$.index[*][?(@.name=='Local')].inner.trait.implementations[*]" $impl //@ is "$.index[?(@.name=='Local')].inner.trait.implementations[*]" $impl
/// local for bool /// local for bool
impl Local for bool {} impl Local for bool {}

View file

@ -5,6 +5,6 @@ pub trait TheTrait {}
#[doc(hidden)] #[doc(hidden)]
struct Value {} struct Value {}
//@ has '$.index[*][?(@.docs=="THE IMPL")]' //@ has '$.index[?(@.docs=="THE IMPL")]'
/// THE IMPL /// THE IMPL
impl TheTrait for Value {} impl TheTrait for Value {}

View file

@ -1,15 +1,15 @@
//@ set t1 = '$.index[*][?(@.name=="T1")].id' //@ set t1 = '$.index[?(@.name=="T1")].id'
pub trait T1 {} pub trait T1 {}
//@ set t2 = '$.index[*][?(@.name=="T2")].id' //@ set t2 = '$.index[?(@.name=="T2")].id'
pub trait T2 {} pub trait T2 {}
/// Fun impl /// Fun impl
impl T1 for dyn T2 {} impl T1 for dyn T2 {}
//@ set impl = '$.index[*][?(@.docs=="Fun impl")].id' //@ set impl = '$.index[?(@.docs=="Fun impl")].id'
//@ is '$.index[*][?(@.name=="T1")].inner.trait.implementations[*]' $impl //@ is '$.index[?(@.name=="T1")].inner.trait.implementations[*]' $impl
//@ is '$.index[*][?(@.name=="T2")].inner.trait.implementations' [] //@ is '$.index[?(@.name=="T2")].inner.trait.implementations' []
//@ is '$.index[*][?(@.docs=="Fun impl")].inner.impl.trait.id' $t1 //@ 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=="Fun impl")].inner.impl.for.dyn_trait.traits[*].trait.id' $t2

View file

@ -8,6 +8,6 @@ pub struct Local;
/// local impl /// local impl
impl enum_variant_in_trait_method::Trait for Local {} impl enum_variant_in_trait_method::Trait for Local {}
//@ !has "$.index[*][?(@.name == 'Trait')]" //@ !has "$.index[?(@.name == 'Trait')]"
//@ !has "$.index[*][?(@.name == 'method')]" //@ !has "$.index[?(@.name == 'method')]"
//@ count "$.index[*][?(@.docs == 'local impl')].inner.items[*]" 0 //@ count "$.index[?(@.docs == 'local impl')].inner.items[*]" 0

View file

@ -7,17 +7,17 @@
//! [`Trait::ASSOC_CONST`] //! [`Trait::ASSOC_CONST`]
//! [`Trait::method`] //! [`Trait::method`]
//@ set struct_field = "$.index[*][?(@.name=='struct_field')].id" //@ set struct_field = "$.index[?(@.name=='struct_field')].id"
//@ set Variant = "$.index[*][?(@.name=='Variant')].id" //@ set Variant = "$.index[?(@.name=='Variant')].id"
//@ set AssocType = "$.index[*][?(@.name=='AssocType')].id" //@ set AssocType = "$.index[?(@.name=='AssocType')].id"
//@ set ASSOC_CONST = "$.index[*][?(@.name=='ASSOC_CONST')].id" //@ set ASSOC_CONST = "$.index[?(@.name=='ASSOC_CONST')].id"
//@ set method = "$.index[*][?(@.name=='method')].id" //@ set method = "$.index[?(@.name=='method')].id"
//@ is "$.index[*][?(@.name=='non_page')].links['`Struct::struct_field`']" $struct_field //@ 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['`Enum::Variant`']" $Variant
//@ is "$.index[*][?(@.name=='non_page')].links['`Trait::AssocType`']" $AssocType //@ 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::ASSOC_CONST`']" $ASSOC_CONST
//@ is "$.index[*][?(@.name=='non_page')].links['`Trait::method`']" $method //@ is "$.index[?(@.name=='non_page')].links['`Trait::method`']" $method
pub struct Struct { pub struct Struct {
pub struct_field: i32, pub struct_field: i32,

View file

@ -4,5 +4,5 @@
/// To test rustdoc json /// To test rustdoc json
pub fn foo() {} pub fn foo() {}
//@ set foo = "$.index[*][?(@.name=='foo')].id" //@ set foo = "$.index[?(@.name=='foo')].id"
//@ is "$.index[*][?(@.name=='user_written')].links['foo#reasons']" $foo //@ is "$.index[?(@.name=='user_written')].links['foo#reasons']" $foo

View file

@ -6,15 +6,15 @@
#![feature(rustdoc_internals)] #![feature(rustdoc_internals)]
#![no_std] #![no_std]
//@ !has "$.index[*][?(@.name=='match')]" //@ !has "$.index[?(@.name=='match')]"
//@ has "$.index[*][?(@.name=='foo')]" //@ has "$.index[?(@.name=='foo')]"
#[doc(keyword = "match")] #[doc(keyword = "match")]
/// this is a test! /// this is a test!
pub mod foo {} pub mod foo {}
//@ !has "$.index[*][?(@.name=='break')]" //@ !has "$.index[?(@.name=='break')]"
//@ !has "$.index[*][?(@.name=='bar')]" //@ !has "$.index[?(@.name=='bar')]"
#[doc(keyword = "break")] #[doc(keyword = "break")]
/// hello /// hello
mod bar {} mod bar {}

View file

@ -3,18 +3,18 @@
//@ compile-flags: --document-private-items //@ compile-flags: --document-private-items
#![feature(rustdoc_internals)] #![feature(rustdoc_internals)]
//@ !has "$.index[*][?(@.name=='match')]" //@ !has "$.index[?(@.name=='match')]"
//@ has "$.index[*][?(@.name=='foo')]" //@ has "$.index[?(@.name=='foo')]"
//@ is "$.index[*][?(@.name=='foo')].attrs" '["#[doc(keyword = \"match\")]"]' //@ is "$.index[?(@.name=='foo')].attrs" '["#[doc(keyword = \"match\")]"]'
//@ is "$.index[*][?(@.name=='foo')].docs" '"this is a test!"' //@ is "$.index[?(@.name=='foo')].docs" '"this is a test!"'
#[doc(keyword = "match")] #[doc(keyword = "match")]
/// this is a test! /// this is a test!
pub mod foo {} pub mod foo {}
//@ !has "$.index[*][?(@.name=='break')]" //@ !has "$.index[?(@.name=='break')]"
//@ has "$.index[*][?(@.name=='bar')]" //@ has "$.index[?(@.name=='bar')]"
//@ is "$.index[*][?(@.name=='bar')].attrs" '["#[doc(keyword = \"break\")]"]' //@ is "$.index[?(@.name=='bar')].attrs" '["#[doc(keyword = \"break\")]"]'
//@ is "$.index[*][?(@.name=='bar')].docs" '"hello"' //@ is "$.index[?(@.name=='bar')].docs" '"hello"'
#[doc(keyword = "break")] #[doc(keyword = "break")]
/// hello /// hello
mod bar {} mod bar {}

View file

@ -1,24 +1,24 @@
//@ is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].name" \"\'a\" //@ is "$.index[?(@.name=='longest')].inner.function.generics.params[0].name" \"\'a\"
//@ is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}' //@ is "$.index[?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}'
//@ is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}' //@ is "$.index[?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}'
//@ count "$.index[*][?(@.name=='longest')].inner.function.generics.params[*]" 1 //@ count "$.index[?(@.name=='longest')].inner.function.generics.params[*]" 1
//@ is "$.index[*][?(@.name=='longest')].inner.function.generics.where_predicates" [] //@ is "$.index[?(@.name=='longest')].inner.function.generics.where_predicates" []
//@ count "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[*]" 2 //@ count "$.index[?(@.name=='longest')].inner.function.sig.inputs[*]" 2
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[0][0]" '"l"' //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[0][0]" '"l"'
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[1][0]" '"r"' //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[1][0]" '"r"'
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[0][1].borrowed_ref.lifetime" \"\'a\" //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[0][1].borrowed_ref.lifetime" \"\'a\"
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[0][1].borrowed_ref.is_mutable" false //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[0][1].borrowed_ref.is_mutable" false
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[0][1].borrowed_ref.type.primitive" \"str\" //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[0][1].borrowed_ref.type.primitive" \"str\"
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[1][1].borrowed_ref.lifetime" \"\'a\" //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[1][1].borrowed_ref.lifetime" \"\'a\"
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[1][1].borrowed_ref.is_mutable" false //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[1][1].borrowed_ref.is_mutable" false
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.inputs[1][1].borrowed_ref.type.primitive" \"str\" //@ is "$.index[?(@.name=='longest')].inner.function.sig.inputs[1][1].borrowed_ref.type.primitive" \"str\"
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.output.borrowed_ref.lifetime" \"\'a\" //@ is "$.index[?(@.name=='longest')].inner.function.sig.output.borrowed_ref.lifetime" \"\'a\"
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.output.borrowed_ref.is_mutable" false //@ is "$.index[?(@.name=='longest')].inner.function.sig.output.borrowed_ref.is_mutable" false
//@ is "$.index[*][?(@.name=='longest')].inner.function.sig.output.borrowed_ref.type.primitive" \"str\" //@ is "$.index[?(@.name=='longest')].inner.function.sig.output.borrowed_ref.type.primitive" \"str\"
pub fn longest<'a>(l: &'a str, r: &'a str) -> &'a str { pub fn longest<'a>(l: &'a str, r: &'a str) -> &'a str {
if l.len() > r.len() { l } else { r } if l.len() > r.len() { l } else { r }

View file

@ -1,16 +1,16 @@
//@ count "$.index[*][?(@.name=='foo')].inner.function.generics.params[*]" 3 //@ count "$.index[?(@.name=='foo')].inner.function.generics.params[*]" 3
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates" [] //@ is "$.index[?(@.name=='foo')].inner.function.generics.where_predicates" []
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[0].name" \"\'a\" //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[0].name" \"\'a\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[1].name" \"\'b\" //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[1].name" \"\'b\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].name" '"T"' //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[2].name" '"T"'
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[0].kind.lifetime.outlives" [] //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[0].kind.lifetime.outlives" []
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[1].kind.lifetime.outlives" [\"\'a\"] //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[1].kind.lifetime.outlives" [\"\'a\"]
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].kind.type.default" null //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[2].kind.type.default" null
//@ count "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].kind.type.bounds[*]" 1 //@ count "$.index[?(@.name=='foo')].inner.function.generics.params[2].kind.type.bounds[*]" 1
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].kind.type.bounds[0].outlives" \"\'b\" //@ is "$.index[?(@.name=='foo')].inner.function.generics.params[2].kind.type.bounds[0].outlives" \"\'b\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.lifetime" \"\'a\" //@ is "$.index[?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.lifetime" \"\'a\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.is_mutable" false //@ is "$.index[?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.is_mutable" false
//@ is "$.index[*][?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.type.borrowed_ref.lifetime" \"\'b\" //@ is "$.index[?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.type.borrowed_ref.lifetime" \"\'b\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.type.borrowed_ref.is_mutable" false //@ is "$.index[?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.type.borrowed_ref.is_mutable" false
//@ is "$.index[*][?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.type.borrowed_ref.type.generic" \"T\" //@ is "$.index[?(@.name=='foo')].inner.function.sig.inputs[0][1].borrowed_ref.type.borrowed_ref.type.generic" \"T\"
pub fn foo<'a, 'b: 'a, T: 'b>(_: &'a &'b T) {} pub fn foo<'a, 'b: 'a, T: 'b>(_: &'a &'b T) {}

View file

@ -1,6 +1,6 @@
//@ count '$.index[*][?(@.name=="outlives")].inner.function.generics.params[*]' 2 //@ count '$.index[?(@.name=="outlives")].inner.function.generics.params[*]' 2
//@ is '$.index[*][?(@.name=="outlives")].inner.function.generics.params[0].name' \"\'a\" //@ is '$.index[?(@.name=="outlives")].inner.function.generics.params[0].name' \"\'a\"
//@ is '$.index[*][?(@.name=="outlives")].inner.function.generics.params[0].kind.lifetime.outlives' [] //@ is '$.index[?(@.name=="outlives")].inner.function.generics.params[0].kind.lifetime.outlives' []
//@ is '$.index[*][?(@.name=="outlives")].inner.function.generics.params[1].name' '"T"' //@ is '$.index[?(@.name=="outlives")].inner.function.generics.params[1].name' '"T"'
//@ is '$.index[*][?(@.name=="outlives")].inner.function.generics.params[1].kind.type.bounds' '[{"outlives": "'\''a"}]' //@ is '$.index[?(@.name=="outlives")].inner.function.generics.params[1].kind.type.bounds' '[{"outlives": "'\''a"}]'
pub fn outlives<'a, T: 'a>() {} pub fn outlives<'a, T: 'a>() {}

View file

@ -1,20 +1,20 @@
//@ is '$.index[*][?(@.name=="on_lifetimes")].inner.function.generics.where_predicates' '[{"lifetime_predicate": {"lifetime": "'\''all", "outlives": ["'\''a", "'\''b", "'\''c"]}}]' //@ is '$.index[?(@.name=="on_lifetimes")].inner.function.generics.where_predicates' '[{"lifetime_predicate": {"lifetime": "'\''all", "outlives": ["'\''a", "'\''b", "'\''c"]}}]'
pub fn on_lifetimes<'a, 'b, 'c, 'all>() pub fn on_lifetimes<'a, 'b, 'c, 'all>()
where where
'all: 'a + 'b + 'c, 'all: 'a + 'b + 'c,
{ {
} }
//@ count '$.index[*][?(@.name=="on_trait")].inner.function.generics.params[*]' 2 //@ count '$.index[?(@.name=="on_trait")].inner.function.generics.params[*]' 2
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.params[0].name' \"\'a\" //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.params[0].name' \"\'a\"
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.params[0].kind.lifetime.outlives' [] //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.params[0].kind.lifetime.outlives' []
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.params[1].name' '"T"' //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.params[1].name' '"T"'
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.params[1].kind.type.bounds' [] //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.params[1].kind.type.bounds' []
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.params[1].kind.type.bounds' [] //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.params[1].kind.type.bounds' []
//@ count '$.index[*][?(@.name=="on_trait")].inner.function.generics.where_predicates[*]' 1 //@ count '$.index[?(@.name=="on_trait")].inner.function.generics.where_predicates[*]' 1
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.where_predicates[0].bound_predicate.type.generic' '"T"' //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.where_predicates[0].bound_predicate.type.generic' '"T"'
//@ count '$.index[*][?(@.name=="on_trait")].inner.function.generics.where_predicates[0].bound_predicate.bounds[*]' 1 //@ count '$.index[?(@.name=="on_trait")].inner.function.generics.where_predicates[0].bound_predicate.bounds[*]' 1
//@ is '$.index[*][?(@.name=="on_trait")].inner.function.generics.where_predicates[0].bound_predicate.bounds[0].outlives' \"\'a\" //@ is '$.index[?(@.name=="on_trait")].inner.function.generics.where_predicates[0].bound_predicate.bounds[0].outlives' \"\'a\"
pub fn on_trait<'a, T>() pub fn on_trait<'a, T>()
where where
T: 'a, T: 'a,

View file

@ -1,50 +1,50 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
//@ has "$.index[*][?(@.name=='Foo')]" //@ has "$.index[?(@.name=='Foo')]"
pub struct Foo; pub struct Foo;
impl Foo { impl Foo {
//@ is "$.index[*][?(@.name=='abi_rust')].inner.function.header.abi" \"Rust\" //@ is "$.index[?(@.name=='abi_rust')].inner.function.header.abi" \"Rust\"
pub fn abi_rust() {} pub fn abi_rust() {}
//@ is "$.index[*][?(@.name=='abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}' //@ is "$.index[?(@.name=='abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}'
pub extern "C" fn abi_c() {} pub extern "C" fn abi_c() {}
//@ is "$.index[*][?(@.name=='abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}' //@ is "$.index[?(@.name=='abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}'
pub extern "system" fn abi_system() {} pub extern "system" fn abi_system() {}
//@ is "$.index[*][?(@.name=='abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}' //@ is "$.index[?(@.name=='abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}'
pub extern "C-unwind" fn abi_c_unwind() {} pub extern "C-unwind" fn abi_c_unwind() {}
//@ is "$.index[*][?(@.name=='abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}' //@ is "$.index[?(@.name=='abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}'
pub extern "system-unwind" fn abi_system_unwind() {} pub extern "system-unwind" fn abi_system_unwind() {}
//@ is "$.index[*][?(@.name=='abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""' //@ is "$.index[?(@.name=='abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""'
pub extern "vectorcall" fn abi_vectorcall() {} pub extern "vectorcall" fn abi_vectorcall() {}
//@ is "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""' //@ is "$.index[?(@.name=='abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""'
pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {} pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {}
} }
pub trait Bar { pub trait Bar {
//@ is "$.index[*][?(@.name=='trait_abi_rust')].inner.function.header.abi" \"Rust\" //@ is "$.index[?(@.name=='trait_abi_rust')].inner.function.header.abi" \"Rust\"
fn trait_abi_rust() {} fn trait_abi_rust() {}
//@ is "$.index[*][?(@.name=='trait_abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}' //@ is "$.index[?(@.name=='trait_abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}'
extern "C" fn trait_abi_c() {} extern "C" fn trait_abi_c() {}
//@ is "$.index[*][?(@.name=='trait_abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}' //@ is "$.index[?(@.name=='trait_abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}'
extern "system" fn trait_abi_system() {} extern "system" fn trait_abi_system() {}
//@ is "$.index[*][?(@.name=='trait_abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}' //@ is "$.index[?(@.name=='trait_abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}'
extern "C-unwind" fn trait_abi_c_unwind() {} extern "C-unwind" fn trait_abi_c_unwind() {}
//@ is "$.index[*][?(@.name=='trait_abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}' //@ is "$.index[?(@.name=='trait_abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}'
extern "system-unwind" fn trait_abi_system_unwind() {} extern "system-unwind" fn trait_abi_system_unwind() {}
//@ is "$.index[*][?(@.name=='trait_abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""' //@ is "$.index[?(@.name=='trait_abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""'
extern "vectorcall" fn trait_abi_vectorcall() {} extern "vectorcall" fn trait_abi_vectorcall() {}
//@ is "$.index[*][?(@.name=='trait_abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""' //@ is "$.index[?(@.name=='trait_abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""'
extern "vectorcall-unwind" fn trait_abi_vectorcall_unwind() {} extern "vectorcall-unwind" fn trait_abi_vectorcall_unwind() {}
} }

View file

@ -3,34 +3,34 @@
pub struct Foo; pub struct Foo;
impl Foo { impl Foo {
//@ is "$.index[*][?(@.name=='const_meth')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='const_meth')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='const_meth')].inner.function.header.is_const" true //@ is "$.index[?(@.name=='const_meth')].inner.function.header.is_const" true
//@ is "$.index[*][?(@.name=='const_meth')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='const_meth')].inner.function.header.is_unsafe" false
pub const fn const_meth() {} pub const fn const_meth() {}
//@ is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='nothing_meth')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='nothing_meth')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='nothing_meth')].inner.function.header.is_unsafe" false
pub fn nothing_meth() {} pub fn nothing_meth() {}
//@ is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='unsafe_meth')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='unsafe_meth')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='unsafe_meth')].inner.function.header.is_unsafe" true
pub unsafe fn unsafe_meth() {} pub unsafe fn unsafe_meth() {}
//@ is "$.index[*][?(@.name=='async_meth')].inner.function.header.is_async" true //@ is "$.index[?(@.name=='async_meth')].inner.function.header.is_async" true
//@ is "$.index[*][?(@.name=='async_meth')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='async_meth')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='async_meth')].inner.function.header.is_unsafe" false //@ is "$.index[?(@.name=='async_meth')].inner.function.header.is_unsafe" false
pub async fn async_meth() {} pub async fn async_meth() {}
//@ is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.is_async" true //@ is "$.index[?(@.name=='async_unsafe_meth')].inner.function.header.is_async" true
//@ is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.is_const" false //@ is "$.index[?(@.name=='async_unsafe_meth')].inner.function.header.is_const" false
//@ is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='async_unsafe_meth')].inner.function.header.is_unsafe" true
pub async unsafe fn async_unsafe_meth() {} pub async unsafe fn async_unsafe_meth() {}
//@ is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.is_async" false //@ is "$.index[?(@.name=='const_unsafe_meth')].inner.function.header.is_async" false
//@ is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.is_const" true //@ is "$.index[?(@.name=='const_unsafe_meth')].inner.function.header.is_const" true
//@ is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.is_unsafe" true //@ is "$.index[?(@.name=='const_unsafe_meth')].inner.function.header.is_unsafe" true
pub const unsafe fn const_unsafe_meth() {} pub const unsafe fn const_unsafe_meth() {}
// It's impossible for a method to be both const and async, so no test for that // It's impossible for a method to be both const and async, so no test for that

View file

@ -2,31 +2,31 @@
//@ compile-flags: --crate-version 1.0.0 //@ compile-flags: --crate-version 1.0.0
//@ is "$.crate_version" \"1.0.0\" //@ is "$.crate_version" \"1.0.0\"
//@ has "$.index[*][?(@.name=='nested')].inner.module" //@ has "$.index[?(@.name=='nested')].inner.module"
//@ is "$.index[*][?(@.name=='nested')].inner.module.is_crate" true //@ is "$.index[?(@.name=='nested')].inner.module.is_crate" true
//@ set l1_id = "$.index[*][?(@.name=='l1')].id" //@ set l1_id = "$.index[?(@.name=='l1')].id"
//@ ismany "$.index[*][?(@.name=='nested')].inner.module.items[*]" $l1_id //@ ismany "$.index[?(@.name=='nested')].inner.module.items[*]" $l1_id
//@ has "$.index[*][?(@.name=='l1')].inner.module" //@ has "$.index[?(@.name=='l1')].inner.module"
//@ is "$.index[*][?(@.name=='l1')].inner.module.is_crate" false //@ is "$.index[?(@.name=='l1')].inner.module.is_crate" false
pub mod l1 { pub mod l1 {
//@ has "$.index[*][?(@.name=='l3')].inner.module" //@ has "$.index[?(@.name=='l3')].inner.module"
//@ is "$.index[*][?(@.name=='l3')].inner.module.is_crate" false //@ is "$.index[?(@.name=='l3')].inner.module.is_crate" false
//@ set l3_id = "$.index[*][?(@.name=='l3')].id" //@ set l3_id = "$.index[?(@.name=='l3')].id"
pub mod l3 { pub mod l3 {
//@ has "$.index[*][?(@.name=='L4')].inner.struct" //@ has "$.index[?(@.name=='L4')].inner.struct"
//@ is "$.index[*][?(@.name=='L4')].inner.struct.kind" '"unit"' //@ is "$.index[?(@.name=='L4')].inner.struct.kind" '"unit"'
//@ set l4_id = "$.index[*][?(@.name=='L4')].id" //@ set l4_id = "$.index[?(@.name=='L4')].id"
//@ ismany "$.index[*][?(@.name=='l3')].inner.module.items[*]" $l4_id //@ ismany "$.index[?(@.name=='l3')].inner.module.items[*]" $l4_id
pub struct L4; pub struct L4;
} }
//@ is "$.index[*][?(@.inner.use)].inner.use.is_glob" false //@ is "$.index[?(@.inner.use)].inner.use.is_glob" false
//@ is "$.index[*][?(@.inner.use)].inner.use.source" '"l3::L4"' //@ is "$.index[?(@.inner.use)].inner.use.source" '"l3::L4"'
//@ is "$.index[*][?(@.inner.use)].inner.use.is_glob" false //@ is "$.index[?(@.inner.use)].inner.use.is_glob" false
//@ is "$.index[*][?(@.inner.use)].inner.use.id" $l4_id //@ is "$.index[?(@.inner.use)].inner.use.id" $l4_id
//@ set l4_use_id = "$.index[*][?(@.inner.use)].id" //@ set l4_use_id = "$.index[?(@.inner.use)].id"
pub use l3::L4; pub use l3::L4;
} }
//@ ismany "$.index[*][?(@.name=='l1')].inner.module.items[*]" $l3_id $l4_use_id //@ ismany "$.index[?(@.name=='l1')].inner.module.items[*]" $l3_id $l4_use_id

View file

@ -5,11 +5,11 @@ pub trait Trait {}
pub struct Wrapper<T_>(std::marker::PhantomData<T_>); pub struct Wrapper<T_>(std::marker::PhantomData<T_>);
//@ count "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[*]" 2 //@ count "$.index[?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[*]" 2
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[0].name" \"\'a\" //@ is "$.index[?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[0].name" \"\'a\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }' //@ is "$.index[?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }'
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].name" \"T\" //@ is "$.index[?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].name" \"T\"
//@ is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].kind" '{ "type": { "bounds": [], "default": null, "is_synthetic": false } }' //@ is "$.index[?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].kind" '{ "type": { "bounds": [], "default": null, "is_synthetic": false } }'
pub fn foo() pub fn foo()
where where
for<'a, T> &'a Wrapper<T>: Trait, for<'a, T> &'a Wrapper<T>: Trait,

View file

@ -2,11 +2,11 @@
// This is a regression test for #98009. // This is a regression test for #98009.
//@ has "$.index[*][?(@.name=='this_compiles')]" //@ has "$.index[?(@.name=='this_compiles')]"
//@ has "$.index[*][?(@.name=='this_does_not')]" //@ has "$.index[?(@.name=='this_does_not')]"
//@ has "$.index[*][?(@.name=='Events')]" //@ has "$.index[?(@.name=='Events')]"
//@ has "$.index[*][?(@.name=='Other')]" //@ has "$.index[?(@.name=='Other')]"
//@ has "$.index[*][?(@.name=='Trait')]" //@ has "$.index[?(@.name=='Trait')]"
struct Events<R>(R); struct Events<R>(R);

View file

@ -19,49 +19,49 @@ pub use priv_mod::{InPrivMod, InPrivMod as InPrivMod2};
use pub_mod::InPubMod as InPubMod3; use pub_mod::InPubMod as InPubMod3;
pub use pub_mod::{InPubMod, InPubMod as InPubMod2}; pub use pub_mod::{InPubMod, InPubMod as InPubMod2};
//@ is "$.index[*][?(@.name=='T0')].inner.type_alias.type.resolved_path.path" '"priv_mod::InPrivMod"' //@ is "$.index[?(@.name=='T0')].inner.type_alias.type.resolved_path.path" '"priv_mod::InPrivMod"'
pub type T0 = priv_mod::InPrivMod; pub type T0 = priv_mod::InPrivMod;
//@ is "$.index[*][?(@.name=='T1')].inner.type_alias.type.resolved_path.path" '"InPrivMod"' //@ is "$.index[?(@.name=='T1')].inner.type_alias.type.resolved_path.path" '"InPrivMod"'
pub type T1 = InPrivMod; pub type T1 = InPrivMod;
//@ is "$.index[*][?(@.name=='T2')].inner.type_alias.type.resolved_path.path" '"InPrivMod2"' //@ is "$.index[?(@.name=='T2')].inner.type_alias.type.resolved_path.path" '"InPrivMod2"'
pub type T2 = InPrivMod2; pub type T2 = InPrivMod2;
//@ is "$.index[*][?(@.name=='T3')].inner.type_alias.type.resolved_path.path" '"priv_mod::InPrivMod"' //@ is "$.index[?(@.name=='T3')].inner.type_alias.type.resolved_path.path" '"priv_mod::InPrivMod"'
pub type T3 = InPrivMod3; pub type T3 = InPrivMod3;
//@ is "$.index[*][?(@.name=='U0')].inner.type_alias.type.resolved_path.path" '"pub_mod::InPubMod"' //@ is "$.index[?(@.name=='U0')].inner.type_alias.type.resolved_path.path" '"pub_mod::InPubMod"'
pub type U0 = pub_mod::InPubMod; pub type U0 = pub_mod::InPubMod;
//@ is "$.index[*][?(@.name=='U1')].inner.type_alias.type.resolved_path.path" '"InPubMod"' //@ is "$.index[?(@.name=='U1')].inner.type_alias.type.resolved_path.path" '"InPubMod"'
pub type U1 = InPubMod; pub type U1 = InPubMod;
//@ is "$.index[*][?(@.name=='U2')].inner.type_alias.type.resolved_path.path" '"InPubMod2"' //@ is "$.index[?(@.name=='U2')].inner.type_alias.type.resolved_path.path" '"InPubMod2"'
pub type U2 = InPubMod2; pub type U2 = InPubMod2;
//@ is "$.index[*][?(@.name=='U3')].inner.type_alias.type.resolved_path.path" '"pub_mod::InPubMod"' //@ is "$.index[?(@.name=='U3')].inner.type_alias.type.resolved_path.path" '"pub_mod::InPubMod"'
pub type U3 = InPubMod3; pub type U3 = InPubMod3;
// Check we only have paths for structs at their original path // Check we only have paths for structs at their original path
//@ ismany "$.paths[*][?(@.crate_id==0 && @.kind=='struct')].path" '["path_name", "priv_mod", "InPrivMod"]' '["path_name", "pub_mod", "InPubMod"]' //@ ismany "$.paths[?(@.crate_id==0 && @.kind=='struct')].path" '["path_name", "priv_mod", "InPrivMod"]' '["path_name", "pub_mod", "InPubMod"]'
pub use defines_and_reexports::{InPrivMod as XPrivMod, InPubMod as XPubMod}; pub use defines_and_reexports::{InPrivMod as XPrivMod, InPubMod as XPubMod};
use defines_and_reexports::{InPrivMod as XPrivMod2, InPubMod as XPubMod2}; use defines_and_reexports::{InPrivMod as XPrivMod2, InPubMod as XPubMod2};
//@ is "$.index[*][?(@.name=='X0')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::m1::InPubMod"' //@ is "$.index[?(@.name=='X0')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::m1::InPubMod"'
pub type X0 = defines_and_reexports::m1::InPubMod; pub type X0 = defines_and_reexports::m1::InPubMod;
//@ is "$.index[*][?(@.name=='X1')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPubMod"' //@ is "$.index[?(@.name=='X1')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPubMod"'
pub type X1 = defines_and_reexports::InPubMod; pub type X1 = defines_and_reexports::InPubMod;
//@ is "$.index[*][?(@.name=='X2')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPubMod2"' //@ is "$.index[?(@.name=='X2')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPubMod2"'
pub type X2 = defines_and_reexports::InPubMod2; pub type X2 = defines_and_reexports::InPubMod2;
//@ is "$.index[*][?(@.name=='X3')].inner.type_alias.type.resolved_path.path" '"XPubMod"' //@ is "$.index[?(@.name=='X3')].inner.type_alias.type.resolved_path.path" '"XPubMod"'
pub type X3 = XPubMod; pub type X3 = XPubMod;
// N.B. This isn't the path as used *or* the original path! // N.B. This isn't the path as used *or* the original path!
//@ is "$.index[*][?(@.name=='X4')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPubMod"' //@ is "$.index[?(@.name=='X4')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPubMod"'
pub type X4 = XPubMod2; pub type X4 = XPubMod2;
//@ is "$.index[*][?(@.name=='Y1')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPrivMod"' //@ is "$.index[?(@.name=='Y1')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPrivMod"'
pub type Y1 = defines_and_reexports::InPrivMod; pub type Y1 = defines_and_reexports::InPrivMod;
//@ is "$.index[*][?(@.name=='Y2')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPrivMod2"' //@ is "$.index[?(@.name=='Y2')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPrivMod2"'
pub type Y2 = defines_and_reexports::InPrivMod2; pub type Y2 = defines_and_reexports::InPrivMod2;
//@ is "$.index[*][?(@.name=='Y3')].inner.type_alias.type.resolved_path.path" '"XPrivMod"' //@ is "$.index[?(@.name=='Y3')].inner.type_alias.type.resolved_path.path" '"XPrivMod"'
pub type Y3 = XPrivMod; pub type Y3 = XPrivMod;
//@ is "$.index[*][?(@.name=='Y4')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPrivMod"' //@ is "$.index[?(@.name=='Y4')].inner.type_alias.type.resolved_path.path" '"defines_and_reexports::InPrivMod"'
pub type Y4 = XPrivMod2; pub type Y4 = XPrivMod2;
// For foreign items, $.paths contains the *origional* path, even if it's not publicly // For foreign items, $.paths contains the *origional* path, even if it's not publicly
@ -74,9 +74,9 @@ pub type Y4 = XPrivMod2;
// Tests for the example in the docs of Path::name. // Tests for the example in the docs of Path::name.
// If these change, chage the docs. // If these change, chage the docs.
//@ is "$.index[*][?(@.name=='Vec1')].inner.type_alias.type.resolved_path.path" '"std::vec::Vec"' //@ is "$.index[?(@.name=='Vec1')].inner.type_alias.type.resolved_path.path" '"std::vec::Vec"'
pub type Vec1 = std::vec::Vec<i32>; pub type Vec1 = std::vec::Vec<i32>;
//@ is "$.index[*][?(@.name=='Vec2')].inner.type_alias.type.resolved_path.path" '"Vec"' //@ is "$.index[?(@.name=='Vec2')].inner.type_alias.type.resolved_path.path" '"Vec"'
pub type Vec2 = Vec<i32>; pub type Vec2 = Vec<i32>;
//@ is "$.index[*][?(@.name=='Vec3')].inner.type_alias.type.resolved_path.path" '"std::prelude::v1::Vec"' //@ is "$.index[?(@.name=='Vec3')].inner.type_alias.type.resolved_path.path" '"std::prelude::v1::Vec"'
pub type Vec3 = std::prelude::v1::Vec<i32>; pub type Vec3 = std::prelude::v1::Vec<i32>;

View file

@ -11,11 +11,11 @@
#[rustc_doc_primitive = "i32"] #[rustc_doc_primitive = "i32"]
mod prim_i32 {} mod prim_i32 {}
//@ set local_i32 = "$.index[*][?(@.name=='i32')].id" //@ set local_i32 = "$.index[?(@.name=='i32')].id"
//@ has "$.index[*][?(@.name=='local_primitive')]" //@ has "$.index[?(@.name=='local_primitive')]"
//@ ismany "$.index[*][?(@.name=='local_primitive')].inner.module.items[*]" $local_i32 //@ ismany "$.index[?(@.name=='local_primitive')].inner.module.items[*]" $local_i32
//@ is "$.index[*][?(@.name=='local_primitive')].links['prim@i32']" $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: // Let's ensure the `prim_i32` module isn't present in the output JSON:
//@ !has "$.index[*][?(@.name=='prim_i32')]" //@ !has "$.index[?(@.name=='prim_i32')]"

View file

@ -4,26 +4,26 @@
#![no_core] #![no_core]
#![rustc_coherence_is_core] #![rustc_coherence_is_core]
//@ set impl_i32 = "$.index[*][?(@.docs=='Only core can do this')].id" //@ set impl_i32 = "$.index[?(@.docs=='Only core can do this')].id"
#[lang = "sized"] #[lang = "sized"]
trait Sized {} trait Sized {}
/// Only core can do this /// Only core can do this
impl i32 { impl i32 {
//@ set identity = "$.index[*][?(@.docs=='Do Nothing')].id" //@ set identity = "$.index[?(@.docs=='Do Nothing')].id"
/// Do Nothing /// Do Nothing
pub fn identity(self) -> Self { pub fn identity(self) -> Self {
self self
} }
//@ is "$.index[*][?(@.docs=='Only core can do this')].inner.impl.items[*]" $identity //@ is "$.index[?(@.docs=='Only core can do this')].inner.impl.items[*]" $identity
} }
//@ set Trait = "$.index[*][?(@.name=='Trait')].id" //@ set Trait = "$.index[?(@.name=='Trait')].id"
pub trait Trait {} pub trait Trait {}
//@ set impl_trait_for_i32 = "$.index[*][?(@.docs=='impl Trait for i32')].id" //@ set impl_trait_for_i32 = "$.index[?(@.docs=='impl Trait for i32')].id"
/// impl Trait for i32 /// impl Trait for i32
impl Trait for i32 {} impl Trait for i32 {}
@ -31,7 +31,7 @@ impl Trait for i32 {}
#[rustc_doc_primitive = "i32"] #[rustc_doc_primitive = "i32"]
mod prim_i32 {} mod prim_i32 {}
//@ set i32 = "$.index[*][?(@.docs=='i32')].id" //@ set i32 = "$.index[?(@.docs=='i32')].id"
//@ is "$.index[*][?(@.docs=='i32')].name" '"i32"' //@ is "$.index[?(@.docs=='i32')].name" '"i32"'
//@ is "$.index[*][?(@.docs=='i32')].inner.primitive.name" '"i32"' //@ is "$.index[?(@.docs=='i32')].inner.primitive.name" '"i32"'
//@ ismany "$.index[*][?(@.docs=='i32')].inner.primitive.impls[*]" $impl_i32 $impl_trait_for_i32 //@ ismany "$.index[?(@.docs=='i32')].inner.primitive.impls[*]" $impl_i32 $impl_trait_for_i32

View file

@ -4,8 +4,8 @@
#![feature(rustc_attrs)] #![feature(rustc_attrs)]
//@ has "$.index[*][?(@.name=='usize')]" //@ has "$.index[?(@.name=='usize')]"
//@ has "$.index[*][?(@.name=='prim')]" //@ has "$.index[?(@.name=='prim')]"
#[rustc_doc_primitive = "usize"] #[rustc_doc_primitive = "usize"]
/// This is the built-in type `usize`. /// This is the built-in type `usize`.

View file

@ -1,17 +1,17 @@
#![feature(never_type)] #![feature(never_type)]
//@ is "$.index[*][?(@.name=='PrimNever')].visibility" \"public\" //@ is "$.index[?(@.name=='PrimNever')].visibility" \"public\"
//@ is "$.index[*][?(@.name=='PrimNever')].inner.type_alias.type.primitive" \"never\" //@ is "$.index[?(@.name=='PrimNever')].inner.type_alias.type.primitive" \"never\"
pub type PrimNever = !; pub type PrimNever = !;
//@ is "$.index[*][?(@.name=='PrimStr')].inner.type_alias.type.primitive" \"str\" //@ is "$.index[?(@.name=='PrimStr')].inner.type_alias.type.primitive" \"str\"
pub type PrimStr = str; pub type PrimStr = str;
//@ is "$.index[*][?(@.name=='PrimBool')].inner.type_alias.type.primitive" \"bool\" //@ is "$.index[?(@.name=='PrimBool')].inner.type_alias.type.primitive" \"bool\"
pub type PrimBool = bool; pub type PrimBool = bool;
//@ is "$.index[*][?(@.name=='PrimChar')].inner.type_alias.type.primitive" \"char\" //@ is "$.index[?(@.name=='PrimChar')].inner.type_alias.type.primitive" \"char\"
pub type PrimChar = char; pub type PrimChar = char;
//@ is "$.index[*][?(@.name=='PrimU8')].inner.type_alias.type.primitive" \"u8\" //@ is "$.index[?(@.name=='PrimU8')].inner.type_alias.type.primitive" \"u8\"
pub type PrimU8 = u8; pub type PrimU8 = u8;

View file

@ -5,15 +5,15 @@
#[rustc_doc_primitive = "usize"] #[rustc_doc_primitive = "usize"]
mod usize {} mod usize {}
//@ set local_crate_id = "$.index[*][?(@.name=='use_primitive')].crate_id" //@ set local_crate_id = "$.index[?(@.name=='use_primitive')].crate_id"
//@ has "$.index[*][?(@.name=='ilog10')]" //@ has "$.index[?(@.name=='ilog10')]"
//@ !is "$.index[*][?(@.name=='ilog10')].crate_id" $local_crate_id //@ !is "$.index[?(@.name=='ilog10')].crate_id" $local_crate_id
//@ has "$.index[*][?(@.name=='checked_add')]" //@ has "$.index[?(@.name=='checked_add')]"
//@ !is "$.index[*][?(@.name=='checked_add')]" $local_crate_id //@ !is "$.index[?(@.name=='checked_add')]" $local_crate_id
//@ !has "$.index[*][?(@.name=='is_ascii_uppercase')]" //@ !has "$.index[?(@.name=='is_ascii_uppercase')]"
//@ is "$.index[*].inner.use[?(@.name=='my_i32')].id" null //@ is "$.index[?(@.inner.use.name=='my_i32')].inner.use.id" null
pub use i32 as my_i32; pub use i32 as my_i32;
//@ is "$.index[*].inner.use[?(@.name=='u32')].id" null //@ is "$.index[?(@.inner.use.name=='u32')].inner.use.id" null
pub use u32; pub use u32;

View file

@ -1,6 +1,6 @@
// See https://github.com/rust-lang/rust/issues/101105 // See https://github.com/rust-lang/rust/issues/101105
//@ !has "$.index[*][?(@.name=='nucleus')]" //@ !has "$.index[?(@.name=='nucleus')]"
mod corpus { mod corpus {
pub mod nucleus {} pub mod nucleus {}
} }

View file

@ -4,7 +4,7 @@
#[doc(inline)] #[doc(inline)]
pub extern crate enum_with_discriminant; pub extern crate enum_with_discriminant;
//@ !has '$.index[*][?(@.docs == "Should not be inlined")]' //@ !has '$.index[?(@.docs == "Should not be inlined")]'
//@ has '$.index[*][?(@.name == "enum_with_discriminant")].inner.extern_crate' //@ has '$.index[?(@.name == "enum_with_discriminant")].inner.extern_crate'
//@ set enum_with_discriminant = '$.index[*][?(@.name == "enum_with_discriminant")].id' //@ set enum_with_discriminant = '$.index[?(@.name == "enum_with_discriminant")].id'
//@ is '$.index[*][?(@.name == "doc_inline_external_crate")].inner.module.items[*]' $enum_with_discriminant //@ is '$.index[?(@.name == "doc_inline_external_crate")].inner.module.items[*]' $enum_with_discriminant

View file

@ -2,5 +2,5 @@
#![crate_name = "export_extern_crate_as_self"] #![crate_name = "export_extern_crate_as_self"]
//@ is "$.index[*][?(@.inner.module)].name" \"export_extern_crate_as_self\" //@ is "$.index[?(@.inner.module)].name" \"export_extern_crate_as_self\"
pub extern crate self as export_extern_crate_as_self; // Must be the same name as the crate already has pub extern crate self as export_extern_crate_as_self; // Must be the same name as the crate already has

View file

@ -5,7 +5,7 @@ extern crate enum_with_discriminant;
#[doc(inline)] #[doc(inline)]
pub use enum_with_discriminant::*; pub use enum_with_discriminant::*;
//@ !has '$.index[*][?(@.docs == "Should not be inlined")]' //@ !has '$.index[?(@.docs == "Should not be inlined")]'
//@ is '$.index[*][?(@.inner.use)].inner.use.name' \"enum_with_discriminant\" //@ is '$.index[?(@.inner.use)].inner.use.name' \"enum_with_discriminant\"
//@ set use = '$.index[*][?(@.inner.use)].id' //@ set use = '$.index[?(@.inner.use)].id'
//@ is '$.index[*][?(@.name == "extern_crate_glob")].inner.module.items[*]' $use //@ is '$.index[?(@.name == "extern_crate_glob")].inner.module.items[*]' $use

View file

@ -1,27 +1,27 @@
// Regression test for https://github.com/rust-lang/rust/issues/100973 // Regression test for https://github.com/rust-lang/rust/issues/100973
//@ set m1 = "$.index[*][?(@.name == 'm1' && @.inner.module)].id" //@ set m1 = "$.index[?(@.name == 'm1' && @.inner.module)].id"
//@ is "$.index[*][?(@.name == 'm1')].inner.module.items" [] //@ is "$.index[?(@.name == 'm1')].inner.module.items" []
//@ is "$.index[*][?(@.name == 'm1')].inner.module.is_stripped" true //@ is "$.index[?(@.name == 'm1')].inner.module.is_stripped" true
mod m1 { mod m1 {
pub fn f() {} pub fn f() {}
} }
//@ set m2 = "$.index[*][?(@.name == 'm2' && @.inner.module)].id" //@ set m2 = "$.index[?(@.name == 'm2' && @.inner.module)].id"
//@ is "$.index[*][?(@.name == 'm2')].inner.module.items" [] //@ is "$.index[?(@.name == 'm2')].inner.module.items" []
//@ is "$.index[*][?(@.name == 'm2')].inner.module.is_stripped" true //@ is "$.index[?(@.name == 'm2')].inner.module.is_stripped" true
mod m2 { mod m2 {
pub fn f(_: u8) {} pub fn f(_: u8) {}
} }
//@ set m1_use = "$.index[*][?(@.docs=='m1 re-export')].id" //@ set m1_use = "$.index[?(@.docs=='m1 re-export')].id"
//@ is "$.index[*].inner.use[?(@.name=='m1')].id" $m1 //@ is "$.index[?(@.inner.use.name=='m1')].inner.use.id" $m1
//@ is "$.index[*].inner.use[?(@.name=='m1')].is_glob" true //@ is "$.index[?(@.inner.use.name=='m1')].inner.use.is_glob" true
/// m1 re-export /// m1 re-export
pub use m1::*; pub use m1::*;
//@ set m2_use = "$.index[*][?(@.docs=='m2 re-export')].id" //@ set m2_use = "$.index[?(@.docs=='m2 re-export')].id"
//@ is "$.index[*].inner.use[?(@.name=='m2')].id" $m2 //@ is "$.index[?(@.inner.use.name=='m2')].inner.use.id" $m2
//@ is "$.index[*].inner.use[?(@.name=='m2')].is_glob" true //@ is "$.index[?(@.inner.use.name=='m2')].inner.use.is_glob" true
/// m2 re-export /// m2 re-export
pub use m2::*; pub use m2::*;
//@ ismany "$.index[*].inner.module[?(@.is_crate==true)].items[*]" $m1_use $m2_use //@ ismany "$.index[?(@.name=='glob_collision')].inner.module.items[*]" $m1_use $m2_use

View file

@ -1,8 +1,8 @@
// Regression test for https://github.com/rust-lang/rust/issues/100973 // Regression test for https://github.com/rust-lang/rust/issues/100973
//@ is "$.index[*][?(@.name=='m1' && @.inner.module)].inner.module.is_stripped" true //@ is "$.index[?(@.name=='m1' && @.inner.module)].inner.module.is_stripped" true
//@ set m1 = "$.index[*][?(@.name=='m1')].id" //@ set m1 = "$.index[?(@.name=='m1')].id"
mod m1 {} mod m1 {}
//@ is "$.index[*][?(@.inner.use)].inner.use.id" $m1 //@ is "$.index[?(@.inner.use)].inner.use.id" $m1
pub use m1::*; pub use m1::*;

Some files were not shown because too many files have changed in this diff Show more