1
Fork 0

Update rustdoc-json test files

This commit is contained in:
Guillaume Gomez 2022-08-17 12:55:09 +02:00
parent 57c85bd97d
commit d3d9e223e2
60 changed files with 552 additions and 567 deletions

View file

@ -1,29 +1,27 @@
#![no_std] #![no_std]
// @has assoc_items.json
pub struct Simple; pub struct Simple;
impl Simple { impl Simple {
// @has - "$.index[*][?(@.name=='CONSTANT')].kind" \"assoc_const\" // @has "$.index[*][?(@.name=='CONSTANT')].kind" \"assoc_const\"
pub const CONSTANT: usize = 0; pub const CONSTANT: usize = 0;
} }
pub trait EasyToImpl { pub trait EasyToImpl {
// @has - "$.index[*][?(@.name=='ToDeclare')].kind" \"assoc_type\" // @has "$.index[*][?(@.name=='ToDeclare')].kind" \"assoc_type\"
// @has - "$.index[*][?(@.name=='ToDeclare')].inner.default" null // @has "$.index[*][?(@.name=='ToDeclare')].inner.default" null
type ToDeclare; type ToDeclare;
// @has - "$.index[*][?(@.name=='AN_ATTRIBUTE')].kind" \"assoc_const\" // @has "$.index[*][?(@.name=='AN_ATTRIBUTE')].kind" \"assoc_const\"
// @has - "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.default" null // @has "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.default" null
const AN_ATTRIBUTE: usize; const AN_ATTRIBUTE: usize;
} }
impl EasyToImpl for Simple { impl EasyToImpl for Simple {
// @has - "$.index[*][?(@.name=='ToDeclare')].inner.default.kind" \"primitive\" // @has "$.index[*][?(@.name=='ToDeclare')].inner.default.kind" \"primitive\"
// @has - "$.index[*][?(@.name=='ToDeclare')].inner.default.inner" \"usize\" // @has "$.index[*][?(@.name=='ToDeclare')].inner.default.inner" \"usize\"
type ToDeclare = usize; type ToDeclare = usize;
// @has - "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.type.kind" \"primitive\" // @has "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.type.kind" \"primitive\"
// @has - "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.type.inner" \"usize\" // @has "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.type.inner" \"usize\"
// @has - "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.default" \"12\" // @has "$.index[*][?(@.name=='AN_ATTRIBUTE')].inner.default" \"12\"
const AN_ATTRIBUTE: usize = 12; const AN_ATTRIBUTE: usize = 12;
} }

View file

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

View file

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

View file

@ -14,7 +14,7 @@ mod auto {
} }
} }
// @count doc_hidden_failure.json "$.index[*][?(@.name=='builders')]" 2 // @count "$.index[*][?(@.name=='builders')]" 2
pub use auto::*; pub use auto::*;
pub mod builders { pub mod builders {

View file

@ -3,10 +3,10 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @has enum_variant_hidden.json "$.index[*][?(@.name=='ParseError')]" // @has "$.index[*][?(@.name=='ParseError')]"
// @has - "$.index[*][?(@.name=='UnexpectedEndTag')]" // @has "$.index[*][?(@.name=='UnexpectedEndTag')]"
// @is - "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant_kind" '"tuple"' // @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant_kind" '"tuple"'
// @is - "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant_inner" [] // @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant_inner" []
pub enum ParseError { pub enum ParseError {
UnexpectedEndTag(#[doc(hidden)] u32), UnexpectedEndTag(#[doc(hidden)] u32),

View file

@ -1,9 +1,9 @@
// @has variant_struct.json "$.index[*][?(@.name=='EnumStruct')].visibility" \"public\" // @has "$.index[*][?(@.name=='EnumStruct')].visibility" \"public\"
// @has - "$.index[*][?(@.name=='EnumStruct')].kind" \"enum\" // @has "$.index[*][?(@.name=='EnumStruct')].kind" \"enum\"
pub enum EnumStruct { pub enum EnumStruct {
// @has - "$.index[*][?(@.name=='VariantS')].inner.variant_kind" \"struct\" // @has "$.index[*][?(@.name=='VariantS')].inner.variant_kind" \"struct\"
// @has - "$.index[*][?(@.name=='x')].kind" \"struct_field\" // @has "$.index[*][?(@.name=='x')].kind" \"struct_field\"
// @has - "$.index[*][?(@.name=='y')].kind" \"struct_field\" // @has "$.index[*][?(@.name=='y')].kind" \"struct_field\"
VariantS { VariantS {
x: u32, x: u32,
y: String, y: String,

View file

@ -1,8 +1,8 @@
// @has variant_tuple_struct.json "$.index[*][?(@.name=='EnumTupleStruct')].visibility" \"public\" // @has "$.index[*][?(@.name=='EnumTupleStruct')].visibility" \"public\"
// @has - "$.index[*][?(@.name=='EnumTupleStruct')].kind" \"enum\" // @has "$.index[*][?(@.name=='EnumTupleStruct')].kind" \"enum\"
pub enum EnumTupleStruct { pub enum EnumTupleStruct {
// @has - "$.index[*][?(@.name=='VariantA')].inner.variant_kind" \"tuple\" // @has "$.index[*][?(@.name=='VariantA')].inner.variant_kind" \"tuple\"
// @has - "$.index[*][?(@.name=='0')].kind" \"struct_field\" // @has "$.index[*][?(@.name=='0')].kind" \"struct_field\"
// @has - "$.index[*][?(@.name=='1')].kind" \"struct_field\" // @has "$.index[*][?(@.name=='1')].kind" \"struct_field\"
VariantA(u32, String), VariantA(u32, String),
} }

View file

@ -3,23 +3,23 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
#![feature(c_unwind)] #![feature(c_unwind)]
// @is abi.json "$.index[*][?(@.name=='AbiRust')].inner.type.inner.header.abi" \"Rust\" // @is "$.index[*][?(@.name=='AbiRust')].inner.type.inner.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.type.inner.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.type.inner.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.type.inner.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.type.inner.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.type.inner.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.type.inner.header.abi.Other" '"\"vectorcall-unwind\""'
pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn(); pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn();

View file

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

View file

@ -3,23 +3,23 @@
#![feature(abi_vectorcall)] #![feature(abi_vectorcall)]
#![feature(c_unwind)] #![feature(c_unwind)]
// @is abi.json "$.index[*][?(@.name=='abi_rust')].inner.header.abi" \"Rust\" // @is "$.index[*][?(@.name=='abi_rust')].inner.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.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.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.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.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.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.header.abi.Other" '"\"vectorcall-unwind\""'
pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {} pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {}

View file

@ -3,65 +3,65 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @set foo = generic_args.json "$.index[*][?(@.name=='Foo')].id" // @set foo = "$.index[*][?(@.name=='Foo')].id"
pub trait Foo {} pub trait Foo {}
// @set generic_foo = generic_args.json "$.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.generics.where_predicates" "[]"
// @count - "$.index[*][?(@.name=='generics')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='generics')].inner.generics.params[*]" 1
// @is - "$.index[*][?(@.name=='generics')].inner.generics.params[0].name" '"F"' // @is "$.index[*][?(@.name=='generics')].inner.generics.params[0].name" '"F"'
// @is - "$.index[*][?(@.name=='generics')].inner.generics.params[0].kind.type.default" 'null' // @is "$.index[*][?(@.name=='generics')].inner.generics.params[0].kind.type.default" 'null'
// @count - "$.index[*][?(@.name=='generics')].inner.generics.params[0].kind.type.bounds[*]" 1 // @count "$.index[*][?(@.name=='generics')].inner.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.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.decl.inputs[*]" 1
// @is - "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][0]" '"f"' // @is "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][0]" '"f"'
// @is - "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][1].kind" '"generic"' // @is "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][1].kind" '"generic"'
// @is - "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][1].inner" '"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.generics.where_predicates" "[]"
// @count - "$.index[*][?(@.name=='impl_trait')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='impl_trait')].inner.generics.params[*]" 1
// @is - "$.index[*][?(@.name=='impl_trait')].inner.generics.params[0].name" '"impl Foo"' // @is "$.index[*][?(@.name=='impl_trait')].inner.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.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.decl.inputs[*]" 1
// @is - "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][0]" '"f"' // @is "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][0]" '"f"'
// @is - "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].kind" '"impl_trait"' // @is "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].kind" '"impl_trait"'
// @count - "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].inner[*]" 1 // @count "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].inner[*]" 1
// @is - "$.index[*][?(@.name=='impl_trait')].inner.decl.inputs[0][1].inner[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.generics.params[*]" 3
// @is - "$.index[*][?(@.name=='where_clase')].inner.generics.params[0].name" '"F"' // @is "$.index[*][?(@.name=='where_clase')].inner.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.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.decl.inputs[*]" 3
// @is - "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][0]" '"f"' // @is "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][0]" '"f"'
// @is - "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][1].kind" '"generic"' // @is "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][1].kind" '"generic"'
// @is - "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][1].inner" '"F"' // @is "$.index[*][?(@.name=='where_clase')].inner.decl.inputs[0][1].inner" '"F"'
// @count - "$.index[*][?(@.name=='where_clase')].inner.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.generics.where_predicates[0].bound_predicate.type" '{"inner": "F", "kind": "generic"}'
// @count - "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[0].bound_predicate.bounds[*]" 1 // @count "$.index[*][?(@.name=='where_clase')].inner.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.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.generics.where_predicates[1].bound_predicate.type" '{"inner": "G", "kind": "generic"}'
// @count - "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[1].bound_predicate.bounds[*]" 1 // @count "$.index[*][?(@.name=='where_clase')].inner.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.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.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.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.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.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.generics.where_predicates[2].bound_predicate.type.kind" '"borrowed_ref"'
// @is - "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[2].bound_predicate.type.inner.lifetime" \"\'b\" // @is "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[2].bound_predicate.type.inner.lifetime" \"\'b\"
// @is - "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[2].bound_predicate.type.inner.type" '{"inner": "H", "kind": "generic"}' // @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.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.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.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.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.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.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,15 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @count generic_returns.json "$.index[*][?(@.name=='generic_returns')].inner.items[*]" 2 // @count "$.index[*][?(@.name=='generic_returns')].inner.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.decl.inputs" []
// @is - "$.index[*][?(@.name=='get_foo')].inner.decl.output.kind" '"impl_trait"' // @is "$.index[*][?(@.name=='get_foo')].inner.decl.output.kind" '"impl_trait"'
// @count - "$.index[*][?(@.name=='get_foo')].inner.decl.output.inner[*]" 1 // @count "$.index[*][?(@.name=='get_foo')].inner.decl.output.inner[*]" 1
// @is - "$.index[*][?(@.name=='get_foo')].inner.decl.output.inner[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

@ -3,24 +3,24 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @set wham_id = generics.json "$.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.generics.where_predicates" []
// @count - "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[*]" 1
// @is - "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[0].name" '"T"' // @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[0].name" '"T"'
// @has - "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[0].kind.type.synthetic" false // @has "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[0].kind.type.synthetic" false
// @has - "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id // @has "$.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.decl.inputs" '[["w", {"inner": "T", "kind": "generic"}]]' // @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.decl.inputs" '[["w", {"inner": "T", "kind": "generic"}]]'
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.generics.where_predicates" []
// @count - "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.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.generics.params[0].name" '"impl Wham"'
// @has - "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.generics.params[0].kind.type.synthetic" true // @has "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.generics.params[0].kind.type.synthetic" true
// @has - "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id // @has "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.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.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.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.decl.inputs[0][1].kind" '"impl_trait"'
// @is - "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.decl.inputs[0][1].inner[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,33 +1,33 @@
// edition:2018 // edition:2018
// @is qualifiers.json "$.index[*][?(@.name=='nothing_fn')].inner.header.async" false // @is "$.index[*][?(@.name=='nothing_fn')].inner.header.async" false
// @is - "$.index[*][?(@.name=='nothing_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='nothing_fn')].inner.header.const" false
// @is - "$.index[*][?(@.name=='nothing_fn')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='nothing_fn')].inner.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.header.async" false
// @is - "$.index[*][?(@.name=='unsafe_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='unsafe_fn')].inner.header.const" false
// @is - "$.index[*][?(@.name=='unsafe_fn')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='unsafe_fn')].inner.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.header.async" false
// @is - "$.index[*][?(@.name=='const_fn')].inner.header.const" true // @is "$.index[*][?(@.name=='const_fn')].inner.header.const" true
// @is - "$.index[*][?(@.name=='const_fn')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='const_fn')].inner.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.header.async" true
// @is - "$.index[*][?(@.name=='async_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='async_fn')].inner.header.const" false
// @is - "$.index[*][?(@.name=='async_fn')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='async_fn')].inner.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.header.async" true
// @is - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.const" false // @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.const" false
// @is - "$.index[*][?(@.name=='async_unsafe_fn')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.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.header.async" false
// @is - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.const" true // @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.const" true
// @is - "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.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

@ -8,37 +8,35 @@ pub trait Sized {}
pub trait Display {} pub trait Display {}
// @has gats.json
pub trait LendingIterator { pub trait LendingIterator {
// @count - "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*]" 1 // @count "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*]" 1
// @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*].name" \"\'a\" // @is "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*].name" \"\'a\"
// @count - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*]" 1 // @count "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*]" 1
// @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.type.inner" \"Self\" // @is "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.type.inner" \"Self\"
// @is - "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.bounds[*].outlives" \"\'a\" // @is "$.index[*][?(@.name=='LendingItem')].inner.generics.where_predicates[*].bound_predicate.bounds[*].outlives" \"\'a\"
// @count - "$.index[*][?(@.name=='LendingItem')].inner.bounds[*]" 1 // @count "$.index[*][?(@.name=='LendingItem')].inner.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\" // @is "$.index[*][?(@.name=='lending_next')].inner.decl.output.kind" \"qualified_path\"
// @count - "$.index[*][?(@.name=='lending_next')].inner.decl.output.inner.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.decl.output.inner.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.decl.output.inner.self_type.inner" \"Self\" // @is "$.index[*][?(@.name=='lending_next')].inner.decl.output.inner.self_type.inner" \"Self\"
// @is - "$.index[*][?(@.name=='lending_next')].inner.decl.output.inner.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>;
} }
// @has gats.json
pub trait Iterator { pub trait Iterator {
// @count - "$.index[*][?(@.name=='Item')].inner.generics.params[*]" 0 // @count "$.index[*][?(@.name=='Item')].inner.generics.params[*]" 0
// @count - "$.index[*][?(@.name=='Item')].inner.generics.where_predicates[*]" 0 // @count "$.index[*][?(@.name=='Item')].inner.generics.where_predicates[*]" 0
// @count - "$.index[*][?(@.name=='Item')].inner.bounds[*]" 1 // @count "$.index[*][?(@.name=='Item')].inner.bounds[*]" 1
type Item: Display; type Item: Display;
// @is - "$.index[*][?(@.name=='next')].inner.decl.output.kind" \"qualified_path\" // @is "$.index[*][?(@.name=='next')].inner.decl.output.kind" \"qualified_path\"
// @count - "$.index[*][?(@.name=='next')].inner.decl.output.inner.args.angle_bracketed.args[*]" 0 // @count "$.index[*][?(@.name=='next')].inner.decl.output.inner.args.angle_bracketed.args[*]" 0
// @count - "$.index[*][?(@.name=='next')].inner.decl.output.inner.args.angle_bracketed.bindings[*]" 0 // @count "$.index[*][?(@.name=='next')].inner.decl.output.inner.args.angle_bracketed.bindings[*]" 0
// @is - "$.index[*][?(@.name=='next')].inner.decl.output.inner.self_type.inner" \"Self\" // @is "$.index[*][?(@.name=='next')].inner.decl.output.inner.self_type.inner" \"Self\"
// @is - "$.index[*][?(@.name=='next')].inner.decl.output.inner.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

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

View file

@ -4,9 +4,8 @@
#![no_std] #![no_std]
#![no_core] #![no_core]
// @has glob_import.json // @has "$.index[*][?(@.name=='glob')]"
// @has - "$.index[*][?(@.name=='glob')]" // @has "$.index[*][?(@.kind=='import')].inner.name" \"*\"
// @has - "$.index[*][?(@.kind=='import')].inner.name" \"*\"
mod m1 { mod m1 {

View file

@ -12,7 +12,7 @@ impl Foo {
} }
// Testing spans, so all tests below code // Testing spans, so all tests below code
// @is auto.json "$.index[*][?(@.kind=='impl' && @.inner.synthetic==true)].span" null // @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]"
pub struct Foo; pub struct Foo;

View file

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

View file

@ -4,21 +4,21 @@
#![no_core] #![no_core]
mod bar { mod bar {
// @set baz = import_from_private.json "$.index[*][?(@.kind=='struct')].id" // @set baz = "$.index[*][?(@.kind=='struct')].id"
pub struct Baz; pub struct Baz;
// @set impl = - "$.index[*][?(@.kind=='impl')].id" // @set impl = "$.index[*][?(@.kind=='impl')].id"
impl Baz { impl Baz {
// @set doit = - "$.index[*][?(@.kind=='method')].id" // @set doit = "$.index[*][?(@.kind=='method')].id"
pub fn doit() {} pub fn doit() {}
} }
} }
// @set import = - "$.index[*][?(@.kind=='import')].id" // @set import = "$.index[*][?(@.kind=='import')].id"
pub use bar::Baz; pub use bar::Baz;
// FIXME(adotinthevoid): Use hasexact once #99474 lands // FIXME(adotinthevoid): Use hasexact once #99474 lands
// @has - "$.index[*][?(@.kind=='module')].inner.items[*]" $import // @has "$.index[*][?(@.kind=='module')].inner.items[*]" $import
// @is - "$.index[*][?(@.kind=='import')].inner.id" $baz // @is "$.index[*][?(@.kind=='import')].inner.id" $baz
// @has - "$.index[*][?(@.kind=='struct')].inner.impls[*]" $impl // @has "$.index[*][?(@.kind=='struct')].inner.impls[*]" $impl
// @has - "$.index[*][?(@.kind=='impl')].inner.items[*]" $doit // @has "$.index[*][?(@.kind=='impl')].inner.items[*]" $doit

View file

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

View file

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

@ -5,51 +5,51 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @has abi.json "$.index[*][?(@.name=='Foo')]" // @has "$.index[*][?(@.name=='Foo')]"
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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 qualifiers.json "$.index[*][?(@.name=='const_meth')].inner.header.async" false // @is "$.index[*][?(@.name=='const_meth')].inner.header.async" false
// @is - "$.index[*][?(@.name=='const_meth')].inner.header.const" true // @is "$.index[*][?(@.name=='const_meth')].inner.header.const" true
// @is - "$.index[*][?(@.name=='const_meth')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='const_meth')].inner.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.header.async" false
// @is - "$.index[*][?(@.name=='nothing_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='nothing_meth')].inner.header.const" false
// @is - "$.index[*][?(@.name=='nothing_meth')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='nothing_meth')].inner.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.header.async" false
// @is - "$.index[*][?(@.name=='unsafe_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='unsafe_meth')].inner.header.const" false
// @is - "$.index[*][?(@.name=='unsafe_meth')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='unsafe_meth')].inner.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.header.async" true
// @is - "$.index[*][?(@.name=='async_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='async_meth')].inner.header.const" false
// @is - "$.index[*][?(@.name=='async_meth')].inner.header.unsafe" false // @is "$.index[*][?(@.name=='async_meth')].inner.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.header.async" true
// @is - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.const" false // @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.const" false
// @is - "$.index[*][?(@.name=='async_unsafe_meth')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.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.header.async" false
// @is - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.const" true // @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.const" true
// @is - "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.unsafe" true // @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.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

@ -1,31 +1,31 @@
// edition:2018 // edition:2018
// compile-flags: --crate-version 1.0.0 // compile-flags: --crate-version 1.0.0
// @is nested.json "$.crate_version" \"1.0.0\" // @is "$.crate_version" \"1.0.0\"
// @is - "$.index[*][?(@.name=='nested')].kind" \"module\" // @is "$.index[*][?(@.name=='nested')].kind" \"module\"
// @is - "$.index[*][?(@.name=='nested')].inner.is_crate" true // @is "$.index[*][?(@.name=='nested')].inner.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.items[*]" $l1_id
// @is nested.json "$.index[*][?(@.name=='l1')].kind" \"module\" // @is "$.index[*][?(@.name=='l1')].kind" \"module\"
// @is - "$.index[*][?(@.name=='l1')].inner.is_crate" false // @is "$.index[*][?(@.name=='l1')].inner.is_crate" false
pub mod l1 { pub mod l1 {
// @is nested.json "$.index[*][?(@.name=='l3')].kind" \"module\" // @is "$.index[*][?(@.name=='l3')].kind" \"module\"
// @is - "$.index[*][?(@.name=='l3')].inner.is_crate" false // @is "$.index[*][?(@.name=='l3')].inner.is_crate" false
// @set l3_id = - "$.index[*][?(@.name=='l3')].id" // @set l3_id = "$.index[*][?(@.name=='l3')].id"
pub mod l3 { pub mod l3 {
// @is nested.json "$.index[*][?(@.name=='L4')].kind" \"struct\" // @is "$.index[*][?(@.name=='L4')].kind" \"struct\"
// @is - "$.index[*][?(@.name=='L4')].inner.struct_type" \"unit\" // @is "$.index[*][?(@.name=='L4')].inner.struct_type" \"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.items[*]" $l4_id
pub struct L4; pub struct L4;
} }
// @is nested.json "$.index[*][?(@.inner.source=='l3::L4')].kind" \"import\" // @is "$.index[*][?(@.inner.source=='l3::L4')].kind" \"import\"
// @is - "$.index[*][?(@.inner.source=='l3::L4')].inner.glob" false // @is "$.index[*][?(@.inner.source=='l3::L4')].inner.glob" false
// @is - "$.index[*][?(@.inner.source=='l3::L4')].inner.id" $l4_id // @is "$.index[*][?(@.inner.source=='l3::L4')].inner.id" $l4_id
// @set l4_use_id = - "$.index[*][?(@.inner.source=='l3::L4')].id" // @set l4_use_id = "$.index[*][?(@.inner.source=='l3::L4')].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.items[*]" $l3_id $l4_use_id

View file

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

View file

@ -5,16 +5,16 @@
#[doc(primitive = "usize")] #[doc(primitive = "usize")]
mod usize {} mod usize {}
// @set local_crate_id = primitive.json "$.index[*][?(@.name=='primitive')].crate_id" // @set local_crate_id = "$.index[*][?(@.name=='primitive')].crate_id"
// @has - "$.index[*][?(@.name=='ilog10')]" // @has "$.index[*][?(@.name=='ilog10')]"
// @!is - "$.index[*][?(@.name=='ilog10')].crate_id" $local_crate_id // @!is "$.index[*][?(@.name=='ilog10')].crate_id" $local_crate_id
// @has - "$.index[*][?(@.name=='checked_add')]" // @has "$.index[*][?(@.name=='checked_add')]"
// @!is - "$.index[*][?(@.name=='checked_add')]" $local_crate_id // @!is "$.index[*][?(@.name=='checked_add')]" $local_crate_id
// @!has - "$.index[*][?(@.name=='is_ascii_uppercase')]" // @!has "$.index[*][?(@.name=='is_ascii_uppercase')]"
// @is - "$.index[*][?(@.kind=='import' && @.inner.name=='my_i32')].inner.id" null // @is "$.index[*][?(@.kind=='import' && @.inner.name=='my_i32')].inner.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[*][?(@.kind=='import' && @.inner.name=='u32')].inner.id" null
pub use u32; pub use u32;

View file

@ -7,9 +7,8 @@
#![no_core] #![no_core]
// @has primitive_overloading.json // @has "$.index[*][?(@.name=='usize')]"
// @has - "$.index[*][?(@.name=='usize')]" // @has "$.index[*][?(@.name=='prim')]"
// @has - "$.index[*][?(@.name=='prim')]"
#[doc(primitive = "usize")] #[doc(primitive = "usize")]
/// This is the built-in type `usize`. /// This is the built-in type `usize`.

View file

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

View file

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

@ -3,21 +3,21 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is glob_extern.json "$.index[*][?(@.name=='mod1')].kind" \"module\" // @is "$.index[*][?(@.name=='mod1')].kind" \"module\"
// @is - "$.index[*][?(@.name=='mod1')].inner.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"
pub fn public_fn(); pub fn public_fn();
// @!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.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[*][?(@.kind=='import')].inner.glob" true
// @is - "$.index[*][?(@.kind=='import')].inner.id" $mod1_id // @is "$.index[*][?(@.kind=='import')].inner.id" $mod1_id
// @set use_id = - "$.index[*][?(@.kind=='import')].id" // @set use_id = "$.index[*][?(@.kind=='import')].id"
// @ismany - "$.index[*][?(@.name=='glob_extern')].inner.items[*]" $use_id // @ismany "$.index[*][?(@.name=='glob_extern')].inner.items[*]" $use_id
pub use mod1::*; pub use mod1::*;

View file

@ -3,31 +3,31 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is glob_private.json "$.index[*][?(@.name=='mod1')].kind" \"module\" // @is "$.index[*][?(@.name=='mod1')].kind" \"module\"
// @is glob_private.json "$.index[*][?(@.name=='mod1')].inner.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')].kind" \"module\"
// @is - "$.index[*][?(@.name=='mod2')].inner.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;
// @!has - "$.index[*][?(@.name=='Mod2Private')]" // @!has "$.index[*][?(@.name=='Mod2Private')]"
struct Mod2Private; struct Mod2Private;
} }
// @set mod2_use_id = - "$.index[*][?(@.kind=='import' && @.inner.name=='mod2')].id" // @set mod2_use_id = "$.index[*][?(@.kind=='import' && @.inner.name=='mod2')].id"
pub use self::mod2::*; pub use self::mod2::*;
// @set m1pub_id = - "$.index[*][?(@.name=='Mod1Public')].id" // @set m1pub_id = "$.index[*][?(@.name=='Mod1Public')].id"
pub struct Mod1Public; pub struct Mod1Public;
// @!has - "$.index[*][?(@.name=='Mod1Private')]" // @!has "$.index[*][?(@.name=='Mod1Private')]"
struct Mod1Private; struct Mod1Private;
} }
// @set mod1_use_id = - "$.index[*][?(@.kind=='import' && @.inner.name=='mod1')].id" // @set mod1_use_id = "$.index[*][?(@.kind=='import' && @.inner.name=='mod1')].id"
pub use mod1::*; pub use mod1::*;
// @ismany - "$.index[*][?(@.name=='mod2')].inner.items[*]" $m2pub_id // @ismany "$.index[*][?(@.name=='mod2')].inner.items[*]" $m2pub_id
// @ismany - "$.index[*][?(@.name=='mod1')].inner.items[*]" $m1pub_id $mod2_use_id // @ismany "$.index[*][?(@.name=='mod1')].inner.items[*]" $m1pub_id $mod2_use_id
// @ismany - "$.index[*][?(@.name=='glob_private')].inner.items[*]" $mod1_use_id // @ismany "$.index[*][?(@.name=='glob_private')].inner.items[*]" $mod1_use_id

View file

@ -1,17 +1,17 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @is in_root_and_mod.json "$.index[*][?(@.name=='foo')].kind" \"module\" // @is "$.index[*][?(@.name=='foo')].kind" \"module\"
// @is in_root_and_mod.json "$.index[*][?(@.name=='foo')].inner.is_stripped" "true" // @is "$.index[*][?(@.name=='foo')].inner.is_stripped" "true"
mod foo { mod foo {
// @has - "$.index[*][?(@.name=='Foo')]" // @has "$.index[*][?(@.name=='Foo')]"
pub struct Foo; pub struct Foo;
} }
// @has - "$.index[*][?(@.kind=='import' && @.inner.source=='foo::Foo')]" // @has "$.index[*][?(@.kind=='import' && @.inner.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[*][?(@.kind=='import' && @.inner.source=='crate::foo::Foo')]"
pub use crate::foo::Foo; pub use crate::foo::Foo;
} }

View file

@ -2,19 +2,19 @@
#![no_core] #![no_core]
pub mod foo { pub mod foo {
// @set bar_id = in_root_and_mod_pub.json "$.index[*][?(@.name=='Bar')].id" // @set bar_id = "$.index[*][?(@.name=='Bar')].id"
// @ismany - "$.index[*][?(@.name=='foo')].inner.items[*]" $bar_id // @ismany "$.index[*][?(@.name=='foo')].inner.items[*]" $bar_id
pub struct Bar; pub struct Bar;
} }
// @set root_import_id = - "$.index[*][?(@.inner.source=='foo::Bar')].id" // @set root_import_id = "$.index[*][?(@.inner.source=='foo::Bar')].id"
// @is - "$.index[*][?(@.inner.source=='foo::Bar')].inner.id" $bar_id // @is "$.index[*][?(@.inner.source=='foo::Bar')].inner.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.items[*]" $root_import_id
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[*][?(@.inner.source=='crate::foo::Bar')].id"
// @is - "$.index[*][?(@.inner.source=='crate::foo::Bar')].inner.id" $bar_id // @is "$.index[*][?(@.inner.source=='crate::foo::Bar')].inner.id" $bar_id
// @ismany - "$.index[*][?(@.name=='baz')].inner.items[*]" $baz_import_id // @ismany "$.index[*][?(@.name=='baz')].inner.items[*]" $baz_import_id
pub use crate::foo::Bar; pub use crate::foo::Bar;
} }

View file

@ -3,13 +3,13 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @set repro_id = macro.json "$.index[*][?(@.name=='repro')].id" // @set repro_id = "$.index[*][?(@.name=='repro')].id"
#[macro_export] #[macro_export]
macro_rules! repro { macro_rules! repro {
() => {}; () => {};
} }
// @set repro2_id = macro.json "$.index[*][?(@.inner.name=='repro2')].id" // @set repro2_id = "$.index[*][?(@.inner.name=='repro2')].id"
pub use crate::repro as repro2; pub use crate::repro as repro2;
// @ismany macro.json "$.index[*][?(@.name=='macro')].inner.items[*]" $repro_id $repro2_id // @ismany "$.index[*][?(@.name=='macro')].inner.items[*]" $repro_id $repro2_id

View file

@ -10,19 +10,19 @@
extern crate pub_struct as foo; extern crate pub_struct as foo;
#[doc(inline)] #[doc(inline)]
// @set crate_use_id = private_twice_one_inline.json "$.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.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.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.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[*][?(@.kind=='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.items[*]" $bar_id $crate_use_id

View file

@ -6,18 +6,18 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is private_two_names.json "$.index[*][?(@.name=='style')].kind" \"module\" // @is "$.index[*][?(@.name=='style')].kind" \"module\"
// @is private_two_names.json "$.index[*][?(@.name=='style')].inner.is_stripped" "true" // @is "$.index[*][?(@.name=='style')].inner.is_stripped" "true"
mod style { mod style {
// @set color_struct_id = - "$.index[*][?(@.kind=='struct' && @.name=='Color')].id" // @set color_struct_id = "$.index[*][?(@.kind=='struct' && @.name=='Color')].id"
pub struct Color; pub struct Color;
} }
// @is - "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].inner.id" $color_struct_id // @is "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].inner.id" $color_struct_id
// @set color_export_id = - "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].id" // @set color_export_id = "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].id"
pub use style::Color; pub use style::Color;
// @is - "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].inner.id" $color_struct_id // @is "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].inner.id" $color_struct_id
// @set colour_export_id = - "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].id" // @set colour_export_id = "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].id"
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.items[*]" $color_export_id $colour_export_id

View file

@ -3,12 +3,12 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is rename_private.json "$.index[*][?(@.name=='inner')].kind" \"module\" // @is "$.index[*][?(@.name=='inner')].kind" \"module\"
// @is rename_private.json "$.index[*][?(@.name=='inner')].inner.is_stripped" "true" // @is "$.index[*][?(@.name=='inner')].inner.is_stripped" "true"
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[*][?(@.kind=='import')].inner.name" \"NewName\"
pub use inner::Public as NewName; pub use inner::Public as NewName;

View file

@ -3,15 +3,15 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @set inner_id = rename_public.json "$.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.items[*]" $public_id
pub struct Public; pub struct Public;
} }
// @set import_id = - "$.index[*][?(@.inner.name=='NewName')].id" // @set import_id = "$.index[*][?(@.inner.name=='NewName')].id"
// @!has - "$.index[*][?(@.inner.name=='Public')]" // @!has "$.index[*][?(@.inner.name=='Public')]"
// @is - "$.index[*][?(@.inner.name=='NewName')].inner.source" \"inner::Public\" // @is "$.index[*][?(@.inner.name=='NewName')].inner.source" \"inner::Public\"
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.items[*]" $inner_id $import_id

View file

@ -6,18 +6,16 @@
#![no_std] #![no_std]
#![no_core] #![no_core]
// @has same_type_reexported_more_than_once.json
mod inner { mod inner {
// @set trait_id = - "$.index[*][?(@.name=='Trait')].id" // @set trait_id = "$.index[*][?(@.name=='Trait')].id"
pub trait Trait {} pub trait Trait {}
} }
// @set export_id = - "$.index[*][?(@.inner.name=='Trait')].id" // @set export_id = "$.index[*][?(@.inner.name=='Trait')].id"
// @is - "$.index[*][?(@.inner.name=='Trait')].inner.id" $trait_id // @is "$.index[*][?(@.inner.name=='Trait')].inner.id" $trait_id
pub use inner::Trait; pub use inner::Trait;
// @set reexport_id = - "$.index[*][?(@.inner.name=='Reexport')].id" // @set reexport_id = "$.index[*][?(@.inner.name=='Reexport')].id"
// @is - "$.index[*][?(@.inner.name=='Reexport')].inner.id" $trait_id // @is "$.index[*][?(@.inner.name=='Reexport')].inner.id" $trait_id
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.items[*]" $reexport_id $export_id

View file

@ -2,16 +2,16 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @is simple_private.json "$.index[*][?(@.name=='inner')].kind" \"module\" // @is "$.index[*][?(@.name=='inner')].kind" \"module\"
// @is simple_private.json "$.index[*][?(@.name=='inner')].inner.is_stripped" "true" // @is "$.index[*][?(@.name=='inner')].inner.is_stripped" "true"
mod inner { mod inner {
// @set pub_id = - "$.index[*][?(@.name=='Public')].id" // @set pub_id = "$.index[*][?(@.name=='Public')].id"
pub struct Public; pub struct Public;
} }
// @is - "$.index[*][?(@.kind=='import')].inner.name" \"Public\" // @is "$.index[*][?(@.kind=='import')].inner.name" \"Public\"
// @set use_id = - "$.index[*][?(@.kind=='import')].id" // @set use_id = "$.index[*][?(@.kind=='import')].id"
pub use inner::Public; pub use inner::Public;
// @ismany - "$.index[*][?(@.name=='inner')].inner.items[*]" $pub_id // @ismany "$.index[*][?(@.name=='inner')].inner.items[*]" $pub_id
// @ismany - "$.index[*][?(@.name=='simple_private')].inner.items[*]" $use_id // @ismany "$.index[*][?(@.name=='simple_private')].inner.items[*]" $use_id

View file

@ -3,16 +3,16 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @set inner_id = simple_public.json "$.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.items[*]" $public_id
pub struct Public; pub struct Public;
} }
// @set import_id = - "$.index[*][?(@.inner.name=='Public')].id" // @set import_id = "$.index[*][?(@.inner.name=='Public')].id"
// @is - "$.index[*][?(@.inner.name=='Public')].inner.source" \"inner::Public\" // @is "$.index[*][?(@.inner.name=='Public')].inner.source" \"inner::Public\"
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.items[*]" $import_id $inner_id

View file

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

View file

@ -1,20 +1,20 @@
#![no_core] #![no_core]
#![feature(no_core)] #![feature(no_core)]
// @!has stripped_modules.json "$.index[*][?(@.name=='no_pub_inner')]" // @!has "$.index[*][?(@.name=='no_pub_inner')]"
mod no_pub_inner { mod no_pub_inner {
fn priv_inner() {} fn priv_inner() {}
} }
// @!has - "$.index[*][?(@.name=='pub_inner_unreachable')]" // @!has "$.index[*][?(@.name=='pub_inner_unreachable')]"
mod pub_inner_unreachable { mod pub_inner_unreachable {
// @!has - "$.index[*][?(@.name=='pub_inner_1')]" // @!has "$.index[*][?(@.name=='pub_inner_1')]"
pub fn pub_inner_1() {} pub fn pub_inner_1() {}
} }
// @has - "$.index[*][?(@.name=='pub_inner_reachable')]" // @has "$.index[*][?(@.name=='pub_inner_reachable')]"
mod pub_inner_reachable { mod pub_inner_reachable {
// @has - "$.index[*][?(@.name=='pub_inner_2')]" // @has "$.index[*][?(@.name=='pub_inner_2')]"
pub fn pub_inner_2() {} pub fn pub_inner_2() {}
} }

View file

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

View file

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

View file

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

View file

@ -1,13 +1,13 @@
use std::collections::HashMap; use std::collections::HashMap;
// @has with_generics.json "$.index[*][?(@.name=='WithGenerics')].visibility" \"public\" // @has "$.index[*][?(@.name=='WithGenerics')].visibility" \"public\"
// @has - "$.index[*][?(@.name=='WithGenerics')].kind" \"struct\" // @has "$.index[*][?(@.name=='WithGenerics')].kind" \"struct\"
// @has - "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[0].name" \"T\" // @has "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[0].name" \"T\"
// @has - "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[0].kind.type" // @has "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[0].kind.type"
// @has - "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[1].name" \"U\" // @has "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[1].name" \"U\"
// @has - "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[1].kind.type" // @has "$.index[*][?(@.name=='WithGenerics')].inner.generics.params[1].kind.type"
// @has - "$.index[*][?(@.name=='WithGenerics')].inner.struct_type" \"plain\" // @has "$.index[*][?(@.name=='WithGenerics')].inner.struct_type" \"plain\"
// @has - "$.index[*][?(@.name=='WithGenerics')].inner.fields_stripped" true // @has "$.index[*][?(@.name=='WithGenerics')].inner.fields_stripped" true
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,9 @@
// @has with_primitives.json "$.index[*][?(@.name=='WithPrimitives')].visibility" \"public\" // @has "$.index[*][?(@.name=='WithPrimitives')].visibility" \"public\"
// @has - "$.index[*][?(@.name=='WithPrimitives')].kind" \"struct\" // @has "$.index[*][?(@.name=='WithPrimitives')].kind" \"struct\"
// @has - "$.index[*][?(@.name=='WithPrimitives')].inner.generics.params[0].name" \"\'a\" // @has "$.index[*][?(@.name=='WithPrimitives')].inner.generics.params[0].name" \"\'a\"
// @has - "$.index[*][?(@.name=='WithPrimitives')].inner.generics.params[0].kind.lifetime.outlives" [] // @has "$.index[*][?(@.name=='WithPrimitives')].inner.generics.params[0].kind.lifetime.outlives" []
// @has - "$.index[*][?(@.name=='WithPrimitives')].inner.struct_type" \"plain\" // @has "$.index[*][?(@.name=='WithPrimitives')].inner.struct_type" \"plain\"
// @has - "$.index[*][?(@.name=='WithPrimitives')].inner.fields_stripped" true // @has "$.index[*][?(@.name=='WithPrimitives')].inner.fields_stripped" true
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 has_body.json "$.index[*][?(@.name=='Foo')]" // @has "$.index[*][?(@.name=='Foo')]"
pub trait Foo { pub trait Foo {
// @has - "$.index[*][?(@.name=='no_self')].inner.has_body" false // @has "$.index[*][?(@.name=='no_self')].inner.has_body" false
fn no_self(); fn no_self();
// @has - "$.index[*][?(@.name=='move_self')].inner.has_body" false // @has "$.index[*][?(@.name=='move_self')].inner.has_body" false
fn move_self(self); fn move_self(self);
// @has - "$.index[*][?(@.name=='ref_self')].inner.has_body" false // @has "$.index[*][?(@.name=='ref_self')].inner.has_body" false
fn ref_self(&self); fn ref_self(&self);
// @has - "$.index[*][?(@.name=='no_self_def')].inner.has_body" true // @has "$.index[*][?(@.name=='no_self_def')].inner.has_body" true
fn no_self_def() {} fn no_self_def() {}
// @has - "$.index[*][?(@.name=='move_self_def')].inner.has_body" true // @has "$.index[*][?(@.name=='move_self_def')].inner.has_body" true
fn move_self_def(self) {} fn move_self_def(self) {}
// @has - "$.index[*][?(@.name=='ref_self_def')].inner.has_body" true // @has "$.index[*][?(@.name=='ref_self_def')].inner.has_body" true
fn ref_self_def(&self) {} fn ref_self_def(&self) {}
} }
pub trait Bar: Clone { pub trait Bar: Clone {
// @has - "$.index[*][?(@.name=='method')].inner.has_body" false // @has "$.index[*][?(@.name=='method')].inner.has_body" false
fn method(&self, param: usize); fn method(&self, param: usize);
} }

View file

@ -1,19 +1,19 @@
#![feature(no_core)] #![feature(no_core)]
#![no_core] #![no_core]
// @set wham = implementors.json "$.index[*][?(@.name=='Wham')].id" // @set wham = "$.index[*][?(@.name=='Wham')].id"
// @count - "$.index[*][?(@.name=='Wham')].inner.implementations[*]" 1 // @count "$.index[*][?(@.name=='Wham')].inner.implementations[*]" 1
// @set gmWham = - "$.index[*][?(@.name=='Wham')].inner.implementations[0]" // @set gmWham = "$.index[*][?(@.name=='Wham')].inner.implementations[0]"
pub trait Wham {} pub trait Wham {}
// @count - "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[*]" 1 // @count "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[*]" 1
// @is - "$.index[*][?(@.name=='GeorgeMichael')].inner.impls[0]" $gmWham // @is "$.index[*][?(@.name=='GeorgeMichael')].inner.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.implementations[0]" $gm
pub struct GeorgeMichael {} pub struct GeorgeMichael {}
impl Wham for GeorgeMichael {} impl Wham for GeorgeMichael {}

View file

@ -4,23 +4,23 @@
#![feature(lang_items)] #![feature(lang_items)]
#![no_core] #![no_core]
// @set loud_id = supertrait.json "$.index[*][?(@.name=='Loud')].id" // @set loud_id = "$.index[*][?(@.name=='Loud')].id"
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.bounds[*]" 1
// @is - "$.index[*][?(@.name=='VeryLoud')].inner.bounds[0].trait_bound.trait.id" $loud_id // @is "$.index[*][?(@.name=='VeryLoud')].inner.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.bounds[*]" 2
// @is - "$.index[*][?(@.name=='MetalBand')].inner.bounds[0].trait_bound.trait.id" $very_loud_id // @is "$.index[*][?(@.name=='MetalBand')].inner.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.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.bounds[*]" 2
// @is - "$.index[*][?(@.name=='DnabLatem')].inner.bounds[1].trait_bound.trait.id" $very_loud_id // @is "$.index[*][?(@.name=='DnabLatem')].inner.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.bounds[0].trait_bound.trait.id" $sounds_good_id
pub trait DnabLatem: SoundsGood + VeryLoud {} pub trait DnabLatem: SoundsGood + VeryLoud {}

View file

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

View file

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

View file

@ -1,33 +1,33 @@
// ignore-tidy-linelength // ignore-tidy-linelength
// @set result = generic_default.json "$.index[*][?(@.name=='Result')].id" // @set result = "$.index[*][?(@.name=='Result')].id"
pub enum Result<T, E> { pub enum Result<T, E> {
Ok(T), Ok(T),
Err(E), Err(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\" // @is "$.index[*][?(@.name=='MyResult')].kind" \"typedef\"
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.where_predicates[*]" 0 // @count "$.index[*][?(@.name=='MyResult')].inner.generics.where_predicates[*]" 0
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.params[*]" 2 // @count "$.index[*][?(@.name=='MyResult')].inner.generics.params[*]" 2
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].name" \"T\" // @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].name" \"T\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].name" \"E\" // @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].name" \"E\"
// @has - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type" // @has "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type"
// @has - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type" // @has "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type"
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.bounds[*]" 0 // @count "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.bounds[*]" 0
// @count - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.bounds[*]" 0 // @count "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.bounds[*]" 0
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.default" null // @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[0].kind.type.default" null
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.kind" \"resolved_path\" // @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.kind" \"resolved_path\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.id" $my_error // @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.id" $my_error
// @is - "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.name" \"MyError\" // @is "$.index[*][?(@.name=='MyResult')].inner.generics.params[1].kind.type.default.inner.name" \"MyError\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.kind" \"resolved_path\" // @is "$.index[*][?(@.name=='MyResult')].inner.type.kind" \"resolved_path\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.id" $result // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.id" $result
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.name" \"Result\" // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.name" \"Result\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.bindings" [] // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.bindings" []
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"generic\" // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.kind" \"generic\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.kind" \"generic\" // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.kind" \"generic\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.inner" \"T\" // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[0].type.inner" \"T\"
// @is - "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.inner" \"E\" // @is "$.index[*][?(@.name=='MyResult')].inner.type.inner.args.angle_bracketed.args[1].type.inner" \"E\"
pub type MyResult<T, E = MyError> = Result<T, E>; pub type MyResult<T, E = MyError> = Result<T, E>;

View file

@ -1,9 +1,7 @@
// ignore-tidy-linelength // ignore-tidy-linelength
// @has hrtb.json // @is "$.index[*][?(@.name=='genfn')].inner.generics.where_predicates[0].bound_predicate.type" '{"inner": "F","kind": "generic"}'
// @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.generics.where_predicates[0].bound_predicate.type" '{"inner": "F","kind": "generic"}'
// @is - "$.index[*][?(@.name=='genfn')].inner.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),
@ -12,14 +10,14 @@ where
f(&zero, &zero); f(&zero, &zero);
} }
// @is - "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}' // @is "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}'
// @is - "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}' // @is "$.index[*][?(@.name=='dynfn')].inner.generics" '{"params": [], "where_predicates": []}'
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].kind" '"borrowed_ref"' // @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].kind" '"borrowed_ref"'
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.kind" '"dyn_trait"' // @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.kind" '"dyn_trait"'
// @is - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.lifetime" null // @is "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.lifetime" null
// @count - "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.traits[*]" 1 // @count "$.index[*][?(@.name=='dynfn')].inner.decl.inputs[0][1].inner.type.inner.traits[*]" 1
// @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].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"' // @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

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

View file

@ -1,6 +1,6 @@
// @has union.json "$.index[*][?(@.name=='Union')].visibility" \"public\" // @has "$.index[*][?(@.name=='Union')].visibility" \"public\"
// @has - "$.index[*][?(@.name=='Union')].kind" \"union\" // @has "$.index[*][?(@.name=='Union')].kind" \"union\"
// @!has - "$.index[*][?(@.name=='Union')].inner.struct_type" // @!has "$.index[*][?(@.name=='Union')].inner.struct_type"
pub union Union { pub union Union {
int: i32, int: i32,
float: f32, float: f32,