Serialize all enums as externally tagged to guarantee compatibility with binary formats such as bincode or postcard

This commit is contained in:
Luca Palmieri 2023-05-22 18:17:52 +01:00
parent 48ec50ae39
commit a5e5101375
96 changed files with 703 additions and 715 deletions

View File

@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize};
use std::path::PathBuf; use std::path::PathBuf;
/// rustdoc format-version. /// rustdoc format-version.
pub const FORMAT_VERSION: u32 = 25; pub const FORMAT_VERSION: u32 = 26;
/// A `Crate` is the root of the emitted JSON blob. It contains all type/documentation information /// A `Crate` is the root of the emitted JSON blob. It contains all type/documentation information
/// about the language items in the local crate, as well as info about external items to allow /// about the language items in the local crate, as well as info about external items to allow
@ -83,7 +83,6 @@ pub struct Item {
/// Stringified versions of the attributes on this item (e.g. `"#[inline]"`) /// Stringified versions of the attributes on this item (e.g. `"#[inline]"`)
pub attrs: Vec<String>, pub attrs: Vec<String>,
pub deprecation: Option<Deprecation>, pub deprecation: Option<Deprecation>,
#[serde(flatten)]
pub inner: ItemEnum, pub inner: ItemEnum,
} }
@ -222,7 +221,7 @@ pub enum ItemKind {
} }
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(tag = "kind", content = "inner", rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
pub enum ItemEnum { pub enum ItemEnum {
Module(Module), Module(Module),
ExternCrate { ExternCrate {
@ -543,7 +542,6 @@ pub enum Term {
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")] #[serde(rename_all = "snake_case")]
#[serde(tag = "kind", content = "inner")]
pub enum Type { pub enum Type {
/// Structs, enums, and unions /// Structs, enums, and unions
ResolvedPath(Path), ResolvedPath(Path),

View File

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

View File

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

View File

@ -1,12 +1,12 @@
#[repr(i8)] #[repr(i8)]
pub enum Ordering { pub enum Ordering {
// @is "$.index[*][?(@.name=='Less')].inner.discriminant.expr" '"-1"' // @is "$.index[*][?(@.name=='Less')].inner.variant.discriminant.expr" '"-1"'
// @is "$.index[*][?(@.name=='Less')].inner.discriminant.value" '"-1"' // @is "$.index[*][?(@.name=='Less')].inner.variant.discriminant.value" '"-1"'
Less = -1, Less = -1,
// @is "$.index[*][?(@.name=='Equal')].inner.discriminant.expr" '"0"' // @is "$.index[*][?(@.name=='Equal')].inner.variant.discriminant.expr" '"0"'
// @is "$.index[*][?(@.name=='Equal')].inner.discriminant.value" '"0"' // @is "$.index[*][?(@.name=='Equal')].inner.variant.discriminant.value" '"0"'
Equal = 0, Equal = 0,
// @is "$.index[*][?(@.name=='Greater')].inner.discriminant.expr" '"1"' // @is "$.index[*][?(@.name=='Greater')].inner.variant.discriminant.expr" '"1"'
// @is "$.index[*][?(@.name=='Greater')].inner.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.discriminant.value" '"0"' // @is "$.index[*][?(@.name=='Addition')].inner.variant.discriminant.value" '"0"'
// @is "$.index[*][?(@.name=='Addition')].inner.discriminant.expr" '"{ _ }"' // @is "$.index[*][?(@.name=='Addition')].inner.variant.discriminant.expr" '"{ _ }"'
Addition = 0 + 0, Addition = 0 + 0,
// @is "$.index[*][?(@.name=='Bin')].inner.discriminant.value" '"1"' // @is "$.index[*][?(@.name=='Bin')].inner.variant.discriminant.value" '"1"'
// @is "$.index[*][?(@.name=='Bin')].inner.discriminant.expr" '"0b1"' // @is "$.index[*][?(@.name=='Bin')].inner.variant.discriminant.expr" '"0b1"'
Bin = 0b1, Bin = 0b1,
// @is "$.index[*][?(@.name=='Oct')].inner.discriminant.value" '"2"' // @is "$.index[*][?(@.name=='Oct')].inner.variant.discriminant.value" '"2"'
// @is "$.index[*][?(@.name=='Oct')].inner.discriminant.expr" '"0o2"' // @is "$.index[*][?(@.name=='Oct')].inner.variant.discriminant.expr" '"0o2"'
Oct = 0o2, Oct = 0o2,
// @is "$.index[*][?(@.name=='PubConst')].inner.discriminant.value" '"3"' // @is "$.index[*][?(@.name=='PubConst')].inner.variant.discriminant.value" '"3"'
// @is "$.index[*][?(@.name=='PubConst')].inner.discriminant.expr" '"THREE"' // @is "$.index[*][?(@.name=='PubConst')].inner.variant.discriminant.expr" '"THREE"'
PubConst = THREE, PubConst = THREE,
// @is "$.index[*][?(@.name=='Hex')].inner.discriminant.value" '"4"' // @is "$.index[*][?(@.name=='Hex')].inner.variant.discriminant.value" '"4"'
// @is "$.index[*][?(@.name=='Hex')].inner.discriminant.expr" '"0x4"' // @is "$.index[*][?(@.name=='Hex')].inner.variant.discriminant.expr" '"0x4"'
Hex = 0x4, Hex = 0x4,
// @is "$.index[*][?(@.name=='Cast')].inner.discriminant.value" '"5"' // @is "$.index[*][?(@.name=='Cast')].inner.variant.discriminant.value" '"5"'
// @is "$.index[*][?(@.name=='Cast')].inner.discriminant.expr" '"{ _ }"' // @is "$.index[*][?(@.name=='Cast')].inner.variant.discriminant.expr" '"{ _ }"'
Cast = 5 as isize, Cast = 5 as isize,
// @is "$.index[*][?(@.name=='PubCall')].inner.discriminant.value" '"6"' // @is "$.index[*][?(@.name=='PubCall')].inner.variant.discriminant.value" '"6"'
// @is "$.index[*][?(@.name=='PubCall')].inner.discriminant.expr" '"{ _ }"' // @is "$.index[*][?(@.name=='PubCall')].inner.variant.discriminant.expr" '"{ _ }"'
PubCall = six(), PubCall = six(),
// @is "$.index[*][?(@.name=='PrivCall')].inner.discriminant.value" '"7"' // @is "$.index[*][?(@.name=='PrivCall')].inner.variant.discriminant.value" '"7"'
// @is "$.index[*][?(@.name=='PrivCall')].inner.discriminant.expr" '"{ _ }"' // @is "$.index[*][?(@.name=='PrivCall')].inner.variant.discriminant.expr" '"{ _ }"'
PrivCall = seven(), PrivCall = seven(),
// @is "$.index[*][?(@.name=='PrivConst')].inner.discriminant.value" '"8"' // @is "$.index[*][?(@.name=='PrivConst')].inner.variant.discriminant.value" '"8"'
// @is "$.index[*][?(@.name=='PrivConst')].inner.discriminant.expr" '"EIGHT"' // @is "$.index[*][?(@.name=='PrivConst')].inner.variant.discriminant.expr" '"EIGHT"'
PrivConst = EIGHT, PrivConst = EIGHT,
} }

View File

@ -4,40 +4,40 @@
#[repr(u64)] #[repr(u64)]
pub enum U64 { pub enum U64 {
// @is "$.index[*][?(@.name=='U64Min')].inner.discriminant.value" '"0"' // @is "$.index[*][?(@.name=='U64Min')].inner.variant.discriminant.value" '"0"'
// @is "$.index[*][?(@.name=='U64Min')].inner.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.discriminant.value" '"18446744073709551615"' // @is "$.index[*][?(@.name=='U64Max')].inner.variant.discriminant.value" '"18446744073709551615"'
// @is "$.index[*][?(@.name=='U64Max')].inner.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.discriminant.value" '"-9223372036854775808"' // @is "$.index[*][?(@.name=='I64Min')].inner.variant.discriminant.value" '"-9223372036854775808"'
// @is "$.index[*][?(@.name=='I64Min')].inner.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.discriminant.value" '"9223372036854775807"' // @is "$.index[*][?(@.name=='I64Max')].inner.variant.discriminant.value" '"9223372036854775807"'
// @is "$.index[*][?(@.name=='I64Max')].inner.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.discriminant.value" '"0"' // @is "$.index[*][?(@.name=='U128Min')].inner.variant.discriminant.value" '"0"'
// @is "$.index[*][?(@.name=='U128Min')].inner.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.discriminant.value" '"340282366920938463463374607431768211455"' // @is "$.index[*][?(@.name=='U128Max')].inner.variant.discriminant.value" '"340282366920938463463374607431768211455"'
// @is "$.index[*][?(@.name=='U128Max')].inner.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.discriminant.value" '"-170141183460469231731687303715884105728"' // @is "$.index[*][?(@.name=='I128Min')].inner.variant.discriminant.value" '"-170141183460469231731687303715884105728"'
// @is "$.index[*][?(@.name=='I128Min')].inner.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.discriminant.value" '"170141183460469231731687303715884105727"' // @is "$.index[*][?(@.name=='I128Max')].inner.variant.discriminant.value" '"170141183460469231731687303715884105727"'
// @is "$.index[*][?(@.name=='I128Max')].inner.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,17 @@
// ignore-tidy-linelength
#[repr(u32)] #[repr(u32)]
pub enum Foo { pub enum Foo {
// @is "$.index[*][?(@.name=='Basic')].inner.discriminant.value" '"0"' // @is "$.index[*][?(@.name=='Basic')].inner.variant.discriminant.value" '"0"'
// @is "$.index[*][?(@.name=='Basic')].inner.discriminant.expr" '"0"' // @is "$.index[*][?(@.name=='Basic')].inner.variant.discriminant.expr" '"0"'
Basic = 0, Basic = 0,
// @is "$.index[*][?(@.name=='Suffix')].inner.discriminant.value" '"10"' // @is "$.index[*][?(@.name=='Suffix')].inner.variant.discriminant.value" '"10"'
// @is "$.index[*][?(@.name=='Suffix')].inner.discriminant.expr" '"10u32"' // @is "$.index[*][?(@.name=='Suffix')].inner.variant.discriminant.expr" '"10u32"'
Suffix = 10u32, Suffix = 10u32,
// @is "$.index[*][?(@.name=='Underscore')].inner.discriminant.value" '"100"' // @is "$.index[*][?(@.name=='Underscore')].inner.variant.discriminant.value" '"100"'
// @is "$.index[*][?(@.name=='Underscore')].inner.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.discriminant.value" '"1000"' // @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.variant.discriminant.value" '"1000"'
// @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.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,12 @@
// ignore-tidy-linelength
pub enum Foo { pub enum Foo {
// @is "$.index[*][?(@.name=='Has')].inner.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.discriminant" null // @is "$.index[*][?(@.name=='Doesnt')].inner.variant.discriminant" null
Doesnt, Doesnt,
// @is "$.index[*][?(@.name=='AlsoDoesnt')].inner.discriminant" null // @is "$.index[*][?(@.name=='AlsoDoesnt')].inner.variant.discriminant" null
AlsoDoesnt, AlsoDoesnt,
// @is "$.index[*][?(@.name=='AlsoHas')].inner.discriminant" '{"expr":"44", "value":"44"}' // @is "$.index[*][?(@.name=='AlsoHas')].inner.variant.discriminant" '{"expr":"44", "value":"44"}'
AlsoHas = 44, AlsoHas = 44,
} }

View File

@ -3,13 +3,13 @@
#[repr(i32)] #[repr(i32)]
// @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(i32)]"]' // @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(i32)]"]'
pub enum Foo { pub enum Foo {
// @is "$.index[*][?(@.name=='Struct')].inner.discriminant" null // @is "$.index[*][?(@.name=='Struct')].inner.variant.discriminant" null
// @count "$.index[*][?(@.name=='Struct')].inner.kind.struct.fields[*]" 0 // @count "$.index[*][?(@.name=='Struct')].inner.variant.kind.struct.fields[*]" 0
Struct {}, Struct {},
// @is "$.index[*][?(@.name=='StructWithDiscr')].inner.discriminant" '{"expr": "42", "value": "42"}' // @is "$.index[*][?(@.name=='StructWithDiscr')].inner.variant.discriminant" '{"expr": "42", "value": "42"}'
// @count "$.index[*][?(@.name=='StructWithDiscr')].inner.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.discriminant" '{"expr": "0x42", "value": "66"}' // @is "$.index[*][?(@.name=='StructWithHexDiscr')].inner.variant.discriminant" '{"expr": "0x42", "value": "66"}'
// @count "$.index[*][?(@.name=='StructWithHexDiscr')].inner.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

@ -3,13 +3,13 @@
#[repr(u32)] #[repr(u32)]
// @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(u32)]"]' // @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(u32)]"]'
pub enum Foo { pub enum Foo {
// @is "$.index[*][?(@.name=='Tuple')].inner.discriminant" null // @is "$.index[*][?(@.name=='Tuple')].inner.variant.discriminant" null
// @count "$.index[*][?(@.name=='Tuple')].inner.kind.tuple[*]" 0 // @count "$.index[*][?(@.name=='Tuple')].inner.variant.kind.tuple[*]" 0
Tuple(), Tuple(),
// @is "$.index[*][?(@.name=='TupleWithDiscr')].inner.discriminant" '{"expr": "1", "value": "1"}' // @is "$.index[*][?(@.name=='TupleWithDiscr')].inner.variant.discriminant" '{"expr": "1", "value": "1"}'
// @count "$.index[*][?(@.name=='TupleWithDiscr')].inner.kind.tuple[*]" 1 // @count "$.index[*][?(@.name=='TupleWithDiscr')].inner.variant.kind.tuple[*]" 1
TupleWithDiscr(i32) = 1, TupleWithDiscr(i32) = 1,
// @is "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.discriminant" '{"expr": "0b10", "value": "2"}' // @is "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.variant.discriminant" '{"expr": "0b10", "value": "2"}'
// @count "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.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.is_crate == true)].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

@ -5,8 +5,8 @@
// @has "$.index[*][?(@.name=='ParseError')]" // @has "$.index[*][?(@.name=='ParseError')]"
// @has "$.index[*][?(@.name=='UnexpectedEndTag')]" // @has "$.index[*][?(@.name=='UnexpectedEndTag')]"
// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.kind.tuple" [null] // @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant.kind.tuple" [null]
// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.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

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

View File

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

View File

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

View File

@ -10,9 +10,9 @@ pub enum Color {
Blue, Blue,
} }
// @set use_Color = "$.index[*][?(@.kind == 'import')].id" // @set use_Color = "$.index[*][?(@.inner.import)].id"
// @is "$.index[*][?(@.kind == 'import')].inner.id" $Color // @is "$.index[*][?(@.inner.import)].inner.import.id" $Color
// @is "$.index[*][?(@.kind == 'import')].inner.glob" true // @is "$.index[*][?(@.inner.import)].inner.import.glob" true
pub use Color::*; pub use Color::*;
// @ismany "$.index[*][?(@.name == 'use_glob')].inner.items[*]" $Color $use_Color // @ismany "$.index[*][?(@.name == 'use_glob')].inner.module.items[*]" $Color $use_Color

View File

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

View File

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

View File

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

View File

@ -2,23 +2,23 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
// @is "$.index[*][?(@.name=='AbiRust')].inner.type.inner.header.abi" \"Rust\" // @is "$.index[*][?(@.name=='AbiRust')].inner.typedef.type.function_pointer.header.abi" \"Rust\"
pub type AbiRust = fn(); pub type AbiRust = fn();
// @is "$.index[*][?(@.name=='AbiC')].inner.type.inner.header.abi" '{"C": {"unwind": false}}' // @is "$.index[*][?(@.name=='AbiC')].inner.typedef.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.inner.header.abi" '{"System": {"unwind": false}}' // @is "$.index[*][?(@.name=='AbiSystem')].inner.typedef.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.inner.header.abi" '{"C": {"unwind": true}}' // @is "$.index[*][?(@.name=='AbiCUnwind')].inner.typedef.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.inner.header.abi" '{"System": {"unwind": true}}' // @is "$.index[*][?(@.name=='AbiSystemUnwind')].inner.typedef.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.inner.header.abi.Other" '"\"vectorcall\""' // @is "$.index[*][?(@.name=='AbiVecorcall')].inner.typedef.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.inner.header.abi.Other" '"\"vectorcall-unwind\""' // @is "$.index[*][?(@.name=='AbiVecorcallUnwind')].inner.typedef.type.function_pointer.header.abi.Other" '"\"vectorcall-unwind\""'
pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn(); pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn();

View File

@ -3,12 +3,11 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.decl.inputs[*]" 1 // @count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.inputs[*]" 1
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.decl.inputs[0][0]" '"val"' // @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.inputs[0][0]" '"val"'
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.decl.inputs[0][1].kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.inputs[0][1].borrowed_ref.lifetime" \"\'c\"
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.decl.inputs[0][1].inner.lifetime" \"\'c\" // @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.output.primitive" \"i32\"
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.decl.output" '{ "kind": "primitive", "inner": "i32" }' // @count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.generic_params[*]" 1
// @count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.generic_params[*]" 1 // @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.generic_params[0].name" \"\'c\"
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.generic_params[0].name" \"\'c\" // @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }'
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.type.inner.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,11 @@
// @is "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header.unsafe" false // ignore-tidy-linelength
// @is "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header.const" false
// @is "$.index[*][?(@.name=='FnPointer')].inner.type.inner.header.async" false // @is "$.index[*][?(@.name=='FnPointer')].inner.typedef.type.function_pointer.header.unsafe" false
// @is "$.index[*][?(@.name=='FnPointer')].inner.typedef.type.function_pointer.header.const" false
// @is "$.index[*][?(@.name=='FnPointer')].inner.typedef.type.function_pointer.header.async" false
pub type FnPointer = fn(); pub type FnPointer = fn();
// @is "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header.unsafe" true // @is "$.index[*][?(@.name=='UnsafePointer')].inner.typedef.type.function_pointer.header.unsafe" true
// @is "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header.const" false // @is "$.index[*][?(@.name=='UnsafePointer')].inner.typedef.type.function_pointer.header.const" false
// @is "$.index[*][?(@.name=='UnsafePointer')].inner.type.inner.header.async" false // @is "$.index[*][?(@.name=='UnsafePointer')].inner.typedef.type.function_pointer.header.async" false
pub type UnsafePointer = unsafe fn(); pub type UnsafePointer = unsafe fn();

View File

@ -2,23 +2,23 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
// @is "$.index[*][?(@.name=='abi_rust')].inner.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.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.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.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.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.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.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

@ -5,32 +5,30 @@
use std::future::Future; use std::future::Future;
// @is "$.index[*][?(@.name=='get_int')].inner.decl.output" '{"inner": "i32", "kind": "primitive"}' // @is "$.index[*][?(@.name=='get_int')].inner.function.decl.output.primitive" \"i32\"
// @is "$.index[*][?(@.name=='get_int')].inner.header.async" false // @is "$.index[*][?(@.name=='get_int')].inner.function.header.async" false
pub fn get_int() -> i32 { pub fn get_int() -> i32 {
42 42
} }
// @is "$.index[*][?(@.name=='get_int_async')].inner.decl.output" '{"inner": "i32", "kind": "primitive"}' // @is "$.index[*][?(@.name=='get_int_async')].inner.function.decl.output.primitive" \"i32\"
// @is "$.index[*][?(@.name=='get_int_async')].inner.header.async" true // @is "$.index[*][?(@.name=='get_int_async')].inner.function.header.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.decl.output.kind" '"impl_trait"' // @is "$.index[*][?(@.name=='get_int_future')].inner.function.decl.output.impl_trait[0].trait_bound.trait.name" '"Future"'
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.inner[0].trait_bound.trait.name" '"Future"' // @is "$.index[*][?(@.name=='get_int_future')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"'
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"' // @is "$.index[*][?(@.name=='get_int_future')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type.primitive" \"i32\"
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type" '{"inner": "i32", "kind": "primitive"}' // @is "$.index[*][?(@.name=='get_int_future')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='get_int_future')].inner.header.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.decl.output.kind" '"impl_trait"' // @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.decl.output.impl_trait[0].trait_bound.trait.name" '"Future"'
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.inner[0].trait_bound.trait.name" '"Future"' // @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"'
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"' // @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type.primitive" \"i32\"
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type" '{"inner": "i32", "kind": "primitive"}' // @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.header.async" true
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.header.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

@ -2,8 +2,8 @@
#![no_core] #![no_core]
extern "C" { extern "C" {
// @is "$.index[*][?(@.name == 'not_variadic')].inner.decl.c_variadic" false // @is "$.index[*][?(@.name == 'not_variadic')].inner.function.decl.c_variadic" false
pub fn not_variadic(_: i32); pub fn not_variadic(_: i32);
// @is "$.index[*][?(@.name == 'variadic')].inner.decl.c_variadic" true // @is "$.index[*][?(@.name == 'variadic')].inner.function.decl.c_variadic" true
pub fn variadic(_: i32, ...); pub fn variadic(_: i32, ...);
} }

View File

@ -9,59 +9,55 @@ 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.generics.where_predicates" "[]" // @is "$.index[*][?(@.name=='generics')].inner.function.generics.where_predicates" "[]"
// @count "$.index[*][?(@.name=='generics')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='generics')].inner.function.generics.params[*]" 1
// @is "$.index[*][?(@.name=='generics')].inner.generics.params[0].name" '"F"' // @is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].name" '"F"'
// @is "$.index[*][?(@.name=='generics')].inner.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.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.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.decl.inputs[*]" 1 // @count "$.index[*][?(@.name=='generics')].inner.function.decl.inputs[*]" 1
// @is "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][0]" '"f"' // @is "$.index[*][?(@.name=='generics')].inner.function.decl.inputs[0][0]" '"f"'
// @is "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][1].kind" '"generic"' // @is "$.index[*][?(@.name=='generics')].inner.function.decl.inputs[0][1].generic" '"F"'
// @is "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][1].inner" '"F"'
pub fn generics<F: Foo>(f: F) {} pub fn generics<F: Foo>(f: F) {}
// @is "$.index[*][?(@.name=='impl_trait')].inner.generics.where_predicates" "[]" // @is "$.index[*][?(@.name=='impl_trait')].inner.function.generics.where_predicates" "[]"
// @count "$.index[*][?(@.name=='impl_trait')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[*]" 1
// @is "$.index[*][?(@.name=='impl_trait')].inner.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.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.decl.inputs[*]" 1 // @count "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[*]" 1
// @is "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][0]" '"f"' // @is "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[0][0]" '"f"'
// @is "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].kind" '"impl_trait"' // @count "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[0][1].impl_trait[*]" 1
// @count "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].inner[*]" 1 // @is "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[0][1].impl_trait[0].trait_bound.trait.id" $foo
// @is "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].inner[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.generics.params[*]" 3 // @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[*]" 3
// @is "$.index[*][?(@.name=='where_clase')].inner.generics.params[0].name" '"F"' // @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[0].name" '"F"'
// @is "$.index[*][?(@.name=='where_clase')].inner.generics.params[0].kind" '{"type": {"bounds": [], "default": null, "synthetic": false}}' // @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[0].kind" '{"type": {"bounds": [], "default": null, "synthetic": false}}'
// @count "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[*]" 3 // @count "$.index[*][?(@.name=='where_clase')].inner.function.decl.inputs[*]" 3
// @is "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][0]" '"f"' // @is "$.index[*][?(@.name=='where_clase')].inner.function.decl.inputs[0][0]" '"f"'
// @is "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][1].kind" '"generic"' // @is "$.index[*][?(@.name=='where_clase')].inner.function.decl.inputs[0][1].generic" '"F"'
// @is "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][1].inner" '"F"' // @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[*]" 3
// @count "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[*]" 3
// @is "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[0].bound_predicate.type" '{"inner": "F", "kind": "generic"}' // @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.type.generic" \"F\"
// @count "$.index[*][?(@.name=='where_clase')].inner.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.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.generics.where_predicates[1].bound_predicate.type" '{"inner": "G", "kind": "generic"}' // @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.type.generic" \"G\"
// @count "$.index[*][?(@.name=='where_clase')].inner.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.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.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.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.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.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.generics.where_predicates[2].bound_predicate.type.kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.lifetime" \"\'b\"
// @is "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[2].bound_predicate.type.inner.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.generics.where_predicates[2].bound_predicate.type.inner.type" '{"inner": "H", "kind": "generic"}' // @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[*]" 1
// @count "$.index[*][?(@.name=='where_clase')].inner.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.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.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.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.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.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

@ -3,15 +3,14 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @count "$.index[*][?(@.name=='generic_returns')].inner.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.decl.inputs" [] // @is "$.index[*][?(@.name=='get_foo')].inner.function.decl.inputs" []
// @is "$.index[*][?(@.name=='get_foo')].inner.decl.output.kind" '"impl_trait"' // @count "$.index[*][?(@.name=='get_foo')].inner.function.decl.output.impl_trait[*]" 1
// @count "$.index[*][?(@.name=='get_foo')].inner.decl.output.inner[*]" 1 // @is "$.index[*][?(@.name=='get_foo')].inner.function.decl.output.impl_trait[0].trait_bound.trait.id" $foo
// @is "$.index[*][?(@.name=='get_foo')].inner.decl.output.inner[0].trait_bound.trait.id" $foo
pub fn get_foo() -> impl Foo { pub fn get_foo() -> impl Foo {
Fooer {} Fooer {}
} }

View File

@ -6,21 +6,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.generics.where_predicates" [] // @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.where_predicates" []
// @count "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[*]" 1
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.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.generics.params[0].kind.type.synthetic" false // @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.synthetic" false
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.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.decl.inputs" '[["w", {"inner": "T", "kind": "generic"}]]' // @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.decl.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.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.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.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.generics.params[0].kind.type.synthetic" true // @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.synthetic" true
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.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.decl.inputs[*]" 1 // @count "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.decl.inputs[*]" 1
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.decl.inputs[0][0]" '"w"' // @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.decl.inputs[0][0]" '"w"'
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.decl.inputs[0][1].kind" '"impl_trait"' // @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.decl.inputs[0][1].impl_trait[0].trait_bound.trait.id" $wham_id
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.decl.inputs[0][1].inner[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.decl.inputs[0][0]" '"(x, _)"' // @is "$.index[*][?(@.name=='fst')].inner.function.decl.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.decl.inputs[0][0]" '"_"' // @is "$.index[*][?(@.name=='drop_int')].inner.function.decl.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.header.async" false // @is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='nothing_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='nothing_fn')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.unsafe" false
pub fn nothing_fn() {} pub fn nothing_fn() {}
// @is "$.index[*][?(@.name=='unsafe_fn')].inner.header.async" false // @is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='unsafe_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='unsafe_fn')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.unsafe" true
pub unsafe fn unsafe_fn() {} pub unsafe fn unsafe_fn() {}
// @is "$.index[*][?(@.name=='const_fn')].inner.header.async" false // @is "$.index[*][?(@.name=='const_fn')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='const_fn')].inner.header.const" true // @is "$.index[*][?(@.name=='const_fn')].inner.function.header.const" true
// @is "$.index[*][?(@.name=='const_fn')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='const_fn')].inner.function.header.unsafe" false
pub const fn const_fn() {} pub const fn const_fn() {}
// @is "$.index[*][?(@.name=='async_fn')].inner.header.async" true // @is "$.index[*][?(@.name=='async_fn')].inner.function.header.async" true
// @is "$.index[*][?(@.name=='async_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='async_fn')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='async_fn')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='async_fn')].inner.function.header.unsafe" false
pub async fn async_fn() {} pub async fn async_fn() {}
// @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.async" true // @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.async" true
// @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.unsafe" true
pub async unsafe fn async_unsafe_fn() {} pub async unsafe fn async_unsafe_fn() {}
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.async" false // @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.const" true // @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.const" true
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.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

@ -3,8 +3,7 @@
/// @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.decl.output.kind" '"resolved_path"' // @is "$.index[*][?(@.name=='demo')].inner.function.decl.output.resolved_path.id" $foo
// @is "$.index[*][?(@.name=='demo')].inner.decl.output.inner.id" $foo
pub fn demo() -> Foo { pub fn demo() -> Foo {
42 42
} }

View File

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

View File

@ -5,7 +5,7 @@
#![no_core] #![no_core]
// @has "$.index[*][?(@.name=='glob')]" // @has "$.index[*][?(@.name=='glob')]"
// @has "$.index[*][?(@.kind=='import')].inner.name" \"*\" // @has "$.index[*][?(@.inner.import)].inner.import.name" \"*\"
mod m1 { mod m1 {

View File

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

View File

@ -3,7 +3,7 @@ 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.id" // @set ForeignTrait = "$.index[*][?(@.docs=='ForeignTrait id hack')].inner.import.id"
pub struct LocalStruct; pub struct LocalStruct;
// @set LocalStruct = "$.index[*][?(@.name=='LocalStruct')].id" // @set LocalStruct = "$.index[*][?(@.name=='LocalStruct')].id"
@ -12,7 +12,7 @@ pub struct LocalStruct;
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.for.inner.id" $LocalStruct // @is "$.index[*][?(@.docs=='foreign for local')].inner.impl.for.resolved_path.id" $LocalStruct
// @is "$.index[*][?(@.docs=='foreign for local')].inner.trait.id" $ForeignTrait // @is "$.index[*][?(@.docs=='foreign for local')].inner.impl.trait.id" $ForeignTrait
// @has "$.index[*][?(@.name=='LocalStruct')].inner.impls[*]" $impl // @has "$.index[*][?(@.name=='LocalStruct')].inner.struct.impls[*]" $impl

View File

@ -4,19 +4,19 @@
#![no_core] #![no_core]
mod bar { mod bar {
// @set baz = "$.index[*][?(@.kind=='struct')].id" // @set baz = "$.index[*][?(@.inner.struct)].id"
pub struct Baz; pub struct Baz;
// @set impl = "$.index[*][?(@.kind=='impl')].id" // @set impl = "$.index[*][?(@.inner.impl)].id"
impl Baz { impl Baz {
// @set doit = "$.index[*][?(@.kind=='function')].id" // @set doit = "$.index[*][?(@.inner.function)].id"
pub fn doit() {} pub fn doit() {}
} }
} }
// @set import = "$.index[*][?(@.kind=='import')].id" // @set import = "$.index[*][?(@.inner.import)].id"
pub use bar::Baz; pub use bar::Baz;
// @is "$.index[*][?(@.kind=='module')].inner.items[*]" $import // @is "$.index[*].inner.module.items[*]" $import
// @is "$.index[*][?(@.kind=='import')].inner.id" $baz // @is "$.index[*].inner.import.id" $baz
// @is "$.index[*][?(@.kind=='struct')].inner.impls[*]" $impl // @is "$.index[*].inner.struct.impls[*]" $impl
// @is "$.index[*][?(@.kind=='impl')].inner.items[*]" $doit // @is "$.index[*].inner.impl.items[*]" $doit

View File

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

View File

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

View File

@ -5,14 +5,13 @@
// @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.trait.id" $Local // @is "$.index[*][?(@.docs=='Local for bool')].inner.impl.trait.id" $Local
// @is "$.index[*][?(@.docs=='Local for bool')].inner.for.kind" '"primitive"' // @is "$.index[*][?(@.docs=='Local for bool')].inner.impl.for.primitive" '"bool"'
// @is "$.index[*][?(@.docs=='Local for bool')].inner.for.inner" '"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.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')]"

View File

@ -2,6 +2,6 @@
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.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

@ -3,30 +3,27 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @is "$.index[*][?(@.name=='longest')].inner.generics.params[0].name" \"\'a\" // @is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].name" \"\'a\"
// @is "$.index[*][?(@.name=='longest')].inner.generics.params[0].kind" '{"lifetime": {"outlives": []}}' // @is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}'
// @is "$.index[*][?(@.name=='longest')].inner.generics.params[0].kind" '{"lifetime": {"outlives": []}}' // @is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}'
// @count "$.index[*][?(@.name=='longest')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='longest')].inner.function.generics.params[*]" 1
// @is "$.index[*][?(@.name=='longest')].inner.generics.where_predicates" [] // @is "$.index[*][?(@.name=='longest')].inner.function.generics.where_predicates" []
// @count "$.index[*][?(@.name=='longest')].inner.decl.inputs[*]" 2 // @count "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[*]" 2
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[0][0]" '"l"' // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][0]" '"l"'
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[1][0]" '"r"' // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][0]" '"r"'
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[0][1].kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][1].borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[0][1].inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][1].borrowed_ref.mutable" false
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[0][1].inner.mutable" false // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][1].borrowed_ref.type.primitive" \"str\"
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[0][1].inner.type" '{"inner": "str", "kind": "primitive"}'
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[1][1].kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][1].borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[1][1].inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][1].borrowed_ref.mutable" false
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[1][1].inner.mutable" false // @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][1].borrowed_ref.type.primitive" \"str\"
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[1][1].inner.type" '{"inner": "str", "kind": "primitive"}'
// @is "$.index[*][?(@.name=='longest')].inner.decl.output.kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='longest')].inner.function.decl.output.borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='longest')].inner.decl.output.inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='longest')].inner.function.decl.output.borrowed_ref.mutable" false
// @is "$.index[*][?(@.name=='longest')].inner.decl.output.inner.mutable" false // @is "$.index[*][?(@.name=='longest')].inner.function.decl.output.borrowed_ref.type.primitive" \"str\"
// @is "$.index[*][?(@.name=='longest')].inner.decl.output.inner.type" '{"inner": "str", "kind": "primitive"}'
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

@ -3,21 +3,19 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @count "$.index[*][?(@.name=='foo')].inner.generics.params[*]" 3 // @count "$.index[*][?(@.name=='foo')].inner.function.generics.params[*]" 3
// @is "$.index[*][?(@.name=='foo')].inner.generics.where_predicates" [] // @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates" []
// @is "$.index[*][?(@.name=='foo')].inner.generics.params[0].name" \"\'a\" // @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[0].name" \"\'a\"
// @is "$.index[*][?(@.name=='foo')].inner.generics.params[1].name" \"\'b\" // @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[1].name" \"\'b\"
// @is "$.index[*][?(@.name=='foo')].inner.generics.params[2].name" '"T"' // @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].name" '"T"'
// @is "$.index[*][?(@.name=='foo')].inner.generics.params[0].kind.lifetime.outlives" [] // @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[0].kind.lifetime.outlives" []
// @is "$.index[*][?(@.name=='foo')].inner.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.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.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.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.decl.inputs[0][1].kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='foo')].inner.decl.inputs[0][1].inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.mutable" false
// @is "$.index[*][?(@.name=='foo')].inner.decl.inputs[0][1].inner.mutable" false // @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.type.borrowed_ref.lifetime" \"\'b\"
// @is "$.index[*][?(@.name=='foo')].inner.decl.inputs[0][1].inner.type.kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.type.borrowed_ref.mutable" false
// @is "$.index[*][?(@.name=='foo')].inner.decl.inputs[0][1].inner.type.inner.lifetime" \"\'b\" // @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.type.borrowed_ref.type.generic" \"T\"
// @is "$.index[*][?(@.name=='foo')].inner.decl.inputs[0][1].inner.type.inner.mutable" false
// @is "$.index[*][?(@.name=='foo')].inner.decl.inputs[0][1].inner.type.inner.type" '{"inner": "T", "kind": "generic"}'
pub fn foo<'a, 'b: 'a, T: 'b>(_: &'a &'b T) {} pub fn foo<'a, 'b: 'a, T: 'b>(_: &'a &'b T) {}

View File

@ -8,47 +8,47 @@
pub struct Foo; pub struct Foo;
impl Foo { impl Foo {
// @is "$.index[*][?(@.name=='abi_rust')].inner.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.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.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.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.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.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.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.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.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.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.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.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.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.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.header.async" false // @is "$.index[*][?(@.name=='const_meth')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='const_meth')].inner.header.const" true // @is "$.index[*][?(@.name=='const_meth')].inner.function.header.const" true
// @is "$.index[*][?(@.name=='const_meth')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='const_meth')].inner.function.header.unsafe" false
pub const fn const_meth() {} pub const fn const_meth() {}
// @is "$.index[*][?(@.name=='nothing_meth')].inner.header.async" false // @is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='nothing_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='nothing_meth')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.unsafe" false
pub fn nothing_meth() {} pub fn nothing_meth() {}
// @is "$.index[*][?(@.name=='unsafe_meth')].inner.header.async" false // @is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='unsafe_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='unsafe_meth')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.unsafe" true
pub unsafe fn unsafe_meth() {} pub unsafe fn unsafe_meth() {}
// @is "$.index[*][?(@.name=='async_meth')].inner.header.async" true // @is "$.index[*][?(@.name=='async_meth')].inner.function.header.async" true
// @is "$.index[*][?(@.name=='async_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='async_meth')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='async_meth')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='async_meth')].inner.function.header.unsafe" false
pub async fn async_meth() {} pub async fn async_meth() {}
// @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.async" true // @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.async" true
// @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.const" false
// @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.unsafe" true
pub async unsafe fn async_unsafe_meth() {} pub async unsafe fn async_unsafe_meth() {}
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.async" false // @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.async" false
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.const" true // @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.const" true
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.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,30 +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\"
// @is "$.index[*][?(@.name=='nested')].kind" \"module\" // @has "$.index[*][?(@.name=='nested')].inner.module"
// @is "$.index[*][?(@.name=='nested')].inner.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.items[*]" $l1_id // @ismany "$.index[*][?(@.name=='nested')].inner.module.items[*]" $l1_id
// @is "$.index[*][?(@.name=='l1')].kind" \"module\" // @has "$.index[*][?(@.name=='l1')].inner.module"
// @is "$.index[*][?(@.name=='l1')].inner.is_crate" false // @is "$.index[*][?(@.name=='l1')].inner.module.is_crate" false
pub mod l1 { pub mod l1 {
// @is "$.index[*][?(@.name=='l3')].kind" \"module\" // @has "$.index[*][?(@.name=='l3')].inner.module"
// @is "$.index[*][?(@.name=='l3')].inner.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 {
// @is "$.index[*][?(@.name=='L4')].kind" \"struct\" // @has "$.index[*][?(@.name=='L4')].inner.struct"
// @is "$.index[*][?(@.name=='L4')].inner.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.items[*]" $l4_id // @ismany "$.index[*][?(@.name=='l3')].inner.module.items[*]" $l4_id
pub struct L4; pub struct L4;
} }
// @is "$.index[*][?(@.inner.source=='l3::L4')].kind" \"import\" // @is "$.index[*][?(@.inner.import)].inner.import.glob" false
// @is "$.index[*][?(@.inner.source=='l3::L4')].inner.glob" false // @is "$.index[*][?(@.inner.import)].inner.import.source" '"l3::L4"'
// @is "$.index[*][?(@.inner.source=='l3::L4')].inner.id" $l4_id // @is "$.index[*][?(@.inner.import)].inner.import.glob" false
// @set l4_use_id = "$.index[*][?(@.inner.source=='l3::L4')].id" // @is "$.index[*][?(@.inner.import)].inner.import.id" $l4_id
// @set l4_use_id = "$.index[*][?(@.inner.import)].id"
pub use l3::L4; pub use l3::L4;
} }
// @ismany "$.index[*][?(@.name=='l1')].inner.items[*]" $l3_id $l4_use_id // @ismany "$.index[*][?(@.name=='l1')].inner.module.items[*]" $l3_id $l4_use_id

View File

@ -16,9 +16,9 @@ struct PhantomData<T_>;
pub struct Wrapper<T_>(PhantomData<T_>); pub struct Wrapper<T_>(PhantomData<T_>);
// @count "$.index[*][?(@.name=='foo')].inner.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.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.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.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.generics.where_predicates[0].bound_predicate.generic_params[1].kind" '{ "type": { "bounds": [], "default": null, "synthetic": false } }' // @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].kind" '{ "type": { "bounds": [], "default": null, "synthetic": false } }'
pub fn foo() where for<'a, T> &'a Wrapper<T>: Trait {} pub fn foo() where for<'a, T> &'a Wrapper<T>: Trait {}

View File

@ -14,7 +14,7 @@ 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.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:

View File

@ -15,7 +15,7 @@ impl i32 {
self self
} }
// @is "$.index[*][?(@.docs=='Only core can do this')].inner.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"
@ -30,5 +30,5 @@ 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.name" '"i32"' // @is "$.index[*][?(@.docs=='i32')].inner.primitive.name" '"i32"'
// @ismany "$.index[*][?(@.docs=='i32')].inner.impls[*]" $impl_i32 $impl_trait_for_i32 // @ismany "$.index[*][?(@.docs=='i32')].inner.primitive.impls[*]" $impl_i32 $impl_trait_for_i32

View File

@ -1,22 +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.kind" \"primitive\" // @is "$.index[*][?(@.name=='PrimNever')].inner.typedef.type.primitive" \"never\"
// @is "$.index[*][?(@.name=='PrimNever')].inner.type.inner" \"never\"
pub type PrimNever = !; pub type PrimNever = !;
// @is "$.index[*][?(@.name=='PrimStr')].inner.type.kind" \"primitive\" // @is "$.index[*][?(@.name=='PrimStr')].inner.typedef.type.primitive" \"str\"
// @is "$.index[*][?(@.name=='PrimStr')].inner.type.inner" \"str\"
pub type PrimStr = str; pub type PrimStr = str;
// @is "$.index[*][?(@.name=='PrimBool')].inner.type.kind" \"primitive\" // @is "$.index[*][?(@.name=='PrimBool')].inner.typedef.type.primitive" \"bool\"
// @is "$.index[*][?(@.name=='PrimBool')].inner.type.inner" \"bool\"
pub type PrimBool = bool; pub type PrimBool = bool;
// @is "$.index[*][?(@.name=='PrimChar')].inner.type.kind" \"primitive\" // @is "$.index[*][?(@.name=='PrimChar')].inner.typedef.type.primitive" \"char\"
// @is "$.index[*][?(@.name=='PrimChar')].inner.type.inner" \"char\"
pub type PrimChar = char; pub type PrimChar = char;
// @is "$.index[*][?(@.name=='PrimU8')].inner.type.kind" \"primitive\" // @is "$.index[*][?(@.name=='PrimU8')].inner.typedef.type.primitive" \"u8\"
// @is "$.index[*][?(@.name=='PrimU8')].inner.type.inner" \"u8\"
pub type PrimU8 = u8; pub type PrimU8 = u8;

View File

@ -13,8 +13,8 @@ mod usize {}
// @!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[*][?(@.kind=='import' && @.inner.name=='my_i32')].inner.id" null // @is "$.index[*].inner.import[?(@.name=='my_i32')].id" null
pub use i32 as my_i32; pub use i32 as my_i32;
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='u32')].inner.id" null // @is "$.index[*].inner.import[?(@.name=='u32')].id" null
pub use u32; pub use u32;

View File

@ -1,10 +1,11 @@
// Regression Test for https://github.com/rust-lang/rust/issues/110138 // Regression Test for https://github.com/rust-lang/rust/issues/110138
// aux-build: enum_with_discriminant.rs // aux-build: enum_with_discriminant.rs
// ignore-tidy-linelength
#[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")]'
// @is '$.index[*][?(@.name == "enum_with_discriminant")].kind' '"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.items[*]' $enum_with_discriminant // @is '$.index[*][?(@.name == "doc_inline_external_crate")].inner.module.items[*]' $enum_with_discriminant

View File

@ -7,5 +7,5 @@
// ignore-tidy-linelength // ignore-tidy-linelength
// @is "$.index[*][?(@.kind=='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

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

View File

@ -3,26 +3,28 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @set m1 = "$.index[*][?(@.name == 'm1' && @.kind == 'module')].id" // @set m1 = "$.index[*][?(@.name == 'm1' && @.inner.module)].id"
// @is "$.index[*][?(@.name == 'm1' && @.kind == 'module')].inner.items" [] // @is "$.index[*][?(@.name == 'm1')].inner.module.items" []
// @is "$.index[*][?(@.name == 'm1' && @.kind == 'module')].inner.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' && @.kind == 'module')].id" // @set m2 = "$.index[*][?(@.name == 'm2' && @.inner.module)].id"
// @is "$.index[*][?(@.name == 'm2' && @.kind == 'module')].inner.items" [] // @is "$.index[*][?(@.name == 'm2')].inner.module.items" []
// @is "$.index[*][?(@.name == 'm2' && @.kind == 'module')].inner.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[*][?(@.inner.name=='m1')].id" // @set m1_use = "$.index[*][?(@.docs=='m1 re-export')].id"
// @is "$.index[*][?(@.inner.name=='m1')].inner.id" $m1 // @is "$.index[*].inner.import[?(@.name=='m1')].id" $m1
// @is "$.index[*][?(@.inner.name=='m1')].inner.glob" true // @is "$.index[*].inner.import[?(@.name=='m1')].glob" true
/// m1 re-export
pub use m1::*; pub use m1::*;
// @set m2_use = "$.index[*][?(@.inner.name=='m2')].id" // @set m2_use = "$.index[*][?(@.docs=='m2 re-export')].id"
// @is "$.index[*][?(@.inner.name=='m2')].inner.id" $m2 // @is "$.index[*].inner.import[?(@.name=='m2')].id" $m2
// @is "$.index[*][?(@.inner.name=='m2')].inner.glob" true // @is "$.index[*].inner.import[?(@.name=='m2')].glob" true
/// m2 re-export
pub use m2::*; pub use m2::*;
// @ismany "$.index[*][?(@.inner.is_crate==true)].inner.items[*]" $m1_use $m2_use // @ismany "$.index[*].inner.module[?(@.is_crate==true)].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' && @.kind == 'module')].inner.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.name=='m1' && @.kind=='import')].inner.id" $m1 // @is "$.index[*][?(@.inner.import)].inner.import.id" $m1
pub use m1::*; pub use m1::*;

View File

@ -3,8 +3,7 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is "$.index[*][?(@.name=='mod1')].kind" \"module\" // @is "$.index[*][?(@.name=='mod1')].inner.module.is_stripped" "true"
// @is "$.index[*][?(@.name=='mod1')].inner.is_stripped" "true"
mod mod1 { mod mod1 {
extern "C" { extern "C" {
// @set public_fn_id = "$.index[*][?(@.name=='public_fn')].id" // @set public_fn_id = "$.index[*][?(@.name=='public_fn')].id"
@ -12,12 +11,12 @@ mod mod1 {
// @!has "$.index[*][?(@.name=='private_fn')]" // @!has "$.index[*][?(@.name=='private_fn')]"
fn private_fn(); fn private_fn();
} }
// @ismany "$.index[*][?(@.name=='mod1')].inner.items[*]" $public_fn_id // @ismany "$.index[*][?(@.name=='mod1')].inner.module.items[*]" $public_fn_id
// @set mod1_id = "$.index[*][?(@.name=='mod1')].id" // @set mod1_id = "$.index[*][?(@.name=='mod1')].id"
} }
// @is "$.index[*][?(@.kind=='import')].inner.glob" true // @is "$.index[*][?(@.inner.import)].inner.import.glob" true
// @is "$.index[*][?(@.kind=='import')].inner.id" $mod1_id // @is "$.index[*][?(@.inner.import)].inner.import.id" $mod1_id
// @set use_id = "$.index[*][?(@.kind=='import')].id" // @set use_id = "$.index[*][?(@.inner.import)].id"
// @ismany "$.index[*][?(@.name=='glob_extern')].inner.items[*]" $use_id // @ismany "$.index[*][?(@.name=='glob_extern')].inner.module.items[*]" $use_id
pub use mod1::*; pub use mod1::*;

View File

@ -3,11 +3,9 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is "$.index[*][?(@.name=='mod1')].kind" \"module\" // @is "$.index[*][?(@.name=='mod1')].inner.module.is_stripped" "true"
// @is "$.index[*][?(@.name=='mod1')].inner.is_stripped" "true"
mod mod1 { mod mod1 {
// @is "$.index[*][?(@.name=='mod2')].kind" \"module\" // @is "$.index[*][?(@.name=='mod2')].inner.module.is_stripped" "true"
// @is "$.index[*][?(@.name=='mod2')].inner.is_stripped" "true"
mod mod2 { mod mod2 {
// @set m2pub_id = "$.index[*][?(@.name=='Mod2Public')].id" // @set m2pub_id = "$.index[*][?(@.name=='Mod2Public')].id"
pub struct Mod2Public; pub struct Mod2Public;
@ -16,7 +14,9 @@ mod mod1 {
struct Mod2Private; struct Mod2Private;
} }
// @set mod2_use_id = "$.index[*][?(@.kind=='import' && @.inner.name=='mod2')].id" // @set mod2_use_id = "$.index[*][?(@.docs=='Mod2 re-export')].id"
// @is "$.index[*][?(@.docs=='Mod2 re-export')].inner.import.name" \"mod2\"
/// Mod2 re-export
pub use self::mod2::*; pub use self::mod2::*;
// @set m1pub_id = "$.index[*][?(@.name=='Mod1Public')].id" // @set m1pub_id = "$.index[*][?(@.name=='Mod1Public')].id"
@ -25,9 +25,11 @@ mod mod1 {
struct Mod1Private; struct Mod1Private;
} }
// @set mod1_use_id = "$.index[*][?(@.kind=='import' && @.inner.name=='mod1')].id" // @set mod1_use_id = "$.index[*][?(@.docs=='Mod1 re-export')].id"
// @is "$.index[*][?(@.docs=='Mod1 re-export')].inner.import.name" \"mod1\"
/// Mod1 re-export
pub use mod1::*; pub use mod1::*;
// @ismany "$.index[*][?(@.name=='mod2')].inner.items[*]" $m2pub_id // @ismany "$.index[*][?(@.name=='mod2')].inner.module.items[*]" $m2pub_id
// @ismany "$.index[*][?(@.name=='mod1')].inner.items[*]" $m1pub_id $mod2_use_id // @ismany "$.index[*][?(@.name=='mod1')].inner.module.items[*]" $m1pub_id $mod2_use_id
// @ismany "$.index[*][?(@.name=='glob_private')].inner.items[*]" $mod1_use_id // @ismany "$.index[*][?(@.name=='glob_private')].inner.module.items[*]" $mod1_use_id

View File

@ -7,10 +7,10 @@ mod foo {
pub struct Foo; pub struct Foo;
} }
// @has "$.index[*][?(@.kind=='import' && @.inner.source=='foo::Foo')]" // @has "$.index[*].inner[?(@.import.source=='foo::Foo')]"
pub use foo::Foo; pub use foo::Foo;
pub mod bar { pub mod bar {
// @has "$.index[*][?(@.kind=='import' && @.inner.source=='crate::foo::Foo')]" // @has "$.index[*].inner[?(@.import.source=='crate::foo::Foo')]"
pub use crate::foo::Foo; pub use crate::foo::Foo;
} }

View File

@ -3,18 +3,20 @@
pub mod foo { pub mod foo {
// @set bar_id = "$.index[*][?(@.name=='Bar')].id" // @set bar_id = "$.index[*][?(@.name=='Bar')].id"
// @ismany "$.index[*][?(@.name=='foo')].inner.items[*]" $bar_id // @ismany "$.index[*][?(@.name=='foo')].inner.module.items[*]" $bar_id
pub struct Bar; pub struct Bar;
} }
// @set root_import_id = "$.index[*][?(@.inner.source=='foo::Bar')].id" // @set root_import_id = "$.index[*][?(@.docs=='Outer re-export')].id"
// @is "$.index[*][?(@.inner.source=='foo::Bar')].inner.id" $bar_id // @is "$.index[*].inner[?(@.import.source=='foo::Bar')].import.id" $bar_id
// @has "$.index[*][?(@.name=='in_root_and_mod_pub')].inner.items[*]" $root_import_id // @has "$.index[*][?(@.name=='in_root_and_mod_pub')].inner.module.items[*]" $root_import_id
/// Outer re-export
pub use foo::Bar; pub use foo::Bar;
pub mod baz { pub mod baz {
// @set baz_import_id = "$.index[*][?(@.inner.source=='crate::foo::Bar')].id" // @set baz_import_id = "$.index[*][?(@.docs=='Inner re-export')].id"
// @is "$.index[*][?(@.inner.source=='crate::foo::Bar')].inner.id" $bar_id // @is "$.index[*].inner[?(@.import.source=='crate::foo::Bar')].import.id" $bar_id
// @ismany "$.index[*][?(@.name=='baz')].inner.items[*]" $baz_import_id // @ismany "$.index[*][?(@.name=='baz')].inner.module.items[*]" $baz_import_id
/// Inner re-export
pub use crate::foo::Bar; pub use crate::foo::Bar;
} }

View File

@ -9,7 +9,8 @@ macro_rules! repro {
() => {}; () => {};
} }
// @set repro2_id = "$.index[*][?(@.inner.name=='repro2')].id" // @set repro2_id = "$.index[*][?(@.docs=='Re-export')].id"
/// Re-export
pub use crate::repro as repro2; pub use crate::repro as repro2;
// @ismany "$.index[*][?(@.name=='macro')].inner.items[*]" $repro_id $repro2_id // @ismany "$.index[*][?(@.name=='macro')].inner.module.items[*]" $repro_id $repro2_id

View File

@ -9,6 +9,6 @@ mod m1 {
pub use m1::x; pub use m1::x;
// @has "$.index[*][?(@.name=='x' && @.kind=='function')]" // @has "$.index[*][?(@.name=='x' && @.inner.function)]"
// @has "$.index[*][?(@.kind=='import' && @.inner.name=='x')].inner.source" '"m1::x"' // @has "$.index[*].inner[?(@.import.name=='x')].import.source" '"m1::x"'
// @!has "$.index[*][?(@.name=='m1')]" // @!has "$.index[*][?(@.name=='m1')]"

View File

@ -11,18 +11,18 @@ extern crate pub_struct as foo;
#[doc(inline)] #[doc(inline)]
// @set crate_use_id = "$.index[*][?(@.docs=='Hack A')].id" // @set crate_use_id = "$.index[*][?(@.docs=='Hack A')].id"
// @set foo_id = "$.index[*][?(@.docs=='Hack A')].inner.id" // @set foo_id = "$.index[*][?(@.docs=='Hack A')].inner.import.id"
/// Hack A /// Hack A
pub use foo::Foo; pub use foo::Foo;
// @set bar_id = "$.index[*][?(@.name=='bar')].id" // @set bar_id = "$.index[*][?(@.name=='bar')].id"
pub mod bar { pub mod bar {
// @is "$.index[*][?(@.docs=='Hack B')].inner.id" $foo_id // @is "$.index[*][?(@.docs=='Hack B')].inner.import.id" $foo_id
// @set bar_use_id = "$.index[*][?(@.docs=='Hack B')].id" // @set bar_use_id = "$.index[*][?(@.docs=='Hack B')].id"
// @ismany "$.index[*][?(@.name=='bar')].inner.items[*]" $bar_use_id // @ismany "$.index[*][?(@.name=='bar')].inner.module.items[*]" $bar_use_id
/// Hack B /// Hack B
pub use foo::Foo; pub use foo::Foo;
} }
// @ismany "$.index[*][?(@.kind=='import')].id" $crate_use_id $bar_use_id // @ismany "$.index[*][?(@.inner.import)].id" $crate_use_id $bar_use_id
// @ismany "$.index[*][?(@.name=='private_twice_one_inline')].inner.items[*]" $bar_id $crate_use_id // @ismany "$.index[*][?(@.name=='private_twice_one_inline')].inner.module.items[*]" $bar_id $crate_use_id

View File

@ -8,15 +8,19 @@
// @!has "$.index[*][?(@.name=='style')]" // @!has "$.index[*][?(@.name=='style')]"
mod style { mod style {
// @set color_struct_id = "$.index[*][?(@.kind=='struct' && @.name=='Color')].id" // @set color_struct_id = "$.index[*][?(@.inner.struct && @.name=='Color')].id"
pub struct Color; pub struct Color;
} }
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].inner.id" $color_struct_id // @is "$.index[*][?(@.docs=='First re-export')].inner.import.id" $color_struct_id
// @set color_export_id = "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].id" // @is "$.index[*][?(@.docs=='First re-export')].inner.import.name" \"Color\"
// @set color_export_id = "$.index[*][?(@.docs=='First re-export')].id"
/// First re-export
pub use style::Color; pub use style::Color;
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].inner.id" $color_struct_id // @is "$.index[*][?(@.docs=='Second re-export')].inner.import.id" $color_struct_id
// @set colour_export_id = "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].id" // @is "$.index[*][?(@.docs=='Second re-export')].inner.import.name" \"Colour\"
// @set colour_export_id = "$.index[*][?(@.docs=='Second re-export')].id"
/// Second re-export
pub use style::Color as Colour; pub use style::Color as Colour;
// @ismany "$.index[*][?(@.name=='private_two_names')].inner.items[*]" $color_export_id $colour_export_id // @ismany "$.index[*][?(@.name=='private_two_names')].inner.module.items[*]" $color_export_id $colour_export_id

View File

@ -1,9 +1,9 @@
// Regression test for <https://github.com/rust-lang/rust/issues/102583>. // Regression test for <https://github.com/rust-lang/rust/issues/102583>.
// @set impl_S = "$.index[*][?(@.docs=='impl S')].id" // @set impl_S = "$.index[*][?(@.docs=='impl S')].id"
// @has "$.index[*][?(@.name=='S')].inner.impls[*]" $impl_S // @has "$.index[*][?(@.name=='S')].inner.struct.impls[*]" $impl_S
// @set is_present = "$.index[*][?(@.name=='is_present')].id" // @set is_present = "$.index[*][?(@.name=='is_present')].id"
// @is "$.index[*][?(@.docs=='impl S')].inner.items[*]" $is_present // @is "$.index[*][?(@.docs=='impl S')].inner.impl.items[*]" $is_present
// @!has "$.index[*][?(@.name=='hidden_impl')]" // @!has "$.index[*][?(@.name=='hidden_impl')]"
// @!has "$.index[*][?(@.name=='hidden_fn')]" // @!has "$.index[*][?(@.name=='hidden_fn')]"

View File

@ -3,11 +3,11 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @!has "$.index[*][?(@.kind=='inner')]" // @!has "$.index[*][?(@.name=='inner')]"
mod inner { mod inner {
// @has "$.index[*][?(@.name=='Public')]" // @has "$.index[*][?(@.name=='Public')]"
pub struct Public; pub struct Public;
} }
// @is "$.index[*][?(@.kind=='import')].inner.name" \"NewName\" // @is "$.index[*][?(@.inner.import)].inner.import.name" \"NewName\"
pub use inner::Public as NewName; pub use inner::Public as NewName;

View File

@ -6,12 +6,13 @@
// @set inner_id = "$.index[*][?(@.name=='inner')].id" // @set inner_id = "$.index[*][?(@.name=='inner')].id"
pub mod inner { pub mod inner {
// @set public_id = "$.index[*][?(@.name=='Public')].id" // @set public_id = "$.index[*][?(@.name=='Public')].id"
// @ismany "$.index[*][?(@.name=='inner')].inner.items[*]" $public_id // @ismany "$.index[*][?(@.name=='inner')].inner.module.items[*]" $public_id
pub struct Public; pub struct Public;
} }
// @set import_id = "$.index[*][?(@.inner.name=='NewName')].id" // @set import_id = "$.index[*][?(@.docs=='Re-export')].id"
// @!has "$.index[*][?(@.inner.name=='Public')]" // @!has "$.index[*].inner[?(@.import.name=='Public')]"
// @is "$.index[*][?(@.inner.name=='NewName')].inner.source" \"inner::Public\" // @is "$.index[*].inner[?(@.import.name=='NewName')].import.source" \"inner::Public\"
/// Re-export
pub use inner::Public as NewName; pub use inner::Public as NewName;
// @ismany "$.index[*][?(@.name=='rename_public')].inner.items[*]" $inner_id $import_id // @ismany "$.index[*][?(@.name=='rename_public')].inner.module.items[*]" $inner_id $import_id

View File

@ -16,10 +16,10 @@ pub mod nested {
pub fn Foo() {} pub fn Foo() {}
} }
// @ismany "$.index[*][?(@.inner.name == 'Foo' && @.kind == 'import')].inner.id" $foo_fn $foo_struct // @ismany "$.index[*].inner[?(@.import.name == 'Foo')].import.id" $foo_fn $foo_struct
// @ismany "$.index[*][?(@.inner.name == 'Bar' && @.kind == 'import')].inner.id" $foo_fn $foo_struct // @ismany "$.index[*].inner[?(@.import.name == 'Bar')].import.id" $foo_fn $foo_struct
// @count "$.index[*][?(@.inner.name == 'Foo' && @.kind == 'import')]" 2 // @count "$.index[*].inner[?(@.import.name == 'Foo')]" 2
pub use nested::Foo; pub use nested::Foo;
// @count "$.index[*][?(@.inner.name == 'Bar' && @.kind == 'import')]" 2 // @count "$.index[*].inner[?(@.import.name == 'Bar')]" 2
pub use Foo as Bar; pub use Foo as Bar;

View File

@ -11,11 +11,13 @@ mod inner {
pub trait Trait {} pub trait Trait {}
} }
// @set export_id = "$.index[*][?(@.inner.name=='Trait')].id" // @set export_id = "$.index[*][?(@.docs=='First re-export')].id"
// @is "$.index[*][?(@.inner.name=='Trait')].inner.id" $trait_id // @is "$.index[*].inner[?(@.import.name=='Trait')].import.id" $trait_id
/// First re-export
pub use inner::Trait; pub use inner::Trait;
// @set reexport_id = "$.index[*][?(@.inner.name=='Reexport')].id" // @set reexport_id = "$.index[*][?(@.docs=='Second re-export')].id"
// @is "$.index[*][?(@.inner.name=='Reexport')].inner.id" $trait_id // @is "$.index[*].inner[?(@.import.name=='Reexport')].import.id" $trait_id
/// Second re-export
pub use inner::Trait as Reexport; pub use inner::Trait as Reexport;
// @ismany "$.index[*][?(@.name=='same_type_reexported_more_than_once')].inner.items[*]" $reexport_id $export_id // @ismany "$.index[*][?(@.name=='same_type_reexported_more_than_once')].inner.module.items[*]" $reexport_id $export_id

View File

@ -8,9 +8,9 @@ mod inner {
pub struct Public; pub struct Public;
} }
// @is "$.index[*][?(@.kind=='import')].inner.name" \"Public\" // @is "$.index[*][?(@.inner.import)].inner.import.name" \"Public\"
// @is "$.index[*][?(@.kind=='import')].inner.id" $pub_id // @is "$.index[*][?(@.inner.import)].inner.import.id" $pub_id
// @set use_id = "$.index[*][?(@.kind=='import')].id" // @set use_id = "$.index[*][?(@.inner.import)].id"
pub use inner::Public; pub use inner::Public;
// @ismany "$.index[*][?(@.name=='simple_private')].inner.items[*]" $use_id // @ismany "$.index[*][?(@.name=='simple_private')].inner.module.items[*]" $use_id

View File

@ -7,12 +7,13 @@
pub mod inner { pub mod inner {
// @set public_id = "$.index[*][?(@.name=='Public')].id" // @set public_id = "$.index[*][?(@.name=='Public')].id"
// @ismany "$.index[*][?(@.name=='inner')].inner.items[*]" $public_id // @ismany "$.index[*][?(@.name=='inner')].inner.module.items[*]" $public_id
pub struct Public; pub struct Public;
} }
// @set import_id = "$.index[*][?(@.inner.name=='Public')].id" // @set import_id = "$.index[*][?(@.docs=='Outer')].id"
// @is "$.index[*][?(@.inner.name=='Public')].inner.source" \"inner::Public\" // @is "$.index[*][?(@.docs=='Outer')].inner.import.source" \"inner::Public\"
/// Outer
pub use inner::Public; pub use inner::Public;
// @ismany "$.index[*][?(@.name=='simple_public')].inner.items[*]" $import_id $inner_id // @ismany "$.index[*][?(@.name=='simple_public')].inner.module.items[*]" $import_id $inner_id

View File

@ -8,8 +8,8 @@ mod secret {
pub struct Secret; pub struct Secret;
} }
// @is "$.index[*][?(@.name=='get_secret')].kind" \"function\" // @has "$.index[*][?(@.name=='get_secret')].inner.function"
// @is "$.index[*][?(@.name=='get_secret')].inner.decl.output.inner.name" \"secret::Secret\" // @is "$.index[*][?(@.name=='get_secret')].inner.function.decl.output.resolved_path.name" \"secret::Secret\"
pub fn get_secret() -> secret::Secret { pub fn get_secret() -> secret::Secret {
secret::Secret secret::Secret
} }

View File

@ -5,7 +5,7 @@ pub struct Demo {
// @set x = "$.index[*][?(@.name=='x')].id" // @set x = "$.index[*][?(@.name=='x')].id"
// @set y = "$.index[*][?(@.name=='y')].id" // @set y = "$.index[*][?(@.name=='y')].id"
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[0]" $x // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[0]" $x
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[1]" $y // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[1]" $y
// @count "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[*]" 2 // @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[*]" 2
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields_stripped" false // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields_stripped" false

View File

@ -6,6 +6,6 @@ pub struct Demo {
// @set x = "$.index[*][?(@.name=='x')].id" // @set x = "$.index[*][?(@.name=='x')].id"
// @!has "$.index[*][?(@.name=='y')].id" // @!has "$.index[*][?(@.name=='y')].id"
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[0]" $x // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[0]" $x
// @count "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[*]" 1 // @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[*]" 1
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields_stripped" true // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields_stripped" true

View File

@ -1,5 +1,5 @@
// @is "$.index[*][?(@.name=='PlainEmpty')].visibility" \"public\" // @is "$.index[*][?(@.name=='PlainEmpty')].visibility" \"public\"
// @is "$.index[*][?(@.name=='PlainEmpty')].kind" \"struct\" // @has "$.index[*][?(@.name=='PlainEmpty')].inner.struct"
// @is "$.index[*][?(@.name=='PlainEmpty')].inner.kind.plain.fields_stripped" false // @is "$.index[*][?(@.name=='PlainEmpty')].inner.struct.kind.plain.fields_stripped" false
// @is "$.index[*][?(@.name=='PlainEmpty')].inner.kind.plain.fields" [] // @is "$.index[*][?(@.name=='PlainEmpty')].inner.struct.kind.plain.fields" []
pub struct PlainEmpty {} pub struct PlainEmpty {}

View File

@ -4,6 +4,6 @@ pub struct Demo {
} }
// @set x = "$.index[*][?(@.name=='x')].id" // @set x = "$.index[*][?(@.name=='x')].id"
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[0]" $x // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[0]" $x
// @count "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[*]" 1 // @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[*]" 1
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields_stripped" true // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields_stripped" true

View File

@ -1,4 +1,4 @@
// @is "$.index[*][?(@.name=='Tuple')].visibility" \"public\" // @is "$.index[*][?(@.name=='Tuple')].visibility" \"public\"
// @is "$.index[*][?(@.name=='Tuple')].kind" \"struct\" // @has "$.index[*][?(@.name=='Tuple')].inner.struct"
// @is "$.index[*][?(@.name=='Tuple')].inner.kind.tuple" '[null, null]' // @is "$.index[*][?(@.name=='Tuple')].inner.struct.kind.tuple" '[null, null]'
pub struct Tuple(u32, String); pub struct Tuple(u32, String);

View File

@ -1,2 +1,2 @@
// @is "$.index[*][?(@.name=='TupleUnit')].inner.kind.tuple" [] // @is "$.index[*][?(@.name=='TupleUnit')].inner.struct.kind.tuple" []
pub struct TupleUnit(); pub struct TupleUnit();

View File

@ -7,7 +7,7 @@ pub struct Demo(
// @set field = "$.index[*][?(@.docs=='field')].id" // @set field = "$.index[*][?(@.docs=='field')].id"
// @is "$.index[*][?(@.name=='Demo')].inner.kind.tuple[0]" null // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[0]" null
// @is "$.index[*][?(@.name=='Demo')].inner.kind.tuple[1]" $field // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[1]" $field
// @is "$.index[*][?(@.name=='Demo')].inner.kind.tuple[2]" null // @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[2]" null
// @count "$.index[*][?(@.name=='Demo')].inner.kind.tuple[*]" 3 // @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[*]" 3

View File

@ -1,4 +1,4 @@
// @is "$.index[*][?(@.name=='Unit')].visibility" \"public\" // @is "$.index[*][?(@.name=='Unit')].visibility" \"public\"
// @is "$.index[*][?(@.name=='Unit')].kind" \"struct\" // @has "$.index[*][?(@.name=='Unit')].inner.struct"
// @is "$.index[*][?(@.name=='Unit')].inner.kind" \"unit\" // @is "$.index[*][?(@.name=='Unit')].inner.struct.kind" \"unit\"
pub struct Unit; pub struct Unit;

View File

@ -1,13 +1,13 @@
use std::collections::HashMap; use std::collections::HashMap;
// @is "$.index[*][?(@.name=='WithGenerics')].visibility" \"public\" // @is "$.index[*][?(@.name=='WithGenerics')].visibility" \"public\"
// @is "$.index[*][?(@.name=='WithGenerics')].kind" \"struct\" // @has "$.index[*][?(@.name=='WithGenerics')].inner.struct"
// @is "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[0].name" \"T\" // @is "$.index[*][?(@.name=='WithGenerics')].inner.struct.generics.params[0].name" \"T\"
// @is "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[0].kind.type.bounds" [] // @is "$.index[*][?(@.name=='WithGenerics')].inner.struct.generics.params[0].kind.type.bounds" []
// @is "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[1].name" \"U\" // @is "$.index[*][?(@.name=='WithGenerics')].inner.struct.generics.params[1].name" \"U\"
// @is "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[1].kind.type.bounds" [] // @is "$.index[*][?(@.name=='WithGenerics')].inner.struct.generics.params[1].kind.type.bounds" []
// @is "$.index[*][?(@.name=='WithGenerics')].inner.kind.plain.fields_stripped" true // @is "$.index[*][?(@.name=='WithGenerics')].inner.struct.kind.plain.fields_stripped" true
// @is "$.index[*][?(@.name=='WithGenerics')].inner.kind.plain.fields" [] // @is "$.index[*][?(@.name=='WithGenerics')].inner.struct.kind.plain.fields" []
pub struct WithGenerics<T, U> { pub struct WithGenerics<T, U> {
stuff: Vec<T>, stuff: Vec<T>,
things: HashMap<U, U>, things: HashMap<U, U>,

View File

@ -1,9 +1,11 @@
// ignore-tidy-linelength
// @is "$.index[*][?(@.name=='WithPrimitives')].visibility" \"public\" // @is "$.index[*][?(@.name=='WithPrimitives')].visibility" \"public\"
// @is "$.index[*][?(@.name=='WithPrimitives')].kind" \"struct\" // @has "$.index[*][?(@.name=='WithPrimitives')].inner.struct"
// @is "$.index[*][?(@.name=='WithPrimitives')].inner.generics.params[0].name" \"\'a\" // @is "$.index[*][?(@.name=='WithPrimitives')].inner.struct.generics.params[0].name" \"\'a\"
// @is "$.index[*][?(@.name=='WithPrimitives')].inner.generics.params[0].kind.lifetime.outlives" [] // @is "$.index[*][?(@.name=='WithPrimitives')].inner.struct.generics.params[0].kind.lifetime.outlives" []
// @is "$.index[*][?(@.name=='WithPrimitives')].inner.kind.plain.fields_stripped" true // @is "$.index[*][?(@.name=='WithPrimitives')].inner.struct.kind.plain.fields_stripped" true
// @is "$.index[*][?(@.name=='WithPrimitives')].inner.kind.plain.fields" [] // @is "$.index[*][?(@.name=='WithPrimitives')].inner.struct.kind.plain.fields" []
pub struct WithPrimitives<'a> { pub struct WithPrimitives<'a> {
num: u32, num: u32,
s: &'a str, s: &'a str,

View File

@ -1,21 +1,21 @@
// @has "$.index[*][?(@.name=='Foo')]" // @has "$.index[*][?(@.name=='Foo')]"
pub trait Foo { pub trait Foo {
// @is "$.index[*][?(@.name=='no_self')].inner.has_body" false // @is "$.index[*][?(@.name=='no_self')].inner.function.has_body" false
fn no_self(); fn no_self();
// @is "$.index[*][?(@.name=='move_self')].inner.has_body" false // @is "$.index[*][?(@.name=='move_self')].inner.function.has_body" false
fn move_self(self); fn move_self(self);
// @is "$.index[*][?(@.name=='ref_self')].inner.has_body" false // @is "$.index[*][?(@.name=='ref_self')].inner.function.has_body" false
fn ref_self(&self); fn ref_self(&self);
// @is "$.index[*][?(@.name=='no_self_def')].inner.has_body" true // @is "$.index[*][?(@.name=='no_self_def')].inner.function.has_body" true
fn no_self_def() {} fn no_self_def() {}
// @is "$.index[*][?(@.name=='move_self_def')].inner.has_body" true // @is "$.index[*][?(@.name=='move_self_def')].inner.function.has_body" true
fn move_self_def(self) {} fn move_self_def(self) {}
// @is "$.index[*][?(@.name=='ref_self_def')].inner.has_body" true // @is "$.index[*][?(@.name=='ref_self_def')].inner.function.has_body" true
fn ref_self_def(&self) {} fn ref_self_def(&self) {}
} }
pub trait Bar: Clone { pub trait Bar: Clone {
// @is "$.index[*][?(@.name=='method')].inner.has_body" false // @is "$.index[*][?(@.name=='method')].inner.function.has_body" false
fn method(&self, param: usize); fn method(&self, param: usize);
} }

View File

@ -2,18 +2,18 @@
#![no_core] #![no_core]
// @set wham = "$.index[*][?(@.name=='Wham')].id" // @set wham = "$.index[*][?(@.name=='Wham')].id"
// @count "$.index[*][?(@.name=='Wham')].inner.implementations[*]" 1 // @count "$.index[*][?(@.name=='Wham')].inner.trait.implementations[*]" 1
// @set gmWham = "$.index[*][?(@.name=='Wham')].inner.implementations[0]" // @set gmWham = "$.index[*][?(@.name=='Wham')].inner.trait.implementations[0]"
pub trait Wham {} pub trait Wham {}
// @count "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[*]" 1 // @count "$.index[*][?(@.name=='GeorgeMichael')].inner.struct.impls[*]" 1
// @is "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[0]" $gmWham // @is "$.index[*][?(@.name=='GeorgeMichael')].inner.struct.impls[0]" $gmWham
// @set gm = "$.index[*][?(@.name=='Wham')].id" // @set gm = "$.index[*][?(@.name=='Wham')].id"
// jsonpath_lib isnt expressive enough (for now) to get the "impl" item, so we // jsonpath_lib isnt expressive enough (for now) to get the "impl" item, so we
// just check it isn't pointing to the type, but when you port to jsondocck-ng // just check it isn't pointing to the type, but when you port to jsondocck-ng
// check what the impl item is // check what the impl item is
// @!is "$.index[*][?(@.name=='Wham')].inner.implementations[0]" $gm // @!is "$.index[*][?(@.name=='Wham')].inner.trait.implementations[0]" $gm
pub struct GeorgeMichael {} pub struct GeorgeMichael {}
impl Wham for GeorgeMichael {} impl Wham for GeorgeMichael {}

View File

@ -8,19 +8,19 @@
pub trait Loud {} pub trait Loud {}
// @set very_loud_id = "$.index[*][?(@.name=='VeryLoud')].id" // @set very_loud_id = "$.index[*][?(@.name=='VeryLoud')].id"
// @count "$.index[*][?(@.name=='VeryLoud')].inner.bounds[*]" 1 // @count "$.index[*][?(@.name=='VeryLoud')].inner.trait.bounds[*]" 1
// @is "$.index[*][?(@.name=='VeryLoud')].inner.bounds[0].trait_bound.trait.id" $loud_id // @is "$.index[*][?(@.name=='VeryLoud')].inner.trait.bounds[0].trait_bound.trait.id" $loud_id
pub trait VeryLoud: Loud {} pub trait VeryLoud: Loud {}
// @set sounds_good_id = "$.index[*][?(@.name=='SoundsGood')].id" // @set sounds_good_id = "$.index[*][?(@.name=='SoundsGood')].id"
pub trait SoundsGood {} pub trait SoundsGood {}
// @count "$.index[*][?(@.name=='MetalBand')].inner.bounds[*]" 2 // @count "$.index[*][?(@.name=='MetalBand')].inner.trait.bounds[*]" 2
// @is "$.index[*][?(@.name=='MetalBand')].inner.bounds[0].trait_bound.trait.id" $very_loud_id // @is "$.index[*][?(@.name=='MetalBand')].inner.trait.bounds[0].trait_bound.trait.id" $very_loud_id
// @is "$.index[*][?(@.name=='MetalBand')].inner.bounds[1].trait_bound.trait.id" $sounds_good_id // @is "$.index[*][?(@.name=='MetalBand')].inner.trait.bounds[1].trait_bound.trait.id" $sounds_good_id
pub trait MetalBand: VeryLoud + SoundsGood {} pub trait MetalBand: VeryLoud + SoundsGood {}
// @count "$.index[*][?(@.name=='DnabLatem')].inner.bounds[*]" 2 // @count "$.index[*][?(@.name=='DnabLatem')].inner.trait.bounds[*]" 2
// @is "$.index[*][?(@.name=='DnabLatem')].inner.bounds[1].trait_bound.trait.id" $very_loud_id // @is "$.index[*][?(@.name=='DnabLatem')].inner.trait.bounds[1].trait_bound.trait.id" $very_loud_id
// @is "$.index[*][?(@.name=='DnabLatem')].inner.bounds[0].trait_bound.trait.id" $sounds_good_id // @is "$.index[*][?(@.name=='DnabLatem')].inner.trait.bounds[0].trait_bound.trait.id" $sounds_good_id
pub trait DnabLatem: SoundsGood + VeryLoud {} pub trait DnabLatem: SoundsGood + VeryLoud {}

View File

@ -4,24 +4,24 @@
#![feature(trait_alias)] #![feature(trait_alias)]
// @set Orig = "$.index[*][?(@.name == 'Orig')].id" // @set Orig = "$.index[*][?(@.name == 'Orig')].id"
// @is "$.index[*][?(@.name == 'Orig')].kind" '"trait"' // @has "$.index[*][?(@.name == 'Orig')].inner.trait"
pub trait Orig<T> {} pub trait Orig<T> {}
// @set Alias = "$.index[*][?(@.name == 'Alias')].id" // @set Alias = "$.index[*][?(@.name == 'Alias')].id"
// @is "$.index[*][?(@.name == 'Alias')].kind" '"trait_alias"' // @has "$.index[*][?(@.name == 'Alias')].inner.trait_alias"
// @is "$.index[*][?(@.name == 'Alias')].inner.generics" '{"params": [], "where_predicates": []}' // @is "$.index[*][?(@.name == 'Alias')].inner.trait_alias.generics" '{"params": [], "where_predicates": []}'
// @count "$.index[*][?(@.name == 'Alias')].inner.params[*]" 1 // @count "$.index[*][?(@.name == 'Alias')].inner.trait_alias.params[*]" 1
// @is "$.index[*][?(@.name == 'Alias')].inner.params[0].trait_bound.trait.id" $Orig // @is "$.index[*][?(@.name == 'Alias')].inner.trait_alias.params[0].trait_bound.trait.id" $Orig
// @is "$.index[*][?(@.name == 'Alias')].inner.params[0].trait_bound.trait.args.angle_bracketed.args[0].type.inner" '"i32"' // @is "$.index[*][?(@.name == 'Alias')].inner.trait_alias.params[0].trait_bound.trait.args.angle_bracketed.args[0].type.primitive" '"i32"'
pub trait Alias = Orig<i32>; pub trait Alias = Orig<i32>;
pub struct Struct; pub struct Struct;
impl Orig<i32> for Struct {} impl Orig<i32> for Struct {}
// @is "$.index[*][?(@.name=='takes_alias')].inner.decl.inputs[0][1].kind" '"impl_trait"' // @has "$.index[*][?(@.name=='takes_alias')].inner.function.decl.inputs[0][1].impl_trait"
// @is "$.index[*][?(@.name=='takes_alias')].inner.decl.inputs[0][1].inner[0].trait_bound.trait.id" $Alias // @is "$.index[*][?(@.name=='takes_alias')].inner.function.decl.inputs[0][1].impl_trait[0].trait_bound.trait.id" $Alias
// @is "$.index[*][?(@.name=='takes_alias')].inner.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $Alias // @is "$.index[*][?(@.name=='takes_alias')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $Alias
pub fn takes_alias(_: impl Alias) {} pub fn takes_alias(_: impl Alias) {}
// FIXME: Should the trait be mentioned in both the decl and generics? // FIXME: Should the trait be mentioned in both the decl and generics?

View File

@ -1,46 +1,46 @@
// ignore-tidy-linelength // ignore-tidy-linelength
use std::fmt::Debug; use std::fmt::Debug;
// @count "$.index[*][?(@.name=='dyn')].inner.items[*]" 3 // @count "$.index[*][?(@.name=='dyn')].inner.module.items[*]" 3
// @set sync_int_gen = "$.index[*][?(@.name=='SyncIntGen')].id" // @set sync_int_gen = "$.index[*][?(@.name=='SyncIntGen')].id"
// @set ref_fn = "$.index[*][?(@.name=='RefFn')].id" // @set ref_fn = "$.index[*][?(@.name=='RefFn')].id"
// @set weird_order = "$.index[*][?(@.name=='WeirdOrder')].id" // @set weird_order = "$.index[*][?(@.name=='WeirdOrder')].id"
// @ismany "$.index[*][?(@.name=='dyn')].inner.items[*]" $sync_int_gen $ref_fn $weird_order // @ismany "$.index[*][?(@.name=='dyn')].inner.module.items[*]" $sync_int_gen $ref_fn $weird_order
// @is "$.index[*][?(@.name=='SyncIntGen')].kind" \"typedef\" // @has "$.index[*][?(@.name=='SyncIntGen')].inner.typedef"
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.generics" '{"params": [], "where_predicates": []}' // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.generics" '{"params": [], "where_predicates": []}'
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.kind" \"resolved_path\" // @has "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path"
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.name" \"Box\" // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.name" \"Box\"
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.bindings" [] // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.bindings" []
// @count "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args" 1 // @count "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args" 1
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"dyn_trait\" // @has "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait"
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.lifetime" \"\'static\" // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.lifetime" \"\'static\"
// @count "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[*]" 3 // @count "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[*]" 3
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[0].generic_params" [] // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[0].generic_params" []
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[1].generic_params" [] // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[1].generic_params" []
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[2].generic_params" [] // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[2].generic_params" []
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[0].trait.name" '"Fn"' // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[0].trait.name" '"Fn"'
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[1].trait.name" '"Send"' // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[1].trait.name" '"Send"'
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[2].trait.name" '"Sync"' // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[2].trait.name" '"Sync"'
// @is "$.index[*][?(@.name=='SyncIntGen')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[0].trait.args" '{"parenthesized": {"inputs": [],"output": {"inner": "i32","kind": "primitive"}}}' // @is "$.index[*][?(@.name=='SyncIntGen')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[0].trait.args" '{"parenthesized": {"inputs": [],"output": {"primitive": "i32"}}}'
pub type SyncIntGen = Box<dyn Fn() -> i32 + Send + Sync + 'static>; pub type SyncIntGen = Box<dyn Fn() -> i32 + Send + Sync + 'static>;
// @is "$.index[*][?(@.name=='RefFn')].kind" \"typedef\" // @has "$.index[*][?(@.name=='RefFn')].inner.typedef"
// @is "$.index[*][?(@.name=='RefFn')].inner.generics" '{"params": [{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"}],"where_predicates": []}' // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.generics" '{"params": [{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"}],"where_predicates": []}'
// @is "$.index[*][?(@.name=='RefFn')].inner.type.kind" '"borrowed_ref"' // @has "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref"
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.mutable" 'false' // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.mutable" 'false'
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.lifetime" "\"'a\"" // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.lifetime" "\"'a\""
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.kind" '"dyn_trait"' // @has "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait"
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.lifetime" null // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.lifetime" null
// @count "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[*]" 1 // @count "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[*]" 1
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[0].generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]' // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[0].generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]'
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[0].trait.name" '"Fn"' // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[0].trait.name" '"Fn"'
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[0].trait.args.parenthesized.inputs[0].kind" '"borrowed_ref"' // @has "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[0].trait.args.parenthesized.inputs[0].borrowed_ref"
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[0].trait.args.parenthesized.inputs[0].inner.lifetime" "\"'b\"" // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[0].trait.args.parenthesized.inputs[0].borrowed_ref.lifetime" "\"'b\""
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[0].trait.args.parenthesized.output.kind" '"borrowed_ref"' // @has "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[0].trait.args.parenthesized.output.borrowed_ref"
// @is "$.index[*][?(@.name=='RefFn')].inner.type.inner.type.inner.traits[0].trait.args.parenthesized.output.inner.lifetime" "\"'b\"" // @is "$.index[*][?(@.name=='RefFn')].inner.typedef.type.borrowed_ref.type.dyn_trait.traits[0].trait.args.parenthesized.output.borrowed_ref.lifetime" "\"'b\""
pub type RefFn<'a> = &'a dyn for<'b> Fn(&'b i32) -> &'b i32; pub type RefFn<'a> = &'a dyn for<'b> Fn(&'b i32) -> &'b i32;
// @is "$.index[*][?(@.name=='WeirdOrder')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[0].trait.name" '"Send"' // @is "$.index[*][?(@.name=='WeirdOrder')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[0].trait.name" '"Send"'
// @is "$.index[*][?(@.name=='WeirdOrder')].inner.type.inner.args.angle_bracketed.args[0].type.inner.traits[1].trait.name" '"Debug"' // @is "$.index[*][?(@.name=='WeirdOrder')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.dyn_trait.traits[1].trait.name" '"Debug"'
pub type WeirdOrder = Box<dyn Send + Debug>; pub type WeirdOrder = Box<dyn Send + Debug>;

View File

@ -6,5 +6,4 @@ extern {
} }
// @is "$.index[*][?(@.docs=='No inner information')].name" '"Foo"' // @is "$.index[*][?(@.docs=='No inner information')].name" '"Foo"'
// @is "$.index[*][?(@.docs=='No inner information')].kind" '"foreign_type"' // @is "$.index[*][?(@.docs=='No inner information')].inner" \"foreign_type\"
// @!has "$.index[*][?(@.docs=='No inner information')].inner"

View File

@ -1,27 +1,26 @@
// ignore-tidy-linelength // ignore-tidy-linelength
// @is "$.index[*][?(@.name=='GenericFn')].kind" \"typedef\" // @has "$.index[*][?(@.name=='GenericFn')].inner.typedef"
// @ismany "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*].name" \"\'a\" // @ismany "$.index[*][?(@.name=='GenericFn')].inner.typedef.generics.params[*].name" \"\'a\"
// @has "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*].kind.lifetime" // @has "$.index[*][?(@.name=='GenericFn')].inner.typedef.generics.params[*].kind.lifetime"
// @count "$.index[*][?(@.name=='GenericFn')].inner.generics.params[*].kind.lifetime.outlives[*]" 0 // @count "$.index[*][?(@.name=='GenericFn')].inner.typedef.generics.params[*].kind.lifetime.outlives[*]" 0
// @count "$.index[*][?(@.name=='GenericFn')].inner.generics.where_predicates[*]" 0 // @count "$.index[*][?(@.name=='GenericFn')].inner.typedef.generics.where_predicates[*]" 0
// @is "$.index[*][?(@.name=='GenericFn')].inner.type.kind" \"function_pointer\" // @count "$.index[*][?(@.name=='GenericFn')].inner.typedef.type.function_pointer.generic_params[*]" 0
// @count "$.index[*][?(@.name=='GenericFn')].inner.type.inner.generic_params[*]" 0 // @count "$.index[*][?(@.name=='GenericFn')].inner.typedef.type.function_pointer.decl.inputs[*]" 1
// @count "$.index[*][?(@.name=='GenericFn')].inner.type.inner.decl.inputs[*]" 1 // @is "$.index[*][?(@.name=='GenericFn')].inner.typedef.type.function_pointer.decl.inputs[*][1].borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='GenericFn')].inner.type.inner.decl.inputs[*][1].inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='GenericFn')].inner.typedef.type.function_pointer.decl.output.borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='GenericFn')].inner.type.inner.decl.output.inner.lifetime" \"\'a\"
pub type GenericFn<'a> = fn(&'a i32) -> &'a i32; pub type GenericFn<'a> = fn(&'a i32) -> &'a i32;
// @is "$.index[*][?(@.name=='ForAll')].kind" \"typedef\" // @has "$.index[*][?(@.name=='ForAll')].inner.typedef"
// @count "$.index[*][?(@.name=='ForAll')].inner.generics.params[*]" 0 // @count "$.index[*][?(@.name=='ForAll')].inner.typedef.generics.params[*]" 0
// @count "$.index[*][?(@.name=='ForAll')].inner.generics.where_predicates[*]" 0 // @count "$.index[*][?(@.name=='ForAll')].inner.typedef.generics.where_predicates[*]" 0
// @count "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*]" 1 // @count "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.generic_params[*]" 1
// @is "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*].name" \"\'a\" // @is "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.generic_params[*].name" \"\'a\"
// @has "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*].kind.lifetime" // @has "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.generic_params[*].kind.lifetime"
// @count "$.index[*][?(@.name=='ForAll')].inner.type.inner.generic_params[*].kind.lifetime.outlives[*]" 0 // @count "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.generic_params[*].kind.lifetime.outlives[*]" 0
// @count "$.index[*][?(@.name=='ForAll')].inner.type.inner.decl.inputs[*]" 1 // @count "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.decl.inputs[*]" 1
// @is "$.index[*][?(@.name=='ForAll')].inner.type.inner.decl.inputs[*][1].inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.decl.inputs[*][1].borrowed_ref.lifetime" \"\'a\"
// @is "$.index[*][?(@.name=='ForAll')].inner.type.inner.decl.output.inner.lifetime" \"\'a\" // @is "$.index[*][?(@.name=='ForAll')].inner.typedef.type.function_pointer.decl.output.borrowed_ref.lifetime" \"\'a\"
pub type ForAll = for<'a> fn(&'a i32) -> &'a i32; pub type ForAll = for<'a> fn(&'a i32) -> &'a i32;

View File

@ -9,25 +9,25 @@ pub enum Result<T, E> {
// @set my_error = "$.index[*][?(@.name=='MyError')].id" // @set my_error = "$.index[*][?(@.name=='MyError')].id"
pub struct MyError {} pub struct MyError {}
// @is "$.index[*][?(@.name=='MyResult')].kind" \"typedef\" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef"
// @count "$.index[*][?(@.name=='MyResult')].inner.generics.where_predicates[*]" 0 // @count "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.where_predicates[*]" 0
// @count "$.index[*][?(@.name=='MyResult')].inner.generics.params[*]" 2 // @count "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[*]" 2
// @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].name" \"T\" // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[0].name" \"T\"
// @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].name" \"E\" // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[1].name" \"E\"
// @has "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[0].kind.type"
// @has "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[1].kind.type"
// @count "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.bounds[*]" 0 // @count "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[0].kind.type.bounds[*]" 0
// @count "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.bounds[*]" 0 // @count "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[1].kind.type.bounds[*]" 0
// @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.default" null // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[0].kind.type.default" null
// @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.kind" \"resolved_path\" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[1].kind.type.default.resolved_path"
// @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.id" $my_error // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[1].kind.type.default.resolved_path.id" $my_error
// @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.name" \"MyError\" // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.generics.params[1].kind.type.default.resolved_path.name" \"MyError\"
// @is "$.index[*][?(@.name=='MyResult')].inner.type.kind" \"resolved_path\" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path"
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.id" $result // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.id" $result
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.name" \"Result\" // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.name" \"Result\"
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.bindings" [] // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.args.angle_bracketed.bindings" []
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"generic\" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.generic"
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.kind" \"generic\" // @has "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.args.angle_bracketed.args[1].type.generic"
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.inner" \"T\" // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.args.angle_bracketed.args[0].type.generic" \"T\"
// @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.inner" \"E\" // @is "$.index[*][?(@.name=='MyResult')].inner.typedef.type.resolved_path.args.angle_bracketed.args[1].type.generic" \"E\"
pub type MyResult<T, E = MyError> = Result<T, E>; pub type MyResult<T, E = MyError> = Result<T, E>;

View File

@ -1,7 +1,7 @@
// ignore-tidy-linelength // ignore-tidy-linelength
// @is "$.index[*][?(@.name=='genfn')].inner.generics.where_predicates[0].bound_predicate.type" '{"inner": "F","kind": "generic"}' // @is "$.index[*][?(@.name=='genfn')].inner.function.generics.where_predicates[0].bound_predicate.type" '{"generic": "F"}'
// @is "$.index[*][?(@.name=='genfn')].inner.generics.where_predicates[0].bound_predicate.generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"},{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]' // @is "$.index[*][?(@.name=='genfn')].inner.function.generics.where_predicates[0].bound_predicate.generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"},{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]'
pub fn genfn<F>(f: F) pub fn genfn<F>(f: F)
where where
for<'a, 'b> F: Fn(&'a i32, &'b i32), for<'a, 'b> F: Fn(&'a i32, &'b i32),
@ -10,14 +10,12 @@ where
f(&zero, &zero); f(&zero, &zero);
} }
// @is "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}' // @is "$.index[*][?(@.name=='dynfn')].inner.function.generics" '{"params": [], "where_predicates": []}'
// @is "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}' // @is "$.index[*][?(@.name=='dynfn')].inner.function.generics" '{"params": [], "where_predicates": []}'
// @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='dynfn')].inner.function.decl.inputs[0][1].borrowed_ref.type.dyn_trait.lifetime" null
// @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.kind" '"dyn_trait"' // @count "$.index[*][?(@.name=='dynfn')].inner.function.decl.inputs[0][1].borrowed_ref.type.dyn_trait.traits[*]" 1
// @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.lifetime" null // @is "$.index[*][?(@.name=='dynfn')].inner.function.decl.inputs[0][1].borrowed_ref.type.dyn_trait.traits[0].generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"},{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]'
// @count "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.traits[*]" 1 // @is "$.index[*][?(@.name=='dynfn')].inner.function.decl.inputs[0][1].borrowed_ref.type.dyn_trait.traits[0].trait.name" '"Fn"'
// @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.traits[0].generic_params" '[{"kind": {"lifetime": {"outlives": []}},"name": "'\''a"},{"kind": {"lifetime": {"outlives": []}},"name": "'\''b"}]'
// @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.traits[0].trait.name" '"Fn"'
pub fn dynfn(f: &dyn for<'a, 'b> Fn(&'a i32, &'b i32)) { pub fn dynfn(f: &dyn for<'a, 'b> Fn(&'a i32, &'b i32)) {
let zero = 0; let zero = 0;
f(&zero, &zero); f(&zero, &zero);

View File

@ -12,11 +12,9 @@ pub struct Owner;
pub fn create() -> Owner::Metadata { pub fn create() -> Owner::Metadata {
OwnerMetadata OwnerMetadata
} }
// @is '$.index[*][?(@.name=="create")].inner.decl.output.kind' '"qualified_path"' // @is '$.index[*][?(@.name=="create")].inner.function.decl.output.qualified_path.name' '"Metadata"'
// @is '$.index[*][?(@.name=="create")].inner.decl.output.inner.name' '"Metadata"' // @is '$.index[*][?(@.name=="create")].inner.function.decl.output.qualified_path.trait' null
// @is '$.index[*][?(@.name=="create")].inner.decl.output.inner.trait' null // @is '$.index[*][?(@.name=="create")].inner.function.decl.output.qualified_path.self_type.resolved_path.id' $Owner
// @is '$.index[*][?(@.name=="create")].inner.decl.output.inner.self_type.kind' '"resolved_path"'
// @is '$.index[*][?(@.name=="create")].inner.decl.output.inner.self_type.inner.id' $Owner
/// impl /// impl
impl Owner { impl Owner {
@ -24,6 +22,5 @@ impl Owner {
pub type Metadata = OwnerMetadata; pub type Metadata = OwnerMetadata;
} }
// @set iat = '$.index[*][?(@.docs=="iat")].id' // @set iat = '$.index[*][?(@.docs=="iat")].id'
// @is '$.index[*][?(@.docs=="impl")].inner.items[*]' $iat // @is '$.index[*][?(@.docs=="impl")].inner.impl.items[*]' $iat
// @is '$.index[*][?(@.docs=="iat")].kind' '"assoc_type"' // @is '$.index[*][?(@.docs=="iat")].inner.assoc_type.default.resolved_path.id' $OwnerMetadata
// @is '$.index[*][?(@.docs=="iat")].inner.default.inner.id' $OwnerMetadata

View File

@ -5,14 +5,12 @@
// @set Carrier = '$.index[*][?(@.name=="Carrier")].id' // @set Carrier = '$.index[*][?(@.name=="Carrier")].id'
pub struct Carrier<'a>(&'a ()); pub struct Carrier<'a>(&'a ());
// @is '$.index[*][?(@.name=="User")].inner.type.kind' '"function_pointer"' // @is '$.index[*][?(@.name=="User")].inner.typedef.type.function_pointer.generic_params[*].name' \""'b"\"
// @is '$.index[*][?(@.name=="User")].inner.type.inner.generic_params[*].name' \""'b"\" // @is '$.index[*][?(@.name=="User")].inner.typedef.type.function_pointer.decl.inputs[0][1].qualified_path.self_type.resolved_path.id' $Carrier
// @is '$.index[*][?(@.name=="User")].inner.type.inner.decl.inputs[0][1].kind' '"qualified_path"' // @is '$.index[*][?(@.name=="User")].inner.typedef.type.function_pointer.decl.inputs[0][1].qualified_path.self_type.resolved_path.args.angle_bracketed.args[0].lifetime' \""'b"\"
// @is '$.index[*][?(@.name=="User")].inner.type.inner.decl.inputs[0][1].inner.self_type.inner.id' $Carrier // @is '$.index[*][?(@.name=="User")].inner.typedef.type.function_pointer.decl.inputs[0][1].qualified_path.name' '"Focus"'
// @is '$.index[*][?(@.name=="User")].inner.type.inner.decl.inputs[0][1].inner.self_type.inner.args.angle_bracketed.args[0].lifetime' \""'b"\" // @is '$.index[*][?(@.name=="User")].inner.typedef.type.function_pointer.decl.inputs[0][1].qualified_path.trait' null
// @is '$.index[*][?(@.name=="User")].inner.type.inner.decl.inputs[0][1].inner.name' '"Focus"' // @is '$.index[*][?(@.name=="User")].inner.typedef.type.function_pointer.decl.inputs[0][1].qualified_path.args.angle_bracketed.args[0].type.primitive' '"i32"'
// @is '$.index[*][?(@.name=="User")].inner.type.inner.decl.inputs[0][1].inner.trait' null
// @is '$.index[*][?(@.name=="User")].inner.type.inner.decl.inputs[0][1].inner.args.angle_bracketed.args[0].type.inner' '"i32"'
pub type User = for<'b> fn(Carrier<'b>::Focus<i32>); pub type User = for<'b> fn(Carrier<'b>::Focus<i32>);

View File

@ -5,11 +5,10 @@
// @set Parametrized = '$.index[*][?(@.name=="Parametrized")].id' // @set Parametrized = '$.index[*][?(@.name=="Parametrized")].id'
pub struct Parametrized<T>(T); pub struct Parametrized<T>(T);
// @is '$.index[*][?(@.name=="Test")].inner.type.kind' '"qualified_path"' // @is '$.index[*][?(@.name=="Test")].inner.typedef.type.qualified_path.self_type.resolved_path.id' $Parametrized
// @is '$.index[*][?(@.name=="Test")].inner.type.inner.self_type.inner.id' $Parametrized // @is '$.index[*][?(@.name=="Test")].inner.typedef.type.qualified_path.self_type.resolved_path.args.angle_bracketed.args[0].type.primitive' \"i32\"
// @is '$.index[*][?(@.name=="Test")].inner.type.inner.self_type.inner.args.angle_bracketed.args[0].type' '{"inner": "i32", "kind": "primitive"}' // @is '$.index[*][?(@.name=="Test")].inner.typedef.type.qualified_path.name' '"Proj"'
// @is '$.index[*][?(@.name=="Test")].inner.type.inner.name' '"Proj"' // @is '$.index[*][?(@.name=="Test")].inner.typedef.type.qualified_path.trait' null
// @is '$.index[*][?(@.name=="Test")].inner.type.inner.trait' null
pub type Test = Parametrized<i32>::Proj; pub type Test = Parametrized<i32>::Proj;
/// param_bool /// param_bool
@ -29,5 +28,5 @@ impl Parametrized<i32> {
// @set param_bool_proj = '$.index[*][?(@.docs=="param_bool_proj")].id' // @set param_bool_proj = '$.index[*][?(@.docs=="param_bool_proj")].id'
// @set param_i32_proj = '$.index[*][?(@.docs=="param_i32_proj")].id' // @set param_i32_proj = '$.index[*][?(@.docs=="param_i32_proj")].id'
// @is '$.index[*][?(@.docs=="param_bool")].inner.items[*]' $param_bool_proj // @is '$.index[*][?(@.docs=="param_bool")].inner.impl.items[*]' $param_bool_proj
// @is '$.index[*][?(@.docs=="param_i32")].inner.items[*]' $param_i32_proj // @is '$.index[*][?(@.docs=="param_i32")].inner.impl.items[*]' $param_i32_proj

View File

@ -1,15 +1,15 @@
#![no_std] #![no_std]
// @is "$.index[*][?(@.name=='Ux')].visibility" \"public\" // @is "$.index[*][?(@.name=='Ux')].visibility" \"public\"
// @is "$.index[*][?(@.name=='Ux')].kind" \"union\" // @has "$.index[*][?(@.name=='Ux')].inner.union"
pub union Ux { pub union Ux {
a: u32, a: u32,
b: u64 b: u64
} }
// @is "$.index[*][?(@.name=='Num')].visibility" \"public\" // @is "$.index[*][?(@.name=='Num')].visibility" \"public\"
// @is "$.index[*][?(@.name=='Num')].kind" \"trait\" // @has "$.index[*][?(@.name=='Num')].inner.trait"
pub trait Num {} pub trait Num {}
// @count "$.index[*][?(@.name=='Ux')].inner.impls" 1 // @count "$.index[*][?(@.name=='Ux')].inner.union.impls" 1
impl Num for Ux {} impl Num for Ux {}

View File

@ -1,6 +1,6 @@
// @has "$.index[*][?(@.name=='Union')].visibility" \"public\" // @has "$.index[*][?(@.name=='Union')].visibility" \"public\"
// @has "$.index[*][?(@.name=='Union')].kind" \"union\" // @has "$.index[*][?(@.name=='Union')].inner.union"
// @!has "$.index[*][?(@.name=='Union')].inner.struct_type" // @!has "$.index[*][?(@.name=='Union')].inner.union.struct_type"
// @set Union = "$.index[*][?(@.name=='Union')].id" // @set Union = "$.index[*][?(@.name=='Union')].id"
pub union Union { pub union Union {
int: i32, int: i32,
@ -8,8 +8,8 @@ pub union Union {
} }
// @is "$.index[*][?(@.name=='make_int_union')].inner.decl.output.kind" '"resolved_path"' // @has "$.index[*][?(@.name=='make_int_union')].inner.function.decl.output.resolved_path"
// @is "$.index[*][?(@.name=='make_int_union')].inner.decl.output.inner.id" $Union // @is "$.index[*][?(@.name=='make_int_union')].inner.function.decl.output.resolved_path.id" $Union
pub fn make_int_union(int: i32) -> Union { pub fn make_int_union(int: i32) -> Union {
Union { int } Union { int }
} }