mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Auto merge of #111882 - matthiaskrgr:rollup-1xyv5mq, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #111427 ([rustdoc][JSON] Use exclusively externally tagged enums in the JSON representation) - #111486 (Pretty-print inherent projections correctly) - #111722 (Document stack-protector option) - #111761 (fix(resolve): not defined `extern crate shadow_name`) - #111845 (Update books) - #111851 (CFI: Fix encode_region: unexpected ReEarlyBound(0, 'a)) - #111871 (Migrate GUI colors test to original CSS color format) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
d5699874dc
10
Cargo.lock
10
Cargo.lock
@ -246,6 +246,15 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bincode"
|
||||
version = "1.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
@ -4351,6 +4360,7 @@ dependencies = [
|
||||
name = "rustdoc-json-types"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"rustc-hash",
|
||||
"serde",
|
||||
"serde_json",
|
||||
|
@ -58,11 +58,12 @@ impl<'tcx> Printer<'tcx> for AbsolutePathPrinter<'tcx> {
|
||||
// Types with identity (print the module path).
|
||||
ty::Adt(ty::AdtDef(Interned(&ty::AdtDefData { did: def_id, .. }, _)), substs)
|
||||
| ty::FnDef(def_id, substs)
|
||||
| ty::Alias(_, ty::AliasTy { def_id, substs, .. })
|
||||
| ty::Alias(ty::Projection | ty::Opaque, ty::AliasTy { def_id, substs, .. })
|
||||
| ty::Closure(def_id, substs)
|
||||
| ty::Generator(def_id, substs, _) => self.print_def_path(def_id, substs),
|
||||
ty::Foreign(def_id) => self.print_def_path(def_id, &[]),
|
||||
|
||||
ty::Alias(ty::Inherent, _) => bug!("type_name: unexpected inherent projection"),
|
||||
ty::GeneratorWitness(_) => bug!("type_name: unexpected `GeneratorWitness`"),
|
||||
ty::GeneratorWitnessMIR(..) => bug!("type_name: unexpected `GeneratorWitnessMIR`"),
|
||||
}
|
||||
|
@ -1164,6 +1164,22 @@ pub trait PrettyPrinter<'tcx>:
|
||||
traits.entry(trait_ref).or_default().extend(proj_ty);
|
||||
}
|
||||
|
||||
fn pretty_print_inherent_projection(
|
||||
self,
|
||||
alias_ty: &ty::AliasTy<'tcx>,
|
||||
) -> Result<Self::Path, Self::Error> {
|
||||
let def_key = self.tcx().def_key(alias_ty.def_id);
|
||||
self.path_generic_args(
|
||||
|cx| {
|
||||
cx.path_append(
|
||||
|cx| cx.path_qualified(alias_ty.self_ty(), None),
|
||||
&def_key.disambiguated_data,
|
||||
)
|
||||
},
|
||||
&alias_ty.substs[1..],
|
||||
)
|
||||
}
|
||||
|
||||
fn ty_infer_name(&self, _: ty::TyVid) -> Option<Symbol> {
|
||||
None
|
||||
}
|
||||
@ -2821,7 +2837,11 @@ define_print_and_forward_display! {
|
||||
}
|
||||
|
||||
ty::AliasTy<'tcx> {
|
||||
p!(print_def_path(self.def_id, self.substs));
|
||||
if let DefKind::Impl { of_trait: false } = cx.tcx().def_kind(cx.tcx().parent(self.def_id)) {
|
||||
p!(pretty_print_inherent_projection(self))
|
||||
} else {
|
||||
p!(print_def_path(self.def_id, self.substs));
|
||||
}
|
||||
}
|
||||
|
||||
ty::ClosureKind {
|
||||
|
@ -873,6 +873,11 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
||||
let msg = "macro-expanded `extern crate` items cannot \
|
||||
shadow names passed with `--extern`";
|
||||
self.r.tcx.sess.span_err(item.span, msg);
|
||||
// `return` is intended to discard this binding because it's an
|
||||
// unregistered ambiguity error which would result in a panic
|
||||
// caused by inconsistency `path_res`
|
||||
// more details: https://github.com/rust-lang/rust/pull/111761
|
||||
return;
|
||||
}
|
||||
}
|
||||
let entry = self.r.extern_prelude.entry(ident.normalize_to_macros_2_0()).or_insert(
|
||||
|
@ -106,7 +106,7 @@ impl Determinacy {
|
||||
/// A specific scope in which a name can be looked up.
|
||||
/// This enum is currently used only for early resolution (imports and macros),
|
||||
/// but not for late resolution yet.
|
||||
#[derive(Clone, Copy)]
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
enum Scope<'a> {
|
||||
DeriveHelpers(LocalExpnId),
|
||||
DeriveHelpersCompat,
|
||||
|
@ -220,7 +220,7 @@ impl<'tcx> Printer<'tcx> for &mut SymbolPrinter<'tcx> {
|
||||
match *ty.kind() {
|
||||
// Print all nominal types as paths (unlike `pretty_print_type`).
|
||||
ty::FnDef(def_id, substs)
|
||||
| ty::Alias(_, ty::AliasTy { def_id, substs, .. })
|
||||
| ty::Alias(ty::Projection | ty::Opaque, ty::AliasTy { def_id, substs, .. })
|
||||
| ty::Closure(def_id, substs)
|
||||
| ty::Generator(def_id, substs, _) => self.print_def_path(def_id, substs),
|
||||
|
||||
@ -241,6 +241,8 @@ impl<'tcx> Printer<'tcx> for &mut SymbolPrinter<'tcx> {
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
ty::Alias(ty::Inherent, _) => panic!("unexpected inherent projection"),
|
||||
|
||||
_ => self.pretty_print_type(ty),
|
||||
}
|
||||
}
|
||||
|
@ -272,12 +272,11 @@ fn encode_region<'tcx>(
|
||||
s.push('E');
|
||||
compress(dict, DictKey::Region(region), &mut s);
|
||||
}
|
||||
RegionKind::ReErased => {
|
||||
RegionKind::ReEarlyBound(..) | RegionKind::ReErased => {
|
||||
s.push_str("u6region");
|
||||
compress(dict, DictKey::Region(region), &mut s);
|
||||
}
|
||||
RegionKind::ReEarlyBound(..)
|
||||
| RegionKind::ReFree(..)
|
||||
RegionKind::ReFree(..)
|
||||
| RegionKind::ReStatic
|
||||
| RegionKind::ReError(_)
|
||||
| RegionKind::ReVar(..)
|
||||
@ -704,14 +703,15 @@ fn transform_predicates<'tcx>(
|
||||
) -> &'tcx List<ty::PolyExistentialPredicate<'tcx>> {
|
||||
let predicates: Vec<ty::PolyExistentialPredicate<'tcx>> = predicates
|
||||
.iter()
|
||||
.map(|predicate| match predicate.skip_binder() {
|
||||
.filter_map(|predicate| match predicate.skip_binder() {
|
||||
ty::ExistentialPredicate::Trait(trait_ref) => {
|
||||
let trait_ref = ty::TraitRef::identity(tcx, trait_ref.def_id);
|
||||
ty::Binder::dummy(ty::ExistentialPredicate::Trait(
|
||||
Some(ty::Binder::dummy(ty::ExistentialPredicate::Trait(
|
||||
ty::ExistentialTraitRef::erase_self_ty(tcx, trait_ref),
|
||||
))
|
||||
)))
|
||||
}
|
||||
_ => predicate,
|
||||
ty::ExistentialPredicate::Projection(..) => None,
|
||||
ty::ExistentialPredicate::AutoTrait(..) => Some(predicate),
|
||||
})
|
||||
.collect();
|
||||
tcx.mk_poly_existential_predicates(&predicates)
|
||||
|
@ -433,7 +433,7 @@ impl<'tcx> Printer<'tcx> for &mut SymbolMangler<'tcx> {
|
||||
// Mangle all nominal types as paths.
|
||||
ty::Adt(ty::AdtDef(Interned(&ty::AdtDefData { did: def_id, .. }, _)), substs)
|
||||
| ty::FnDef(def_id, substs)
|
||||
| ty::Alias(_, ty::AliasTy { def_id, substs, .. })
|
||||
| ty::Alias(ty::Projection | ty::Opaque, ty::AliasTy { def_id, substs, .. })
|
||||
| ty::Closure(def_id, substs)
|
||||
| ty::Generator(def_id, substs, _) => {
|
||||
self = self.print_def_path(def_id, substs)?;
|
||||
@ -482,6 +482,7 @@ impl<'tcx> Printer<'tcx> for &mut SymbolMangler<'tcx> {
|
||||
self = r.print(self)?;
|
||||
}
|
||||
|
||||
ty::Alias(ty::Inherent, _) => bug!("symbol_names: unexpected inherent projection"),
|
||||
ty::GeneratorWitness(_) => bug!("symbol_names: unexpected `GeneratorWitness`"),
|
||||
ty::GeneratorWitnessMIR(..) => bug!("symbol_names: unexpected `GeneratorWitnessMIR`"),
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit d9eb4c3f75435b008881062ffa77bf0d1527b37d
|
||||
Subproject commit f2aed2fe8e9f55508c86ba3aa4b6789b18a08a22
|
@ -1 +1 @@
|
||||
Subproject commit b5f7500fc40775096c2bbd204eae096612cf9047
|
||||
Subproject commit b5f018fb5930cb733b0a8aaf2eed975d4771e74d
|
@ -1 +1 @@
|
||||
Subproject commit 28dc0f3576b55f5e57c5d6e65cd68ba3161e9fd5
|
||||
Subproject commit 553d99b02a53b4133a40d5bd2e19958c67487c00
|
@ -1 +1 @@
|
||||
Subproject commit 28dbeaf5c44bc7f5111ad412e99f2d7c5cec6c90
|
||||
Subproject commit f1e637883fafeb83bdd5906ee7f467e4d35b7337
|
@ -115,9 +115,9 @@ equivalent.
|
||||
<tr>
|
||||
<td>Stack smashing protection
|
||||
</td>
|
||||
<td>No
|
||||
<td>Yes
|
||||
</td>
|
||||
<td>
|
||||
<td>Nightly
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -432,18 +432,16 @@ saved return instruction pointer, and checking if this value has changed
|
||||
when returning from a function. This is also known as “Stack Protector” or
|
||||
“Stack Smashing Protector (SSP)”.
|
||||
|
||||
The Rust compiler does not support stack smashing protection. However, more
|
||||
comprehensive alternatives to stack smashing protection exist, such as
|
||||
shadow and safe stack (see backward-edge control flow protection).
|
||||
The Rust compiler supports stack smashing protection on nightly builds[42].
|
||||
|
||||
![Screenshot of IDA Pro listing cross references to __stack_chk_fail in hello-rust.](images/image3.png "Cross references to __stack_chk_fail in hello-rust.")
|
||||
Fig. 14. IDA Pro listing cross references to `__stack_chk_fail` in
|
||||
hello-rust.
|
||||
|
||||
To check if stack smashing protection is enabled for a given binary, search
|
||||
for cross references to `__stack_chk_fail`. The only cross references to
|
||||
`__stack_chk_fail` in hello-rust are from the statically-linked libbacktrace
|
||||
library (see Fig. 14).
|
||||
for cross references to `__stack_chk_fail`. The presence of these
|
||||
cross-references in Rust-compiled code (e.g., `hello_rust::main`) indicates
|
||||
that the stack smashing protection is enabled (see Fig. 14).
|
||||
|
||||
|
||||
### Forward-edge control flow protection
|
||||
@ -697,3 +695,6 @@ defaults (unrelated to `READ_IMPLIES_EXEC`).
|
||||
|
||||
41. “ControlFlowIntegrity.” The Rust Unstable Book.
|
||||
[https://doc.rust-lang.org/unstable-book/compiler-flags/sanitizer.html#controlflowintegrity](../unstable-book/compiler-flags/sanitizer.html#controlflowintegrity).
|
||||
|
||||
42. bbjornse. “add codegen option for using LLVM stack smash protection #84197.”
|
||||
GitHub. <https://github.com/rust-lang/rust/pull/84197>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 19 KiB |
@ -12,3 +12,4 @@ rustc-hash = "1.1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
serde_json = "1.0"
|
||||
bincode = "1"
|
||||
|
@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize};
|
||||
use std::path::PathBuf;
|
||||
|
||||
/// rustdoc format-version.
|
||||
pub const FORMAT_VERSION: u32 = 25;
|
||||
pub const FORMAT_VERSION: u32 = 26;
|
||||
|
||||
/// A `Crate` is the root of the emitted JSON blob. It contains all type/documentation information
|
||||
/// about the language items in the local crate, as well as info about external items to allow
|
||||
@ -83,7 +83,6 @@ pub struct Item {
|
||||
/// Stringified versions of the attributes on this item (e.g. `"#[inline]"`)
|
||||
pub attrs: Vec<String>,
|
||||
pub deprecation: Option<Deprecation>,
|
||||
#[serde(flatten)]
|
||||
pub inner: ItemEnum,
|
||||
}
|
||||
|
||||
@ -222,7 +221,7 @@ pub enum ItemKind {
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
#[serde(tag = "kind", content = "inner", rename_all = "snake_case")]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum ItemEnum {
|
||||
Module(Module),
|
||||
ExternCrate {
|
||||
@ -543,7 +542,6 @@ pub enum Term {
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
#[serde(tag = "kind", content = "inner")]
|
||||
pub enum Type {
|
||||
/// Structs, enums, and unions
|
||||
ResolvedPath(Path),
|
||||
|
@ -8,11 +8,15 @@ fn test_struct_info_roundtrip() {
|
||||
impls: vec![],
|
||||
});
|
||||
|
||||
// JSON
|
||||
let struct_json = serde_json::to_string(&s).unwrap();
|
||||
|
||||
let de_s = serde_json::from_str(&struct_json).unwrap();
|
||||
|
||||
assert_eq!(s, de_s);
|
||||
|
||||
// Bincode
|
||||
let encoded: Vec<u8> = bincode::serialize(&s).unwrap();
|
||||
let decoded: ItemEnum = bincode::deserialize(&encoded).unwrap();
|
||||
assert_eq!(s, decoded);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -24,9 +28,13 @@ fn test_union_info_roundtrip() {
|
||||
impls: vec![],
|
||||
});
|
||||
|
||||
// JSON
|
||||
let union_json = serde_json::to_string(&u).unwrap();
|
||||
|
||||
let de_u = serde_json::from_str(&union_json).unwrap();
|
||||
|
||||
assert_eq!(u, de_u);
|
||||
|
||||
// Bincode
|
||||
let encoded: Vec<u8> = bincode::serialize(&u).unwrap();
|
||||
let decoded: ItemEnum = bincode::deserialize(&encoded).unwrap();
|
||||
assert_eq!(u, decoded);
|
||||
}
|
||||
|
@ -536,15 +536,15 @@ pub fn foo149(_: Type14<Bar>, _: Type14<Bar>, _: Type14<Bar>) { }
|
||||
// CHECK: ![[TYPE93]] = !{i64 0, !"_ZTSFvPFu3i32S_EE"}
|
||||
// CHECK: ![[TYPE94]] = !{i64 0, !"_ZTSFvPFu3i32S_ES0_E"}
|
||||
// CHECK: ![[TYPE95]] = !{i64 0, !"_ZTSFvPFu3i32S_ES0_S0_E"}
|
||||
// CHECK: ![[TYPE96]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function2FnIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEEE"}
|
||||
// CHECK: ![[TYPE97]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function2FnIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEES6_E"}
|
||||
// CHECK: ![[TYPE98]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function2FnIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEES6_S6_E"}
|
||||
// CHECK: ![[TYPE99]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function5FnMutIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEEE"}
|
||||
// CHECK: ![[TYPE100]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function5FnMutIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEES6_E"}
|
||||
// CHECK: ![[TYPE101]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function5FnMutIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEES6_S6_E"}
|
||||
// CHECK: ![[TYPE102]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnceIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEEE"}
|
||||
// CHECK: ![[TYPE103]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnceIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEES6_E"}
|
||||
// CHECK: ![[TYPE104]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnceIu5paramEu{{[0-9]+}}NtNtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnce6OutputIu5tupleIu3i32EES1_u6regionEES6_S6_E"}
|
||||
// CHECK: ![[TYPE96]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function2FnIu5paramEu6regionEEE"}
|
||||
// CHECK: ![[TYPE97]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function2FnIu5paramEu6regionEES3_E"}
|
||||
// CHECK: ![[TYPE98]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function2FnIu5paramEu6regionEES3_S3_E"}
|
||||
// CHECK: ![[TYPE99]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function5FnMutIu5paramEu6regionEEE"}
|
||||
// CHECK: ![[TYPE100]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function5FnMutIu5paramEu6regionEES3_E"}
|
||||
// CHECK: ![[TYPE101]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function5FnMutIu5paramEu6regionEES3_S3_E"}
|
||||
// CHECK: ![[TYPE102]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnceIu5paramEu6regionEEE"}
|
||||
// CHECK: ![[TYPE103]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnceIu5paramEu6regionEES3_E"}
|
||||
// CHECK: ![[TYPE104]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtNtC{{[[:print:]]+}}_4core3ops8function6FnOnceIu5paramEu6regionEES3_S3_E"}
|
||||
// CHECK: ![[TYPE105]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtC{{[[:print:]]+}}_4core6marker4Sendu6regionEEE"}
|
||||
// CHECK: ![[TYPE106]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtC{{[[:print:]]+}}_4core6marker4Sendu6regionEES2_E"}
|
||||
// CHECK: ![[TYPE107]] = !{i64 0, !"_ZTSFvu3refIu3dynIu{{[0-9]+}}NtNtC{{[[:print:]]+}}_4core6marker4Sendu6regionEES2_S2_E"}
|
||||
|
@ -39,6 +39,20 @@ impl<T, U> Trait3<U> for T {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Trait4<'a, T> {
|
||||
type Output: 'a;
|
||||
fn qux(&self, _: &T) -> Self::Output;
|
||||
}
|
||||
|
||||
pub struct Type4;
|
||||
|
||||
impl<'a, T, U> Trait4<'a, U> for T {
|
||||
type Output = &'a i32;
|
||||
fn qux(&self, _: &U) -> Self::Output {
|
||||
&0
|
||||
}
|
||||
}
|
||||
|
||||
pub fn foo1(a: &dyn Trait1) {
|
||||
a.foo();
|
||||
// CHECK-LABEL: define{{.*}}4foo1{{.*}}!type !{{[0-9]+}}
|
||||
@ -84,6 +98,23 @@ pub fn bar3() {
|
||||
// CHECK: call i1 @llvm.type.test({{i8\*|ptr}} {{%f|%[0-9]}}, metadata !"[[TYPE3:[[:print:]]+]]")
|
||||
}
|
||||
|
||||
pub fn foo4<'a>(a: &dyn Trait4<'a, Type4, Output = &'a i32>) {
|
||||
let b = Type4;
|
||||
a.qux(&b);
|
||||
// CHECK-LABEL: define{{.*}}4foo4{{.*}}!type !{{[0-9]+}}
|
||||
// CHECK: call i1 @llvm.type.test({{i8\*|ptr}} {{%f|%[0-9]}}, metadata !"[[TYPE4:[[:print:]]+]]")
|
||||
}
|
||||
|
||||
pub fn bar4<'a>() {
|
||||
let a = Type4;
|
||||
foo4(&a);
|
||||
let b = &a as &dyn Trait4<'a, Type4, Output = &'a i32>;
|
||||
b.qux(&a);
|
||||
// CHECK-LABEL: define{{.*}}4bar4{{.*}}!type !{{[0-9]+}}
|
||||
// CHECK: call i1 @llvm.type.test({{i8\*|ptr}} {{%f|%[0-9]}}, metadata !"[[TYPE4:[[:print:]]+]]")
|
||||
}
|
||||
|
||||
// CHECK: !{{[0-9]+}} = !{i64 0, !"[[TYPE1]]"}
|
||||
// CHECK: !{{[0-9]+}} = !{i64 0, !"[[TYPE2]]"}
|
||||
// CHECK: !{{[0-9]+}} = !{i64 0, !"[[TYPE3]]"}
|
||||
// CHECK: !{{[0-9]+}} = !{i64 0, !"[[TYPE4]]"}
|
||||
|
@ -63,6 +63,20 @@ impl<T, U> Trait3<U> for T {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Trait4<'a, T> {
|
||||
type Output: 'a;
|
||||
fn qux(&self, _: &T) -> Self::Output;
|
||||
}
|
||||
|
||||
pub struct Type4;
|
||||
|
||||
impl<'a, T, U> Trait4<'a, U> for T {
|
||||
type Output = &'a i32;
|
||||
fn qux(&self, _: &U) -> Self::Output {
|
||||
&0
|
||||
}
|
||||
}
|
||||
|
||||
pub fn foo1(a: &dyn Trait1) {
|
||||
a.foo();
|
||||
// CHECK-LABEL: define{{.*}}4foo1{{.*}}!{{<unknown kind #36>|kcfi_type}} !{{[0-9]+}}
|
||||
@ -108,6 +122,23 @@ pub fn bar3() {
|
||||
// CHECK: call void %{{[0-9]}}({{\{\}\*|ptr}} align 1 {{%[a-z]\.0|%_[0-9]}}, {{\{\}\*|ptr|%Type3\*}} align 1 {{%[a-z]\.0|%_[0-9]}}){{.*}}[ "kcfi"(i32 [[TYPE3:[[:print:]]+]]) ]
|
||||
}
|
||||
|
||||
pub fn foo4<'a>(a: &dyn Trait4<'a, Type4, Output = &'a i32>) {
|
||||
let b = Type4;
|
||||
a.qux(&b);
|
||||
// CHECK-LABEL: define{{.*}}4foo4{{.*}}!{{<unknown kind #36>|kcfi_type}} !{{[0-9]+}}
|
||||
// CHECK: call align 4 {{ptr|i32\*}} %{{[0-9]}}({{\{\}\*|ptr}} align 1 {{%[a-z]\.0|%_[0-9]}}, {{\{\}\*|ptr|%Type4\*}} align 1 {{%[a-z]\.0|%_[0-9]}}){{.*}}[ "kcfi"(i32 [[TYPE4:[[:print:]]+]]) ]
|
||||
}
|
||||
|
||||
pub fn bar4<'a>() {
|
||||
let a = Type4;
|
||||
foo4(&a);
|
||||
let b = &a as &dyn Trait4<'a, Type4, Output = &'a i32>;
|
||||
b.qux(&a);
|
||||
// CHECK-LABEL: define{{.*}}4bar4{{.*}}!{{<unknown kind #36>|kcfi_type}} !{{[0-9]+}}
|
||||
// CHECK: call align 4 {{ptr|i32\*}} %{{[0-9]}}({{\{\}\*|ptr}} align 1 {{%[a-z]\.0|%_[0-9]}}, {{\{\}\*|ptr|%Type4\*}} align 1 {{%[a-z]\.0|%_[0-9]}}){{.*}}[ "kcfi"(i32 [[TYPE4:[[:print:]]+]]) ]
|
||||
}
|
||||
|
||||
// CHECK: !{{[0-9]+}} = !{i32 [[TYPE1]]}
|
||||
// CHECK: !{{[0-9]+}} = !{i32 [[TYPE2]]}
|
||||
// CHECK: !{{[0-9]+}} = !{i32 [[TYPE3]]}
|
||||
// CHECK: !{{[0-9]+}} = !{i32 [[TYPE4]]}
|
||||
|
@ -17,6 +17,6 @@ define-function: (
|
||||
},
|
||||
)
|
||||
|
||||
call-function: ("check-background-color", ("ayu", "rgb(51, 51, 51)"))
|
||||
call-function: ("check-background-color", ("dark", "rgb(51, 51, 51)"))
|
||||
call-function: ("check-background-color", ("light", "rgb(238, 238, 238)"))
|
||||
call-function: ("check-background-color", ("ayu", "#333"))
|
||||
call-function: ("check-background-color", ("dark", "#333"))
|
||||
call-function: ("check-background-color", ("light", "#eee"))
|
||||
|
@ -3,35 +3,32 @@
|
||||
pub struct Simple;
|
||||
|
||||
impl Simple {
|
||||
// @is "$.index[*][?(@.name=='CONSTANT')].kind" \"assoc_const\"
|
||||
// @has "$.index[*][?(@.name=='CONSTANT')].inner.assoc_const"
|
||||
pub const CONSTANT: usize = 0;
|
||||
}
|
||||
|
||||
pub trait EasyToImpl {
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare trait')].kind" \"assoc_type\"
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare trait')].inner.default" null
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare trait')].inner.bounds" []
|
||||
// @has "$.index[*][?(@.docs=='ToDeclare trait')].inner.assoc_type"
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare trait')].inner.assoc_type.default" null
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare trait')].inner.assoc_type.bounds" []
|
||||
/// ToDeclare trait
|
||||
type ToDeclare;
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].kind" \"assoc_const\"
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.default" null
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.type.kind" '"primitive"'
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.type.inner" '"usize"'
|
||||
// @has "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const"
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const.default" null
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE trait')].inner.assoc_const.type.primitive" '"usize"'
|
||||
/// AN_ATTRIBUTE trait
|
||||
const AN_ATTRIBUTE: usize;
|
||||
}
|
||||
|
||||
impl EasyToImpl for Simple {
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare impl')].kind" '"assoc_type"'
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare impl')].inner.default.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare impl')].inner.default.inner" \"usize\"
|
||||
// @has "$.index[*][?(@.docs=='ToDeclare impl')].inner.assoc_type"
|
||||
// @is "$.index[*][?(@.docs=='ToDeclare impl')].inner.assoc_type.default.primitive" \"usize\"
|
||||
/// ToDeclare impl
|
||||
type ToDeclare = usize;
|
||||
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].kind" '"assoc_const"'
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.type.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.type.inner" \"usize\"
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.default" \"12\"
|
||||
// @has "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const"
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const.type.primitive" \"usize\"
|
||||
// @is "$.index[*][?(@.docs=='AN_ATTRIBUTE impl')].inner.assoc_const.default" \"12\"
|
||||
/// AN_ATTRIBUTE impl
|
||||
const AN_ATTRIBUTE: usize = 12;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#![no_std]
|
||||
|
||||
// @has "$.index[*][?(@.name=='Error')].kind" \"assoc_type\"
|
||||
// @has "$.index[*][?(@.name=='Error')].inner.default.kind" \"resolved_path\"
|
||||
// @has "$.index[*][?(@.name=='Error')].inner.default.inner.name" \"Infallible\"
|
||||
// @has "$.index[*][?(@.name=='Error')].inner.assoc_type"
|
||||
// @has "$.index[*][?(@.name=='Error')].inner.assoc_type.default.resolved_path"
|
||||
// @has "$.index[*][?(@.name=='Error')].inner.assoc_type.default.resolved_path.name" \"Infallible\"
|
||||
pub struct ForBlanketTryFromImpl;
|
||||
|
@ -1,12 +1,12 @@
|
||||
#[repr(i8)]
|
||||
pub enum Ordering {
|
||||
// @is "$.index[*][?(@.name=='Less')].inner.discriminant.expr" '"-1"'
|
||||
// @is "$.index[*][?(@.name=='Less')].inner.discriminant.value" '"-1"'
|
||||
// @is "$.index[*][?(@.name=='Less')].inner.variant.discriminant.expr" '"-1"'
|
||||
// @is "$.index[*][?(@.name=='Less')].inner.variant.discriminant.value" '"-1"'
|
||||
Less = -1,
|
||||
// @is "$.index[*][?(@.name=='Equal')].inner.discriminant.expr" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Equal')].inner.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Equal')].inner.variant.discriminant.expr" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Equal')].inner.variant.discriminant.value" '"0"'
|
||||
Equal = 0,
|
||||
// @is "$.index[*][?(@.name=='Greater')].inner.discriminant.expr" '"1"'
|
||||
// @is "$.index[*][?(@.name=='Greater')].inner.discriminant.value" '"1"'
|
||||
// @is "$.index[*][?(@.name=='Greater')].inner.variant.discriminant.expr" '"1"'
|
||||
// @is "$.index[*][?(@.name=='Greater')].inner.variant.discriminant.value" '"1"'
|
||||
Greater = 1,
|
||||
}
|
||||
|
@ -1,30 +1,30 @@
|
||||
pub enum Foo {
|
||||
// @is "$.index[*][?(@.name=='Addition')].inner.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Addition')].inner.discriminant.expr" '"{ _ }"'
|
||||
// @is "$.index[*][?(@.name=='Addition')].inner.variant.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Addition')].inner.variant.discriminant.expr" '"{ _ }"'
|
||||
Addition = 0 + 0,
|
||||
// @is "$.index[*][?(@.name=='Bin')].inner.discriminant.value" '"1"'
|
||||
// @is "$.index[*][?(@.name=='Bin')].inner.discriminant.expr" '"0b1"'
|
||||
// @is "$.index[*][?(@.name=='Bin')].inner.variant.discriminant.value" '"1"'
|
||||
// @is "$.index[*][?(@.name=='Bin')].inner.variant.discriminant.expr" '"0b1"'
|
||||
Bin = 0b1,
|
||||
// @is "$.index[*][?(@.name=='Oct')].inner.discriminant.value" '"2"'
|
||||
// @is "$.index[*][?(@.name=='Oct')].inner.discriminant.expr" '"0o2"'
|
||||
// @is "$.index[*][?(@.name=='Oct')].inner.variant.discriminant.value" '"2"'
|
||||
// @is "$.index[*][?(@.name=='Oct')].inner.variant.discriminant.expr" '"0o2"'
|
||||
Oct = 0o2,
|
||||
// @is "$.index[*][?(@.name=='PubConst')].inner.discriminant.value" '"3"'
|
||||
// @is "$.index[*][?(@.name=='PubConst')].inner.discriminant.expr" '"THREE"'
|
||||
// @is "$.index[*][?(@.name=='PubConst')].inner.variant.discriminant.value" '"3"'
|
||||
// @is "$.index[*][?(@.name=='PubConst')].inner.variant.discriminant.expr" '"THREE"'
|
||||
PubConst = THREE,
|
||||
// @is "$.index[*][?(@.name=='Hex')].inner.discriminant.value" '"4"'
|
||||
// @is "$.index[*][?(@.name=='Hex')].inner.discriminant.expr" '"0x4"'
|
||||
// @is "$.index[*][?(@.name=='Hex')].inner.variant.discriminant.value" '"4"'
|
||||
// @is "$.index[*][?(@.name=='Hex')].inner.variant.discriminant.expr" '"0x4"'
|
||||
Hex = 0x4,
|
||||
// @is "$.index[*][?(@.name=='Cast')].inner.discriminant.value" '"5"'
|
||||
// @is "$.index[*][?(@.name=='Cast')].inner.discriminant.expr" '"{ _ }"'
|
||||
// @is "$.index[*][?(@.name=='Cast')].inner.variant.discriminant.value" '"5"'
|
||||
// @is "$.index[*][?(@.name=='Cast')].inner.variant.discriminant.expr" '"{ _ }"'
|
||||
Cast = 5 as isize,
|
||||
// @is "$.index[*][?(@.name=='PubCall')].inner.discriminant.value" '"6"'
|
||||
// @is "$.index[*][?(@.name=='PubCall')].inner.discriminant.expr" '"{ _ }"'
|
||||
// @is "$.index[*][?(@.name=='PubCall')].inner.variant.discriminant.value" '"6"'
|
||||
// @is "$.index[*][?(@.name=='PubCall')].inner.variant.discriminant.expr" '"{ _ }"'
|
||||
PubCall = six(),
|
||||
// @is "$.index[*][?(@.name=='PrivCall')].inner.discriminant.value" '"7"'
|
||||
// @is "$.index[*][?(@.name=='PrivCall')].inner.discriminant.expr" '"{ _ }"'
|
||||
// @is "$.index[*][?(@.name=='PrivCall')].inner.variant.discriminant.value" '"7"'
|
||||
// @is "$.index[*][?(@.name=='PrivCall')].inner.variant.discriminant.expr" '"{ _ }"'
|
||||
PrivCall = seven(),
|
||||
// @is "$.index[*][?(@.name=='PrivConst')].inner.discriminant.value" '"8"'
|
||||
// @is "$.index[*][?(@.name=='PrivConst')].inner.discriminant.expr" '"EIGHT"'
|
||||
// @is "$.index[*][?(@.name=='PrivConst')].inner.variant.discriminant.value" '"8"'
|
||||
// @is "$.index[*][?(@.name=='PrivConst')].inner.variant.discriminant.expr" '"EIGHT"'
|
||||
PrivConst = EIGHT,
|
||||
}
|
||||
|
||||
|
@ -4,40 +4,40 @@
|
||||
|
||||
#[repr(u64)]
|
||||
pub enum U64 {
|
||||
// @is "$.index[*][?(@.name=='U64Min')].inner.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='U64Min')].inner.discriminant.expr" '"u64::MIN"'
|
||||
// @is "$.index[*][?(@.name=='U64Min')].inner.variant.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='U64Min')].inner.variant.discriminant.expr" '"u64::MIN"'
|
||||
U64Min = u64::MIN,
|
||||
// @is "$.index[*][?(@.name=='U64Max')].inner.discriminant.value" '"18446744073709551615"'
|
||||
// @is "$.index[*][?(@.name=='U64Max')].inner.discriminant.expr" '"u64::MAX"'
|
||||
// @is "$.index[*][?(@.name=='U64Max')].inner.variant.discriminant.value" '"18446744073709551615"'
|
||||
// @is "$.index[*][?(@.name=='U64Max')].inner.variant.discriminant.expr" '"u64::MAX"'
|
||||
U64Max = u64::MAX,
|
||||
}
|
||||
|
||||
#[repr(i64)]
|
||||
pub enum I64 {
|
||||
// @is "$.index[*][?(@.name=='I64Min')].inner.discriminant.value" '"-9223372036854775808"'
|
||||
// @is "$.index[*][?(@.name=='I64Min')].inner.discriminant.expr" '"i64::MIN"'
|
||||
// @is "$.index[*][?(@.name=='I64Min')].inner.variant.discriminant.value" '"-9223372036854775808"'
|
||||
// @is "$.index[*][?(@.name=='I64Min')].inner.variant.discriminant.expr" '"i64::MIN"'
|
||||
I64Min = i64::MIN,
|
||||
// @is "$.index[*][?(@.name=='I64Max')].inner.discriminant.value" '"9223372036854775807"'
|
||||
// @is "$.index[*][?(@.name=='I64Max')].inner.discriminant.expr" '"i64::MAX"'
|
||||
// @is "$.index[*][?(@.name=='I64Max')].inner.variant.discriminant.value" '"9223372036854775807"'
|
||||
// @is "$.index[*][?(@.name=='I64Max')].inner.variant.discriminant.expr" '"i64::MAX"'
|
||||
I64Max = i64::MAX,
|
||||
}
|
||||
|
||||
#[repr(u128)]
|
||||
pub enum U128 {
|
||||
// @is "$.index[*][?(@.name=='U128Min')].inner.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='U128Min')].inner.discriminant.expr" '"u128::MIN"'
|
||||
// @is "$.index[*][?(@.name=='U128Min')].inner.variant.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='U128Min')].inner.variant.discriminant.expr" '"u128::MIN"'
|
||||
U128Min = u128::MIN,
|
||||
// @is "$.index[*][?(@.name=='U128Max')].inner.discriminant.value" '"340282366920938463463374607431768211455"'
|
||||
// @is "$.index[*][?(@.name=='U128Max')].inner.discriminant.expr" '"u128::MAX"'
|
||||
// @is "$.index[*][?(@.name=='U128Max')].inner.variant.discriminant.value" '"340282366920938463463374607431768211455"'
|
||||
// @is "$.index[*][?(@.name=='U128Max')].inner.variant.discriminant.expr" '"u128::MAX"'
|
||||
U128Max = u128::MAX,
|
||||
}
|
||||
|
||||
#[repr(i128)]
|
||||
pub enum I128 {
|
||||
// @is "$.index[*][?(@.name=='I128Min')].inner.discriminant.value" '"-170141183460469231731687303715884105728"'
|
||||
// @is "$.index[*][?(@.name=='I128Min')].inner.discriminant.expr" '"i128::MIN"'
|
||||
// @is "$.index[*][?(@.name=='I128Min')].inner.variant.discriminant.value" '"-170141183460469231731687303715884105728"'
|
||||
// @is "$.index[*][?(@.name=='I128Min')].inner.variant.discriminant.expr" '"i128::MIN"'
|
||||
I128Min = i128::MIN,
|
||||
// @is "$.index[*][?(@.name=='I128Max')].inner.discriminant.value" '"170141183460469231731687303715884105727"'
|
||||
// @is "$.index[*][?(@.name=='I128Max')].inner.discriminant.expr" '"i128::MAX"'
|
||||
// @is "$.index[*][?(@.name=='I128Max')].inner.variant.discriminant.value" '"170141183460469231731687303715884105727"'
|
||||
// @is "$.index[*][?(@.name=='I128Max')].inner.variant.discriminant.expr" '"i128::MAX"'
|
||||
I128Max = i128::MAX,
|
||||
}
|
||||
|
@ -1,15 +1,17 @@
|
||||
// ignore-tidy-linelength
|
||||
|
||||
#[repr(u32)]
|
||||
pub enum Foo {
|
||||
// @is "$.index[*][?(@.name=='Basic')].inner.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Basic')].inner.discriminant.expr" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Basic')].inner.variant.discriminant.value" '"0"'
|
||||
// @is "$.index[*][?(@.name=='Basic')].inner.variant.discriminant.expr" '"0"'
|
||||
Basic = 0,
|
||||
// @is "$.index[*][?(@.name=='Suffix')].inner.discriminant.value" '"10"'
|
||||
// @is "$.index[*][?(@.name=='Suffix')].inner.discriminant.expr" '"10u32"'
|
||||
// @is "$.index[*][?(@.name=='Suffix')].inner.variant.discriminant.value" '"10"'
|
||||
// @is "$.index[*][?(@.name=='Suffix')].inner.variant.discriminant.expr" '"10u32"'
|
||||
Suffix = 10u32,
|
||||
// @is "$.index[*][?(@.name=='Underscore')].inner.discriminant.value" '"100"'
|
||||
// @is "$.index[*][?(@.name=='Underscore')].inner.discriminant.expr" '"1_0_0"'
|
||||
// @is "$.index[*][?(@.name=='Underscore')].inner.variant.discriminant.value" '"100"'
|
||||
// @is "$.index[*][?(@.name=='Underscore')].inner.variant.discriminant.expr" '"1_0_0"'
|
||||
Underscore = 1_0_0,
|
||||
// @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.discriminant.value" '"1000"'
|
||||
// @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.discriminant.expr" '"1_0_0_0u32"'
|
||||
// @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.variant.discriminant.value" '"1000"'
|
||||
// @is "$.index[*][?(@.name=='SuffixUnderscore')].inner.variant.discriminant.expr" '"1_0_0_0u32"'
|
||||
SuffixUnderscore = 1_0_0_0u32,
|
||||
}
|
||||
|
@ -1,10 +1,12 @@
|
||||
// ignore-tidy-linelength
|
||||
|
||||
pub enum Foo {
|
||||
// @is "$.index[*][?(@.name=='Has')].inner.discriminant" '{"expr":"0", "value":"0"}'
|
||||
// @is "$.index[*][?(@.name=='Has')].inner.variant.discriminant" '{"expr":"0", "value":"0"}'
|
||||
Has = 0,
|
||||
// @is "$.index[*][?(@.name=='Doesnt')].inner.discriminant" null
|
||||
// @is "$.index[*][?(@.name=='Doesnt')].inner.variant.discriminant" null
|
||||
Doesnt,
|
||||
// @is "$.index[*][?(@.name=='AlsoDoesnt')].inner.discriminant" null
|
||||
// @is "$.index[*][?(@.name=='AlsoDoesnt')].inner.variant.discriminant" null
|
||||
AlsoDoesnt,
|
||||
// @is "$.index[*][?(@.name=='AlsoHas')].inner.discriminant" '{"expr":"44", "value":"44"}'
|
||||
// @is "$.index[*][?(@.name=='AlsoHas')].inner.variant.discriminant" '{"expr":"44", "value":"44"}'
|
||||
AlsoHas = 44,
|
||||
}
|
||||
|
@ -3,13 +3,13 @@
|
||||
#[repr(i32)]
|
||||
// @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(i32)]"]'
|
||||
pub enum Foo {
|
||||
// @is "$.index[*][?(@.name=='Struct')].inner.discriminant" null
|
||||
// @count "$.index[*][?(@.name=='Struct')].inner.kind.struct.fields[*]" 0
|
||||
// @is "$.index[*][?(@.name=='Struct')].inner.variant.discriminant" null
|
||||
// @count "$.index[*][?(@.name=='Struct')].inner.variant.kind.struct.fields[*]" 0
|
||||
Struct {},
|
||||
// @is "$.index[*][?(@.name=='StructWithDiscr')].inner.discriminant" '{"expr": "42", "value": "42"}'
|
||||
// @count "$.index[*][?(@.name=='StructWithDiscr')].inner.kind.struct.fields[*]" 1
|
||||
// @is "$.index[*][?(@.name=='StructWithDiscr')].inner.variant.discriminant" '{"expr": "42", "value": "42"}'
|
||||
// @count "$.index[*][?(@.name=='StructWithDiscr')].inner.variant.kind.struct.fields[*]" 1
|
||||
StructWithDiscr { x: i32 } = 42,
|
||||
// @is "$.index[*][?(@.name=='StructWithHexDiscr')].inner.discriminant" '{"expr": "0x42", "value": "66"}'
|
||||
// @count "$.index[*][?(@.name=='StructWithHexDiscr')].inner.kind.struct.fields[*]" 2
|
||||
// @is "$.index[*][?(@.name=='StructWithHexDiscr')].inner.variant.discriminant" '{"expr": "0x42", "value": "66"}'
|
||||
// @count "$.index[*][?(@.name=='StructWithHexDiscr')].inner.variant.kind.struct.fields[*]" 2
|
||||
StructWithHexDiscr { x: i32, y: bool } = 0x42,
|
||||
}
|
||||
|
@ -3,13 +3,13 @@
|
||||
#[repr(u32)]
|
||||
// @is "$.index[*][?(@.name=='Foo')].attrs" '["#[repr(u32)]"]'
|
||||
pub enum Foo {
|
||||
// @is "$.index[*][?(@.name=='Tuple')].inner.discriminant" null
|
||||
// @count "$.index[*][?(@.name=='Tuple')].inner.kind.tuple[*]" 0
|
||||
// @is "$.index[*][?(@.name=='Tuple')].inner.variant.discriminant" null
|
||||
// @count "$.index[*][?(@.name=='Tuple')].inner.variant.kind.tuple[*]" 0
|
||||
Tuple(),
|
||||
// @is "$.index[*][?(@.name=='TupleWithDiscr')].inner.discriminant" '{"expr": "1", "value": "1"}'
|
||||
// @count "$.index[*][?(@.name=='TupleWithDiscr')].inner.kind.tuple[*]" 1
|
||||
// @is "$.index[*][?(@.name=='TupleWithDiscr')].inner.variant.discriminant" '{"expr": "1", "value": "1"}'
|
||||
// @count "$.index[*][?(@.name=='TupleWithDiscr')].inner.variant.kind.tuple[*]" 1
|
||||
TupleWithDiscr(i32) = 1,
|
||||
// @is "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.discriminant" '{"expr": "0b10", "value": "2"}'
|
||||
// @count "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.variant.discriminant" '{"expr": "0b10", "value": "2"}'
|
||||
// @count "$.index[*][?(@.name=='TupleWithBinDiscr')].inner.variant.kind.tuple[*]" 2
|
||||
TupleWithBinDiscr(i32, i32) = 0b10,
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
extern crate color;
|
||||
use color::Color::Red;
|
||||
|
||||
// @set red = "$.index[*][?(@.inner.is_crate == true)].links.Red"
|
||||
// @set red = "$.index[*][?(@.inner.module.is_crate)].links.Red"
|
||||
|
||||
// @!has "$.index[*][?(@.name == 'Red')]"
|
||||
// @!has "$.index[*][?(@.name == 'Color')]"
|
||||
|
@ -5,8 +5,8 @@
|
||||
|
||||
// @has "$.index[*][?(@.name=='ParseError')]"
|
||||
// @has "$.index[*][?(@.name=='UnexpectedEndTag')]"
|
||||
// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.kind.tuple" [null]
|
||||
// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.discriminant" null
|
||||
// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant.kind.tuple" [null]
|
||||
// @is "$.index[*][?(@.name=='UnexpectedEndTag')].inner.variant.discriminant" null
|
||||
|
||||
pub enum ParseError {
|
||||
UnexpectedEndTag(#[doc(hidden)] u32),
|
||||
|
@ -5,28 +5,28 @@
|
||||
|
||||
pub enum Foo {
|
||||
// @set Unit = "$.index[*][?(@.name=='Unit')].id"
|
||||
// @is "$.index[*][?(@.name=='Unit')].inner.kind" '"plain"'
|
||||
// @is "$.index[*][?(@.name=='Unit')].inner.variant.kind" '"plain"'
|
||||
Unit,
|
||||
// @set Named = "$.index[*][?(@.name=='Named')].id"
|
||||
// @is "$.index[*][?(@.name=='Named')].inner.kind.struct" '{"fields": [], "fields_stripped": false}'
|
||||
// @is "$.index[*][?(@.name=='Named')].inner.variant.kind.struct" '{"fields": [], "fields_stripped": false}'
|
||||
Named {},
|
||||
// @set Tuple = "$.index[*][?(@.name=='Tuple')].id"
|
||||
// @is "$.index[*][?(@.name=='Tuple')].inner.kind.tuple" []
|
||||
// @is "$.index[*][?(@.name=='Tuple')].inner.variant.kind.tuple" []
|
||||
Tuple(),
|
||||
// @set NamedField = "$.index[*][?(@.name=='NamedField')].id"
|
||||
// @set x = "$.index[*][?(@.name=='x' && @.kind=='struct_field')].id"
|
||||
// @is "$.index[*][?(@.name=='NamedField')].inner.kind.struct.fields[*]" $x
|
||||
// @is "$.index[*][?(@.name=='NamedField')].inner.kind.struct.fields_stripped" false
|
||||
// @set x = "$.index[*][?(@.name=='x' && @.inner.struct_field)].id"
|
||||
// @is "$.index[*][?(@.name=='NamedField')].inner.variant.kind.struct.fields[*]" $x
|
||||
// @is "$.index[*][?(@.name=='NamedField')].inner.variant.kind.struct.fields_stripped" false
|
||||
NamedField { x: i32 },
|
||||
// @set TupleField = "$.index[*][?(@.name=='TupleField')].id"
|
||||
// @set tup_field = "$.index[*][?(@.name=='0' && @.kind=='struct_field')].id"
|
||||
// @is "$.index[*][?(@.name=='TupleField')].inner.kind.tuple[*]" $tup_field
|
||||
// @set tup_field = "$.index[*][?(@.name=='0' && @.inner.struct_field)].id"
|
||||
// @is "$.index[*][?(@.name=='TupleField')].inner.variant.kind.tuple[*]" $tup_field
|
||||
TupleField(i32),
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.variants[0]" $Unit
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.variants[1]" $Named
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.variants[2]" $Tuple
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.variants[3]" $NamedField
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.variants[4]" $TupleField
|
||||
// @count "$.index[*][?(@.name=='Foo')].inner.variants[*]" 5
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.enum.variants[0]" $Unit
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.enum.variants[1]" $Named
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.enum.variants[2]" $Tuple
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.enum.variants[3]" $NamedField
|
||||
// @is "$.index[*][?(@.name=='Foo')].inner.enum.variants[4]" $TupleField
|
||||
// @count "$.index[*][?(@.name=='Foo')].inner.enum.variants[*]" 5
|
||||
|
@ -9,8 +9,8 @@ pub enum Foo {
|
||||
// @set y = "$.index[*][?(@.name=='y')].id"
|
||||
y: i32,
|
||||
},
|
||||
// @is "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields_stripped" true
|
||||
// @is "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields[0]" $b
|
||||
// @is "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields[1]" $y
|
||||
// @count "$.index[*][?(@.name=='Variant')].inner.kind.struct.fields[*]" 2
|
||||
// @is "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields_stripped" true
|
||||
// @is "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields[0]" $b
|
||||
// @is "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields[1]" $y
|
||||
// @count "$.index[*][?(@.name=='Variant')].inner.variant.kind.struct.fields[*]" 2
|
||||
}
|
||||
|
@ -14,47 +14,47 @@
|
||||
// @set 3.3.1 = "$.index[*][?(@.docs=='3.3.1')].id"
|
||||
|
||||
pub enum EnumWithStrippedTupleVariants {
|
||||
// @count "$.index[*][?(@.name=='None')].inner.kind.tuple[*]" 0
|
||||
// @count "$.index[*][?(@.name=='None')].inner.variant.kind.tuple[*]" 0
|
||||
None(),
|
||||
|
||||
// @count "$.index[*][?(@.name=='One')].inner.kind.tuple[*]" 1
|
||||
// @is "$.index[*][?(@.name=='One')].inner.kind.tuple[0]" $1.1.0
|
||||
// @count "$.index[*][?(@.name=='One')].inner.variant.kind.tuple[*]" 1
|
||||
// @is "$.index[*][?(@.name=='One')].inner.variant.kind.tuple[0]" $1.1.0
|
||||
One(/** 1.1.0*/ bool),
|
||||
// @count "$.index[*][?(@.name=='OneHidden')].inner.kind.tuple[*]" 1
|
||||
// @is "$.index[*][?(@.name=='OneHidden')].inner.kind.tuple[0]" null
|
||||
// @count "$.index[*][?(@.name=='OneHidden')].inner.variant.kind.tuple[*]" 1
|
||||
// @is "$.index[*][?(@.name=='OneHidden')].inner.variant.kind.tuple[0]" null
|
||||
OneHidden(#[doc(hidden)] bool),
|
||||
|
||||
// @count "$.index[*][?(@.name=='Two')].inner.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='Two')].inner.kind.tuple[0]" $2.1.0
|
||||
// @is "$.index[*][?(@.name=='Two')].inner.kind.tuple[1]" $2.1.1
|
||||
// @count "$.index[*][?(@.name=='Two')].inner.variant.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='Two')].inner.variant.kind.tuple[0]" $2.1.0
|
||||
// @is "$.index[*][?(@.name=='Two')].inner.variant.kind.tuple[1]" $2.1.1
|
||||
Two(/** 2.1.0*/ bool, /** 2.1.1*/ bool),
|
||||
// @count "$.index[*][?(@.name=='TwoLeftHidden')].inner.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TwoLeftHidden')].inner.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='TwoLeftHidden')].inner.kind.tuple[1]" $2.2.1
|
||||
// @count "$.index[*][?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='TwoLeftHidden')].inner.variant.kind.tuple[1]" $2.2.1
|
||||
TwoLeftHidden(#[doc(hidden)] bool, /** 2.2.1*/ bool),
|
||||
// @count "$.index[*][?(@.name=='TwoRightHidden')].inner.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TwoRightHidden')].inner.kind.tuple[0]" $2.3.0
|
||||
// @is "$.index[*][?(@.name=='TwoRightHidden')].inner.kind.tuple[1]" null
|
||||
// @count "$.index[*][?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[0]" $2.3.0
|
||||
// @is "$.index[*][?(@.name=='TwoRightHidden')].inner.variant.kind.tuple[1]" null
|
||||
TwoRightHidden(/** 2.3.0*/ bool, #[doc(hidden)] bool),
|
||||
// @count "$.index[*][?(@.name=='TwoBothHidden')].inner.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TwoBothHidden')].inner.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='TwoBothHidden')].inner.kind.tuple[1]" null
|
||||
// @count "$.index[*][?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[*]" 2
|
||||
// @is "$.index[*][?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='TwoBothHidden')].inner.variant.kind.tuple[1]" null
|
||||
TwoBothHidden(#[doc(hidden)] bool, #[doc(hidden)] bool),
|
||||
|
||||
// @count "$.index[*][?(@.name=='Three1')].inner.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Three1')].inner.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='Three1')].inner.kind.tuple[1]" $3.1.1
|
||||
// @is "$.index[*][?(@.name=='Three1')].inner.kind.tuple[2]" $3.1.2
|
||||
// @count "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[1]" $3.1.1
|
||||
// @is "$.index[*][?(@.name=='Three1')].inner.variant.kind.tuple[2]" $3.1.2
|
||||
Three1(#[doc(hidden)] bool, /** 3.1.1*/ bool, /** 3.1.2*/ bool),
|
||||
// @count "$.index[*][?(@.name=='Three2')].inner.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Three2')].inner.kind.tuple[0]" $3.2.0
|
||||
// @is "$.index[*][?(@.name=='Three2')].inner.kind.tuple[1]" null
|
||||
// @is "$.index[*][?(@.name=='Three2')].inner.kind.tuple[2]" $3.2.2
|
||||
// @count "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[0]" $3.2.0
|
||||
// @is "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[1]" null
|
||||
// @is "$.index[*][?(@.name=='Three2')].inner.variant.kind.tuple[2]" $3.2.2
|
||||
Three2(/** 3.2.0*/ bool, #[doc(hidden)] bool, /** 3.2.2*/ bool),
|
||||
// @count "$.index[*][?(@.name=='Three3')].inner.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Three3')].inner.kind.tuple[0]" $3.3.0
|
||||
// @is "$.index[*][?(@.name=='Three3')].inner.kind.tuple[1]" $3.3.1
|
||||
// @is "$.index[*][?(@.name=='Three3')].inner.kind.tuple[2]" null
|
||||
// @count "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[0]" $3.3.0
|
||||
// @is "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[1]" $3.3.1
|
||||
// @is "$.index[*][?(@.name=='Three3')].inner.variant.kind.tuple[2]" null
|
||||
Three3(/** 3.3.0*/ bool, /** 3.3.1*/ bool, #[doc(hidden)] bool),
|
||||
}
|
||||
|
||||
@ -70,14 +70,14 @@ pub enum EnumWithStrippedTupleVariants {
|
||||
// @is "$.index[*][?(@.docs=='3.3.0')].name" '"0"'
|
||||
// @is "$.index[*][?(@.docs=='3.3.1')].name" '"1"'
|
||||
|
||||
// @is "$.index[*][?(@.docs=='1.1.0')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.1.0')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.1.1')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.2.1')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.3.0')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.1.1')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.1.2')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.2.0')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.2.2')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.3.0')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.3.1')].inner" '{"kind": "primitive", "inner": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='1.1.0')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.1.0')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.1.1')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.2.1')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='2.3.0')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.1.1')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.1.2')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.2.0')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.2.2')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.3.0')].inner.struct_field" '{"primitive": "bool"}'
|
||||
// @is "$.index[*][?(@.docs=='3.3.1')].inner.struct_field" '{"primitive": "bool"}'
|
||||
|
@ -10,9 +10,9 @@ pub enum Color {
|
||||
Blue,
|
||||
}
|
||||
|
||||
// @set use_Color = "$.index[*][?(@.kind == 'import')].id"
|
||||
// @is "$.index[*][?(@.kind == 'import')].inner.id" $Color
|
||||
// @is "$.index[*][?(@.kind == 'import')].inner.glob" true
|
||||
// @set use_Color = "$.index[*][?(@.inner.import)].id"
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.id" $Color
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.glob" true
|
||||
pub use Color::*;
|
||||
|
||||
// @ismany "$.index[*][?(@.name == 'use_glob')].inner.items[*]" $Color $use_Color
|
||||
// @ismany "$.index[*][?(@.name == 'use_glob')].inner.module.items[*]" $Color $use_Color
|
||||
|
@ -6,10 +6,10 @@ pub enum AlwaysNone {
|
||||
// @set None = "$.index[*][?(@.name == 'None')].id"
|
||||
None,
|
||||
}
|
||||
// @is "$.index[*][?(@.name == 'AlwaysNone')].inner.variants[*]" $None
|
||||
// @is "$.index[*][?(@.name == 'AlwaysNone')].inner.enum.variants[*]" $None
|
||||
|
||||
// @set use_None = "$.index[*][?(@.kind == 'import')].id"
|
||||
// @is "$.index[*][?(@.kind == 'import')].inner.id" $None
|
||||
// @set use_None = "$.index[*][?(@.inner.import)].id"
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.id" $None
|
||||
pub use AlwaysNone::None;
|
||||
|
||||
// @ismany "$.index[*][?(@.name == 'use_variant')].inner.items[*]" $AlwaysNone $use_None
|
||||
// @ismany "$.index[*][?(@.name == 'use_variant')].inner.module.items[*]" $AlwaysNone $use_None
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
extern crate color;
|
||||
|
||||
// @is "$.index[*][?(@.inner.name == 'Red')].kind" '"import"'
|
||||
// @has "$.index[*].inner.import[?(@.name == 'Red')]"
|
||||
pub use color::Color::Red;
|
||||
|
||||
// @!has "$.index[*][?(@.name == 'Red')]"
|
||||
|
@ -1,10 +1,10 @@
|
||||
// @is "$.index[*][?(@.name=='EnumStruct')].visibility" \"public\"
|
||||
// @is "$.index[*][?(@.name=='EnumStruct')].kind" \"enum\"
|
||||
// @has "$.index[*][?(@.name=='EnumStruct')].inner.enum"
|
||||
pub enum EnumStruct {
|
||||
// @is "$.index[*][?(@.name=='x')].kind" \"struct_field\"
|
||||
// @has "$.index[*][?(@.name=='x')].inner.struct_field"
|
||||
// @set x = "$.index[*][?(@.name=='x')].id"
|
||||
// @is "$.index[*][?(@.name=='y')].kind" \"struct_field\"
|
||||
// @has "$.index[*][?(@.name=='y')].inner.struct_field"
|
||||
// @set y = "$.index[*][?(@.name=='y')].id"
|
||||
// @ismany "$.index[*][?(@.name=='VariantS')].inner.kind.struct.fields[*]" $x $y
|
||||
// @ismany "$.index[*][?(@.name=='VariantS')].inner.variant.kind.struct.fields[*]" $x $y
|
||||
VariantS { x: u32, y: String },
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
// @is "$.index[*][?(@.name=='EnumTupleStruct')].visibility" \"public\"
|
||||
// @is "$.index[*][?(@.name=='EnumTupleStruct')].kind" \"enum\"
|
||||
// @has "$.index[*][?(@.name=='EnumTupleStruct')].inner.enum"
|
||||
pub enum EnumTupleStruct {
|
||||
// @is "$.index[*][?(@.name=='0')].kind" \"struct_field\"
|
||||
// @has "$.index[*][?(@.name=='0')].inner.struct_field"
|
||||
// @set f0 = "$.index[*][?(@.name=='0')].id"
|
||||
// @is "$.index[*][?(@.name=='1')].kind" \"struct_field\"
|
||||
// @has "$.index[*][?(@.name=='1')].inner.struct_field"
|
||||
// @set f1 = "$.index[*][?(@.name=='1')].id"
|
||||
// @ismany "$.index[*][?(@.name=='VariantA')].inner.kind.tuple[*]" $f0 $f1
|
||||
// @ismany "$.index[*][?(@.name=='VariantA')].inner.variant.kind.tuple[*]" $f0 $f1
|
||||
VariantA(u32, String),
|
||||
}
|
||||
|
@ -2,23 +2,23 @@
|
||||
|
||||
#![feature(abi_vectorcall)]
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiRust')].inner.type.inner.header.abi" \"Rust\"
|
||||
// @is "$.index[*][?(@.name=='AbiRust')].inner.typedef.type.function_pointer.header.abi" \"Rust\"
|
||||
pub type AbiRust = fn();
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiC')].inner.type.inner.header.abi" '{"C": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='AbiC')].inner.typedef.type.function_pointer.header.abi" '{"C": {"unwind": false}}'
|
||||
pub type AbiC = extern "C" fn();
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiSystem')].inner.type.inner.header.abi" '{"System": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='AbiSystem')].inner.typedef.type.function_pointer.header.abi" '{"System": {"unwind": false}}'
|
||||
pub type AbiSystem = extern "system" fn();
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiCUnwind')].inner.type.inner.header.abi" '{"C": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='AbiCUnwind')].inner.typedef.type.function_pointer.header.abi" '{"C": {"unwind": true}}'
|
||||
pub type AbiCUnwind = extern "C-unwind" fn();
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiSystemUnwind')].inner.type.inner.header.abi" '{"System": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='AbiSystemUnwind')].inner.typedef.type.function_pointer.header.abi" '{"System": {"unwind": true}}'
|
||||
pub type AbiSystemUnwind = extern "system-unwind" fn();
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiVecorcall')].inner.type.inner.header.abi.Other" '"\"vectorcall\""'
|
||||
// @is "$.index[*][?(@.name=='AbiVecorcall')].inner.typedef.type.function_pointer.header.abi.Other" '"\"vectorcall\""'
|
||||
pub type AbiVecorcall = extern "vectorcall" fn();
|
||||
|
||||
// @is "$.index[*][?(@.name=='AbiVecorcallUnwind')].inner.type.inner.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
// @is "$.index[*][?(@.name=='AbiVecorcallUnwind')].inner.typedef.type.function_pointer.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
pub type AbiVecorcallUnwind = extern "vectorcall-unwind" fn();
|
||||
|
@ -3,12 +3,11 @@
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
// @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][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.output" '{ "kind": "primitive", "inner": "i32" }'
|
||||
// @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].kind" '{ "lifetime": { "outlives": [] } }'
|
||||
// @count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.inputs[*]" 1
|
||||
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.inputs[0][0]" '"val"'
|
||||
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.inputs[0][1].borrowed_ref.lifetime" \"\'c\"
|
||||
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.decl.output.primitive" \"i32\"
|
||||
// @count "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.generic_params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.generic_params[0].name" \"\'c\"
|
||||
// @is "$.index[*][?(@.name=='WithHigherRankTraitBounds')].inner.typedef.type.function_pointer.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }'
|
||||
pub type WithHigherRankTraitBounds = for<'c> fn(val: &'c i32) -> i32;
|
||||
|
@ -1,9 +1,11 @@
|
||||
// @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.async" false
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// @is "$.index[*][?(@.name=='FnPointer')].inner.typedef.type.function_pointer.header.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='FnPointer')].inner.typedef.type.function_pointer.header.const" false
|
||||
// @is "$.index[*][?(@.name=='FnPointer')].inner.typedef.type.function_pointer.header.async" false
|
||||
pub type FnPointer = fn();
|
||||
|
||||
// @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.async" false
|
||||
// @is "$.index[*][?(@.name=='UnsafePointer')].inner.typedef.type.function_pointer.header.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='UnsafePointer')].inner.typedef.type.function_pointer.header.const" false
|
||||
// @is "$.index[*][?(@.name=='UnsafePointer')].inner.typedef.type.function_pointer.header.async" false
|
||||
pub type UnsafePointer = unsafe fn();
|
||||
|
@ -2,23 +2,23 @@
|
||||
|
||||
#![feature(abi_vectorcall)]
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_rust')].inner.header.abi" \"Rust\"
|
||||
// @is "$.index[*][?(@.name=='abi_rust')].inner.function.header.abi" \"Rust\"
|
||||
pub fn abi_rust() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_c')].inner.header.abi" '{"C": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}'
|
||||
pub extern "C" fn abi_c() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_system')].inner.header.abi" '{"System": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}'
|
||||
pub extern "system" fn abi_system() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_c_unwind')].inner.header.abi" '{"C": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}'
|
||||
pub extern "C-unwind" fn abi_c_unwind() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_system_unwind')].inner.header.abi" '{"System": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}'
|
||||
pub extern "system-unwind" fn abi_system_unwind() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall')].inner.header.abi.Other" '"\"vectorcall\""'
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""'
|
||||
pub extern "vectorcall" fn abi_vectorcall() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {}
|
||||
|
@ -5,32 +5,30 @@
|
||||
|
||||
use std::future::Future;
|
||||
|
||||
// @is "$.index[*][?(@.name=='get_int')].inner.decl.output" '{"inner": "i32", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='get_int')].inner.header.async" false
|
||||
// @is "$.index[*][?(@.name=='get_int')].inner.function.decl.output.primitive" \"i32\"
|
||||
// @is "$.index[*][?(@.name=='get_int')].inner.function.header.async" false
|
||||
pub fn get_int() -> i32 {
|
||||
42
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.name=='get_int_async')].inner.decl.output" '{"inner": "i32", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='get_int_async')].inner.header.async" true
|
||||
// @is "$.index[*][?(@.name=='get_int_async')].inner.function.decl.output.primitive" \"i32\"
|
||||
// @is "$.index[*][?(@.name=='get_int_async')].inner.function.header.async" true
|
||||
pub async fn get_int_async() -> i32 {
|
||||
42
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.kind" '"impl_trait"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.inner[0].trait_bound.trait.name" '"Future"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type" '{"inner": "i32", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.header.async" false
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.function.decl.output.impl_trait[0].trait_bound.trait.name" '"Future"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type.primitive" \"i32\"
|
||||
// @is "$.index[*][?(@.name=='get_int_future')].inner.function.header.async" false
|
||||
pub fn get_int_future() -> impl Future<Output = i32> {
|
||||
async { 42 }
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.kind" '"impl_trait"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.inner[0].trait_bound.trait.name" '"Future"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.decl.output.inner[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type" '{"inner": "i32", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.header.async" true
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.decl.output.impl_trait[0].trait_bound.trait.name" '"Future"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].name" '"Output"'
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.decl.output.impl_trait[0].trait_bound.trait.args.angle_bracketed.bindings[0].binding.equality.type.primitive" \"i32\"
|
||||
// @is "$.index[*][?(@.name=='get_int_future_async')].inner.function.header.async" true
|
||||
pub async fn get_int_future_async() -> impl Future<Output = i32> {
|
||||
async { 42 }
|
||||
}
|
||||
|
@ -2,8 +2,8 @@
|
||||
#![no_core]
|
||||
|
||||
extern "C" {
|
||||
// @is "$.index[*][?(@.name == 'not_variadic')].inner.decl.c_variadic" false
|
||||
// @is "$.index[*][?(@.name == 'not_variadic')].inner.function.decl.c_variadic" false
|
||||
pub fn not_variadic(_: i32);
|
||||
// @is "$.index[*][?(@.name == 'variadic')].inner.decl.c_variadic" true
|
||||
// @is "$.index[*][?(@.name == 'variadic')].inner.function.decl.c_variadic" true
|
||||
pub fn variadic(_: i32, ...);
|
||||
}
|
||||
|
@ -9,59 +9,55 @@ pub trait Foo {}
|
||||
// @set generic_foo = "$.index[*][?(@.name=='GenericFoo')].id"
|
||||
pub trait GenericFoo<'a> {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.generics.where_predicates" "[]"
|
||||
// @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].kind.type.default" 'null'
|
||||
// @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'
|
||||
// @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][1].kind" '"generic"'
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.decl.inputs[0][1].inner" '"F"'
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.function.generics.where_predicates" "[]"
|
||||
// @count "$.index[*][?(@.name=='generics')].inner.function.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].name" '"F"'
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].kind.type.default" 'null'
|
||||
// @count "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].kind.type.bounds[*]" 1
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" '$foo'
|
||||
// @count "$.index[*][?(@.name=='generics')].inner.function.decl.inputs[*]" 1
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.function.decl.inputs[0][0]" '"f"'
|
||||
// @is "$.index[*][?(@.name=='generics')].inner.function.decl.inputs[0][1].generic" '"F"'
|
||||
pub fn generics<F: Foo>(f: F) {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='impl_trait')].inner.generics.where_predicates" "[]"
|
||||
// @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].kind.type.bounds[0].trait_bound.trait.id" $foo
|
||||
// @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][1].kind" '"impl_trait"'
|
||||
// @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.function.generics.where_predicates" "[]"
|
||||
// @count "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[0].name" '"impl Foo"'
|
||||
// @is "$.index[*][?(@.name=='impl_trait')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $foo
|
||||
// @count "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[*]" 1
|
||||
// @is "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[0][0]" '"f"'
|
||||
// @count "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[0][1].impl_trait[*]" 1
|
||||
// @is "$.index[*][?(@.name=='impl_trait')].inner.function.decl.inputs[0][1].impl_trait[0].trait_bound.trait.id" $foo
|
||||
pub fn impl_trait(f: impl Foo) {}
|
||||
|
||||
// @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].kind" '{"type": {"bounds": [], "default": null, "synthetic": false}}'
|
||||
// @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][1].kind" '"generic"'
|
||||
// @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.function.generics.params[*]" 3
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[0].name" '"F"'
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.params[0].kind" '{"type": {"bounds": [], "default": null, "synthetic": false}}'
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.decl.inputs[*]" 3
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.decl.inputs[0][0]" '"f"'
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.decl.inputs[0][1].generic" '"F"'
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[*]" 3
|
||||
|
||||
// @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
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.generics.where_predicates[0].bound_predicate.bounds[0].trait_bound.trait.id" $foo
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.type.generic" \"F\"
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.bounds[*]" 1
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[0].bound_predicate.bounds[0].trait_bound.trait.id" $foo
|
||||
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.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
|
||||
// @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
|
||||
// @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.generic_params" "[]"
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.type.generic" \"G\"
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[*]" 1
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.trait.id" $generic_foo
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[0].name" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.bounds[0].trait_bound.generic_params[0].kind.lifetime.outlives" "[]"
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[1].bound_predicate.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.inner.lifetime" \"\'b\"
|
||||
// @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
|
||||
// @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" "[]"
|
||||
// @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].kind" '{ "lifetime": { "outlives": [] } }'
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.lifetime" \"\'b\"
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.type.borrowed_ref.type.generic" \"H\"
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[*]" 1
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[0].trait_bound.trait.id" $foo
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.bounds[0].trait_bound.generic_params" "[]"
|
||||
// @count "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[0].name" \"\'b\"
|
||||
// @is "$.index[*][?(@.name=='where_clase')].inner.function.generics.where_predicates[2].bound_predicate.generic_params[0].kind.lifetime.outlives" "[]"
|
||||
pub fn where_clase<F, G, H>(f: F, g: G, h: H)
|
||||
where
|
||||
F: Foo,
|
||||
|
@ -3,15 +3,14 @@
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
// @count "$.index[*][?(@.name=='generic_returns')].inner.items[*]" 2
|
||||
// @count "$.index[*][?(@.name=='generic_returns')].inner.module.items[*]" 2
|
||||
|
||||
// @set foo = "$.index[*][?(@.name=='Foo')].id"
|
||||
pub trait Foo {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='get_foo')].inner.decl.inputs" []
|
||||
// @is "$.index[*][?(@.name=='get_foo')].inner.decl.output.kind" '"impl_trait"'
|
||||
// @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.function.decl.inputs" []
|
||||
// @count "$.index[*][?(@.name=='get_foo')].inner.function.decl.output.impl_trait[*]" 1
|
||||
// @is "$.index[*][?(@.name=='get_foo')].inner.function.decl.output.impl_trait[0].trait_bound.trait.id" $foo
|
||||
pub fn get_foo() -> impl Foo {
|
||||
Fooer {}
|
||||
}
|
||||
|
@ -6,21 +6,20 @@
|
||||
// @set wham_id = "$.index[*][?(@.name=='Wham')].id"
|
||||
pub trait Wham {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.where_predicates" []
|
||||
// @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].kind.type.synthetic" false
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.decl.inputs" '[["w", {"inner": "T", "kind": "generic"}]]'
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.where_predicates" []
|
||||
// @count "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].name" '"T"'
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.synthetic" false
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id
|
||||
// @is "$.index[*][?(@.name=='one_generic_param_fn')].inner.function.decl.inputs" '[["w", {"generic": "T"}]]'
|
||||
pub fn one_generic_param_fn<T: Wham>(w: T) {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.generics.where_predicates" []
|
||||
// @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].kind.type.synthetic" true
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id
|
||||
// @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][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.function.generics.where_predicates" []
|
||||
// @count "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].name" '"impl Wham"'
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.synthetic" true
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.generics.params[0].kind.type.bounds[0].trait_bound.trait.id" $wham_id
|
||||
// @count "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.decl.inputs[*]" 1
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.decl.inputs[0][0]" '"w"'
|
||||
// @is "$.index[*][?(@.name=='one_synthetic_generic_param_fn')].inner.function.decl.inputs[0][1].impl_trait[0].trait_bound.trait.id" $wham_id
|
||||
pub fn one_synthetic_generic_param_fn(w: impl Wham) {}
|
||||
|
@ -1,7 +1,7 @@
|
||||
// @is "$.index[*][?(@.name=='fst')].inner.decl.inputs[0][0]" '"(x, _)"'
|
||||
// @is "$.index[*][?(@.name=='fst')].inner.function.decl.inputs[0][0]" '"(x, _)"'
|
||||
pub fn fst<X, Y>((x, _): (X, Y)) -> X {
|
||||
x
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.name=='drop_int')].inner.decl.inputs[0][0]" '"_"'
|
||||
// @is "$.index[*][?(@.name=='drop_int')].inner.function.decl.inputs[0][0]" '"_"'
|
||||
pub fn drop_int(_: i32) {}
|
||||
|
@ -1,33 +1,33 @@
|
||||
// edition:2018
|
||||
|
||||
// @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.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='nothing_fn')].inner.function.header.unsafe" false
|
||||
pub fn nothing_fn() {}
|
||||
|
||||
// @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.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='unsafe_fn')].inner.function.header.unsafe" true
|
||||
pub unsafe fn unsafe_fn() {}
|
||||
|
||||
// @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.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='const_fn')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='const_fn')].inner.function.header.const" true
|
||||
// @is "$.index[*][?(@.name=='const_fn')].inner.function.header.unsafe" false
|
||||
pub const fn const_fn() {}
|
||||
|
||||
// @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.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='async_fn')].inner.function.header.async" true
|
||||
// @is "$.index[*][?(@.name=='async_fn')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='async_fn')].inner.function.header.unsafe" false
|
||||
pub async fn async_fn() {}
|
||||
|
||||
// @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.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.async" true
|
||||
// @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='async_unsafe_fn')].inner.function.header.unsafe" true
|
||||
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.const" true
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.header.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.const" true
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_fn')].inner.function.header.unsafe" true
|
||||
pub const unsafe fn const_unsafe_fn() {}
|
||||
|
||||
// It's impossible for a function to be both const and async, so no test for that
|
||||
|
@ -3,8 +3,7 @@
|
||||
/// @set foo = "$.index[*][?(@.name=='Foo')].id"
|
||||
pub type Foo = i32;
|
||||
|
||||
// @is "$.index[*][?(@.name=='demo')].inner.decl.output.kind" '"resolved_path"'
|
||||
// @is "$.index[*][?(@.name=='demo')].inner.decl.output.inner.id" $foo
|
||||
// @is "$.index[*][?(@.name=='demo')].inner.function.decl.output.resolved_path.id" $foo
|
||||
pub fn demo() -> Foo {
|
||||
42
|
||||
}
|
||||
|
@ -9,34 +9,32 @@ pub trait Sized {}
|
||||
pub trait Display {}
|
||||
|
||||
pub trait LendingIterator {
|
||||
// @count "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='LendingItem')].inner.generics.params[*].name" \"\'a\"
|
||||
// @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.bounds[*].outlives" \"\'a\"
|
||||
// @count "$.index[*][?(@.name=='LendingItem')].inner.bounds[*]" 1
|
||||
// @count "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.params[*].name" \"\'a\"
|
||||
// @count "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*]" 1
|
||||
// @is "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*].bound_predicate.type.generic" \"Self\"
|
||||
// @is "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.generics.where_predicates[*].bound_predicate.bounds[*].outlives" \"\'a\"
|
||||
// @count "$.index[*][?(@.name=='LendingItem')].inner.assoc_type.bounds[*]" 1
|
||||
type LendingItem<'a>: Display
|
||||
where
|
||||
Self: 'a;
|
||||
|
||||
// @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.bindings[*]" 0
|
||||
// @is "$.index[*][?(@.name=='lending_next')].inner.decl.output.inner.self_type.inner" \"Self\"
|
||||
// @is "$.index[*][?(@.name=='lending_next')].inner.decl.output.inner.name" \"LendingItem\"
|
||||
// @count "$.index[*][?(@.name=='lending_next')].inner.function.decl.output.qualified_path.args.angle_bracketed.args[*]" 1
|
||||
// @count "$.index[*][?(@.name=='lending_next')].inner.function.decl.output.qualified_path.args.angle_bracketed.bindings[*]" 0
|
||||
// @is "$.index[*][?(@.name=='lending_next')].inner.function.decl.output.qualified_path.self_type.generic" \"Self\"
|
||||
// @is "$.index[*][?(@.name=='lending_next')].inner.function.decl.output.qualified_path.name" \"LendingItem\"
|
||||
fn lending_next<'a>(&'a self) -> Self::LendingItem<'a>;
|
||||
}
|
||||
|
||||
pub trait Iterator {
|
||||
// @count "$.index[*][?(@.name=='Item')].inner.generics.params[*]" 0
|
||||
// @count "$.index[*][?(@.name=='Item')].inner.generics.where_predicates[*]" 0
|
||||
// @count "$.index[*][?(@.name=='Item')].inner.bounds[*]" 1
|
||||
// @count "$.index[*][?(@.name=='Item')].inner.assoc_type.generics.params[*]" 0
|
||||
// @count "$.index[*][?(@.name=='Item')].inner.assoc_type.generics.where_predicates[*]" 0
|
||||
// @count "$.index[*][?(@.name=='Item')].inner.assoc_type.bounds[*]" 1
|
||||
type Item: Display;
|
||||
|
||||
// @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.bindings[*]" 0
|
||||
// @is "$.index[*][?(@.name=='next')].inner.decl.output.inner.self_type.inner" \"Self\"
|
||||
// @is "$.index[*][?(@.name=='next')].inner.decl.output.inner.name" \"Item\"
|
||||
// @count "$.index[*][?(@.name=='next')].inner.function.decl.output.qualified_path.args.angle_bracketed.args[*]" 0
|
||||
// @count "$.index[*][?(@.name=='next')].inner.function.decl.output.qualified_path.args.angle_bracketed.bindings[*]" 0
|
||||
// @is "$.index[*][?(@.name=='next')].inner.function.decl.output.qualified_path.self_type.generic" \"Self\"
|
||||
// @is "$.index[*][?(@.name=='next')].inner.function.decl.output.qualified_path.name" \"Item\"
|
||||
fn next<'a>(&'a self) -> Self::Item;
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
#![no_core]
|
||||
|
||||
// @has "$.index[*][?(@.name=='glob')]"
|
||||
// @has "$.index[*][?(@.kind=='import')].inner.name" \"*\"
|
||||
// @has "$.index[*][?(@.inner.import)].inner.import.name" \"*\"
|
||||
|
||||
|
||||
mod m1 {
|
||||
|
@ -12,7 +12,8 @@ impl Foo {
|
||||
}
|
||||
|
||||
// Testing spans, so all tests below code
|
||||
// @is "$.index[*][?(@.kind=='impl' && @.inner.synthetic==true)].span" null
|
||||
// @is "$.index[*][?(@.docs=='has span')].span.begin" "[10, 0]"
|
||||
// @is "$.index[*][?(@.docs=='has span')].span.end" "[12, 1]"
|
||||
// FIXME: this doesn't work due to https://github.com/freestrings/jsonpath/issues/91
|
||||
// is "$.index[*][?(@.inner.impl.synthetic==true)].span" null
|
||||
pub struct Foo;
|
||||
|
@ -3,7 +3,7 @@ extern crate foreign_trait;
|
||||
|
||||
/// ForeignTrait id hack
|
||||
pub use foreign_trait::ForeignTrait as _;
|
||||
// @set ForeignTrait = "$.index[*][?(@.docs=='ForeignTrait id hack')].inner.id"
|
||||
// @set ForeignTrait = "$.index[*][?(@.docs=='ForeignTrait id hack')].inner.import.id"
|
||||
|
||||
pub struct LocalStruct;
|
||||
// @set LocalStruct = "$.index[*][?(@.name=='LocalStruct')].id"
|
||||
@ -12,7 +12,7 @@ pub struct LocalStruct;
|
||||
impl foreign_trait::ForeignTrait for LocalStruct {}
|
||||
|
||||
// @set impl = "$.index[*][?(@.docs=='foreign for local')].id"
|
||||
// @is "$.index[*][?(@.docs=='foreign for local')].inner.for.inner.id" $LocalStruct
|
||||
// @is "$.index[*][?(@.docs=='foreign for local')].inner.trait.id" $ForeignTrait
|
||||
// @is "$.index[*][?(@.docs=='foreign for local')].inner.impl.for.resolved_path.id" $LocalStruct
|
||||
// @is "$.index[*][?(@.docs=='foreign for local')].inner.impl.trait.id" $ForeignTrait
|
||||
|
||||
// @has "$.index[*][?(@.name=='LocalStruct')].inner.impls[*]" $impl
|
||||
// @has "$.index[*][?(@.name=='LocalStruct')].inner.struct.impls[*]" $impl
|
||||
|
@ -4,19 +4,19 @@
|
||||
#![no_core]
|
||||
|
||||
mod bar {
|
||||
// @set baz = "$.index[*][?(@.kind=='struct')].id"
|
||||
// @set baz = "$.index[*][?(@.inner.struct)].id"
|
||||
pub struct Baz;
|
||||
// @set impl = "$.index[*][?(@.kind=='impl')].id"
|
||||
// @set impl = "$.index[*][?(@.inner.impl)].id"
|
||||
impl Baz {
|
||||
// @set doit = "$.index[*][?(@.kind=='function')].id"
|
||||
// @set doit = "$.index[*][?(@.inner.function)].id"
|
||||
pub fn doit() {}
|
||||
}
|
||||
}
|
||||
|
||||
// @set import = "$.index[*][?(@.kind=='import')].id"
|
||||
// @set import = "$.index[*][?(@.inner.import)].id"
|
||||
pub use bar::Baz;
|
||||
|
||||
// @is "$.index[*][?(@.kind=='module')].inner.items[*]" $import
|
||||
// @is "$.index[*][?(@.kind=='import')].inner.id" $baz
|
||||
// @is "$.index[*][?(@.kind=='struct')].inner.impls[*]" $impl
|
||||
// @is "$.index[*][?(@.kind=='impl')].inner.items[*]" $doit
|
||||
// @is "$.index[*].inner.module.items[*]" $import
|
||||
// @is "$.index[*].inner.import.id" $baz
|
||||
// @is "$.index[*].inner.struct.impls[*]" $impl
|
||||
// @is "$.index[*].inner.impl.items[*]" $doit
|
||||
|
@ -3,7 +3,7 @@ extern crate foreign_struct;
|
||||
|
||||
/// ForeignStruct id hack
|
||||
pub use foreign_struct::ForeignStruct as _;
|
||||
// @set ForeignStruct = "$.index[*][?(@.docs=='ForeignStruct id hack')].inner.id"
|
||||
// @set ForeignStruct = "$.index[*][?(@.docs=='ForeignStruct id hack')].inner.import.id"
|
||||
|
||||
pub trait LocalTrait {}
|
||||
// @set LocalTrait = "$.index[*][?(@.name=='LocalTrait')].id"
|
||||
@ -12,7 +12,7 @@ pub trait LocalTrait {}
|
||||
impl LocalTrait for foreign_struct::ForeignStruct {}
|
||||
|
||||
// @set impl = "$.index[*][?(@.docs=='local for foreign')].id"
|
||||
// @is "$.index[*][?(@.docs=='local for foreign')].inner.trait.id" $LocalTrait
|
||||
// @is "$.index[*][?(@.docs=='local for foreign')].inner.for.inner.id" $ForeignStruct
|
||||
// @is "$.index[*][?(@.docs=='local for foreign')].inner.impl.trait.id" $LocalTrait
|
||||
// @is "$.index[*][?(@.docs=='local for foreign')].inner.impl.for.resolved_path.id" $ForeignStruct
|
||||
|
||||
// @is "$.index[*][?(@.name=='LocalTrait')].inner.implementations[*]" $impl
|
||||
// @is "$.index[*][?(@.name=='LocalTrait')].inner.trait.implementations[*]" $impl
|
||||
|
@ -9,7 +9,7 @@ pub trait Trait {}
|
||||
/// impl
|
||||
impl Trait for Struct {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='Struct')].inner.impls[*]" $impl
|
||||
// @is "$.index[*][?(@.name=='Trait')].inner.implementations[*]" $impl
|
||||
// @is "$.index[*][?(@.docs=='impl')].inner.trait.id" $trait
|
||||
// @is "$.index[*][?(@.docs=='impl')].inner.for.inner.id" $struct
|
||||
// @is "$.index[*][?(@.name=='Struct')].inner.struct.impls[*]" $impl
|
||||
// @is "$.index[*][?(@.name=='Trait')].inner.trait.implementations[*]" $impl
|
||||
// @is "$.index[*][?(@.docs=='impl')].inner.impl.trait.id" $trait
|
||||
// @is "$.index[*][?(@.docs=='impl')].inner.impl.for.resolved_path.id" $struct
|
||||
|
@ -5,14 +5,13 @@
|
||||
// @set Local = "$.index[*][?(@.name=='Local')].id"
|
||||
pub trait Local {}
|
||||
|
||||
// @is "$.index[*][?(@.docs=='Local for bool')].inner.trait.id" $Local
|
||||
// @is "$.index[*][?(@.docs=='Local for bool')].inner.for.kind" '"primitive"'
|
||||
// @is "$.index[*][?(@.docs=='Local for bool')].inner.for.inner" '"bool"'
|
||||
// @is "$.index[*][?(@.docs=='Local for bool')].inner.impl.trait.id" $Local
|
||||
// @is "$.index[*][?(@.docs=='Local for bool')].inner.impl.for.primitive" '"bool"'
|
||||
/// Local for bool
|
||||
impl Local for bool {}
|
||||
|
||||
// @set impl = "$.index[*][?(@.docs=='Local for bool')].id"
|
||||
// @is "$.index[*][?(@.name=='Local')].inner.implementations[*]" $impl
|
||||
// @is "$.index[*][?(@.name=='Local')].inner.trait.implementations[*]" $impl
|
||||
|
||||
// FIXME(#101695): Test bool's `impls` include "Local for bool"
|
||||
// @has "$.index[*][?(@.name=='bool')]"
|
||||
|
@ -2,6 +2,6 @@
|
||||
pub trait Local {}
|
||||
|
||||
// @set impl = "$.index[*][?(@.docs=='local for bool')].id"
|
||||
// @is "$.index[*][?(@.name=='Local')].inner.implementations[*]" $impl
|
||||
// @is "$.index[*][?(@.name=='Local')].inner.trait.implementations[*]" $impl
|
||||
/// local for bool
|
||||
impl Local for bool {}
|
||||
|
@ -3,30 +3,27 @@
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
// @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": []}}'
|
||||
// @count "$.index[*][?(@.name=='longest')].inner.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.generics.where_predicates" []
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].name" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}'
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.generics.params[0].kind" '{"lifetime": {"outlives": []}}'
|
||||
// @count "$.index[*][?(@.name=='longest')].inner.function.generics.params[*]" 1
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.generics.where_predicates" []
|
||||
|
||||
// @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[1][0]" '"r"'
|
||||
// @count "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[*]" 2
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][0]" '"l"'
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][0]" '"r"'
|
||||
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[0][1].kind" '"borrowed_ref"'
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.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.type" '{"inner": "str", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][1].borrowed_ref.lifetime" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][1].borrowed_ref.mutable" false
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[0][1].borrowed_ref.type.primitive" \"str\"
|
||||
|
||||
// @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.mutable" false
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.decl.inputs[1][1].inner.type" '{"inner": "str", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][1].borrowed_ref.lifetime" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][1].borrowed_ref.mutable" false
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.inputs[1][1].borrowed_ref.type.primitive" \"str\"
|
||||
|
||||
// @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.mutable" false
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.decl.output.inner.type" '{"inner": "str", "kind": "primitive"}'
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.output.borrowed_ref.lifetime" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.output.borrowed_ref.mutable" false
|
||||
// @is "$.index[*][?(@.name=='longest')].inner.function.decl.output.borrowed_ref.type.primitive" \"str\"
|
||||
|
||||
pub fn longest<'a>(l: &'a str, r: &'a str) -> &'a str {
|
||||
if l.len() > r.len() { l } else { r }
|
||||
|
@ -3,21 +3,19 @@
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
// @count "$.index[*][?(@.name=='foo')].inner.generics.params[*]" 3
|
||||
// @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[1].name" \"\'b\"
|
||||
// @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[1].kind.lifetime.outlives" [\"\'a\"]
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.generics.params[2].kind.type.default" null
|
||||
// @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.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.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.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.type" '{"inner": "T", "kind": "generic"}'
|
||||
// @count "$.index[*][?(@.name=='foo')].inner.function.generics.params[*]" 3
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates" []
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[0].name" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[1].name" \"\'b\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].name" '"T"'
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[0].kind.lifetime.outlives" []
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[1].kind.lifetime.outlives" [\"\'a\"]
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].kind.type.default" null
|
||||
// @count "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].kind.type.bounds[*]" 1
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.params[2].kind.type.bounds[0].outlives" \"\'b\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.lifetime" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.mutable" false
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.type.borrowed_ref.lifetime" \"\'b\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.type.borrowed_ref.mutable" false
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.decl.inputs[0][1].borrowed_ref.type.borrowed_ref.type.generic" \"T\"
|
||||
pub fn foo<'a, 'b: 'a, T: 'b>(_: &'a &'b T) {}
|
||||
|
@ -8,47 +8,47 @@
|
||||
pub struct Foo;
|
||||
|
||||
impl Foo {
|
||||
// @is "$.index[*][?(@.name=='abi_rust')].inner.header.abi" \"Rust\"
|
||||
// @is "$.index[*][?(@.name=='abi_rust')].inner.function.header.abi" \"Rust\"
|
||||
pub fn abi_rust() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_c')].inner.header.abi" '{"C": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}'
|
||||
pub extern "C" fn abi_c() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_system')].inner.header.abi" '{"System": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}'
|
||||
pub extern "system" fn abi_system() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_c_unwind')].inner.header.abi" '{"C": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}'
|
||||
pub extern "C-unwind" fn abi_c_unwind() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_system_unwind')].inner.header.abi" '{"System": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}'
|
||||
pub extern "system-unwind" fn abi_system_unwind() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall')].inner.header.abi.Other" '"\"vectorcall\""'
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""'
|
||||
pub extern "vectorcall" fn abi_vectorcall() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
// @is "$.index[*][?(@.name=='abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
pub extern "vectorcall-unwind" fn abi_vectorcall_unwind() {}
|
||||
}
|
||||
|
||||
pub trait Bar {
|
||||
// @is "$.index[*][?(@.name=='trait_abi_rust')].inner.header.abi" \"Rust\"
|
||||
// @is "$.index[*][?(@.name=='trait_abi_rust')].inner.function.header.abi" \"Rust\"
|
||||
fn trait_abi_rust() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='trait_abi_c')].inner.header.abi" '{"C": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='trait_abi_c')].inner.function.header.abi" '{"C": {"unwind": false}}'
|
||||
extern "C" fn trait_abi_c() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='trait_abi_system')].inner.header.abi" '{"System": {"unwind": false}}'
|
||||
// @is "$.index[*][?(@.name=='trait_abi_system')].inner.function.header.abi" '{"System": {"unwind": false}}'
|
||||
extern "system" fn trait_abi_system() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='trait_abi_c_unwind')].inner.header.abi" '{"C": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='trait_abi_c_unwind')].inner.function.header.abi" '{"C": {"unwind": true}}'
|
||||
extern "C-unwind" fn trait_abi_c_unwind() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='trait_abi_system_unwind')].inner.header.abi" '{"System": {"unwind": true}}'
|
||||
// @is "$.index[*][?(@.name=='trait_abi_system_unwind')].inner.function.header.abi" '{"System": {"unwind": true}}'
|
||||
extern "system-unwind" fn trait_abi_system_unwind() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='trait_abi_vectorcall')].inner.header.abi.Other" '"\"vectorcall\""'
|
||||
// @is "$.index[*][?(@.name=='trait_abi_vectorcall')].inner.function.header.abi.Other" '"\"vectorcall\""'
|
||||
extern "vectorcall" fn trait_abi_vectorcall() {}
|
||||
|
||||
// @is "$.index[*][?(@.name=='trait_abi_vectorcall_unwind')].inner.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
// @is "$.index[*][?(@.name=='trait_abi_vectorcall_unwind')].inner.function.header.abi.Other" '"\"vectorcall-unwind\""'
|
||||
extern "vectorcall-unwind" fn trait_abi_vectorcall_unwind() {}
|
||||
}
|
||||
|
@ -3,34 +3,34 @@
|
||||
pub struct Foo;
|
||||
|
||||
impl Foo {
|
||||
// @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.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='const_meth')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='const_meth')].inner.function.header.const" true
|
||||
// @is "$.index[*][?(@.name=='const_meth')].inner.function.header.unsafe" false
|
||||
pub const fn const_meth() {}
|
||||
|
||||
// @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.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='nothing_meth')].inner.function.header.unsafe" false
|
||||
pub fn nothing_meth() {}
|
||||
|
||||
// @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.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='unsafe_meth')].inner.function.header.unsafe" true
|
||||
pub unsafe fn unsafe_meth() {}
|
||||
|
||||
// @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.unsafe" false
|
||||
// @is "$.index[*][?(@.name=='async_meth')].inner.function.header.async" true
|
||||
// @is "$.index[*][?(@.name=='async_meth')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='async_meth')].inner.function.header.unsafe" false
|
||||
pub async fn async_meth() {}
|
||||
|
||||
// @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.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.async" true
|
||||
// @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.const" false
|
||||
// @is "$.index[*][?(@.name=='async_unsafe_meth')].inner.function.header.unsafe" true
|
||||
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.const" true
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.header.unsafe" true
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.async" false
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.const" true
|
||||
// @is "$.index[*][?(@.name=='const_unsafe_meth')].inner.function.header.unsafe" true
|
||||
pub const unsafe fn const_unsafe_meth() {}
|
||||
|
||||
// It's impossible for a method to be both const and async, so no test for that
|
||||
|
@ -2,30 +2,31 @@
|
||||
// compile-flags: --crate-version 1.0.0
|
||||
|
||||
// @is "$.crate_version" \"1.0.0\"
|
||||
// @is "$.index[*][?(@.name=='nested')].kind" \"module\"
|
||||
// @is "$.index[*][?(@.name=='nested')].inner.is_crate" true
|
||||
// @has "$.index[*][?(@.name=='nested')].inner.module"
|
||||
// @is "$.index[*][?(@.name=='nested')].inner.module.is_crate" true
|
||||
|
||||
// @set l1_id = "$.index[*][?(@.name=='l1')].id"
|
||||
// @ismany "$.index[*][?(@.name=='nested')].inner.items[*]" $l1_id
|
||||
// @ismany "$.index[*][?(@.name=='nested')].inner.module.items[*]" $l1_id
|
||||
|
||||
// @is "$.index[*][?(@.name=='l1')].kind" \"module\"
|
||||
// @is "$.index[*][?(@.name=='l1')].inner.is_crate" false
|
||||
// @has "$.index[*][?(@.name=='l1')].inner.module"
|
||||
// @is "$.index[*][?(@.name=='l1')].inner.module.is_crate" false
|
||||
pub mod l1 {
|
||||
// @is "$.index[*][?(@.name=='l3')].kind" \"module\"
|
||||
// @is "$.index[*][?(@.name=='l3')].inner.is_crate" false
|
||||
// @has "$.index[*][?(@.name=='l3')].inner.module"
|
||||
// @is "$.index[*][?(@.name=='l3')].inner.module.is_crate" false
|
||||
// @set l3_id = "$.index[*][?(@.name=='l3')].id"
|
||||
pub mod l3 {
|
||||
|
||||
// @is "$.index[*][?(@.name=='L4')].kind" \"struct\"
|
||||
// @is "$.index[*][?(@.name=='L4')].inner.kind" \"unit\"
|
||||
// @has "$.index[*][?(@.name=='L4')].inner.struct"
|
||||
// @is "$.index[*][?(@.name=='L4')].inner.struct.kind" '"unit"'
|
||||
// @set l4_id = "$.index[*][?(@.name=='L4')].id"
|
||||
// @ismany "$.index[*][?(@.name=='l3')].inner.items[*]" $l4_id
|
||||
// @ismany "$.index[*][?(@.name=='l3')].inner.module.items[*]" $l4_id
|
||||
pub struct L4;
|
||||
}
|
||||
// @is "$.index[*][?(@.inner.source=='l3::L4')].kind" \"import\"
|
||||
// @is "$.index[*][?(@.inner.source=='l3::L4')].inner.glob" false
|
||||
// @is "$.index[*][?(@.inner.source=='l3::L4')].inner.id" $l4_id
|
||||
// @set l4_use_id = "$.index[*][?(@.inner.source=='l3::L4')].id"
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.glob" false
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.source" '"l3::L4"'
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.glob" false
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.id" $l4_id
|
||||
// @set l4_use_id = "$.index[*][?(@.inner.import)].id"
|
||||
pub use l3::L4;
|
||||
}
|
||||
// @ismany "$.index[*][?(@.name=='l1')].inner.items[*]" $l3_id $l4_use_id
|
||||
// @ismany "$.index[*][?(@.name=='l1')].inner.module.items[*]" $l3_id $l4_use_id
|
||||
|
@ -16,9 +16,9 @@ struct PhantomData<T_>;
|
||||
|
||||
pub struct Wrapper<T_>(PhantomData<T_>);
|
||||
|
||||
// @count "$.index[*][?(@.name=='foo')].inner.generics.where_predicates[0].bound_predicate.generic_params[*]" 2
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.generics.where_predicates[0].bound_predicate.generic_params[0].name" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.generics.where_predicates[0].bound_predicate.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }'
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.generics.where_predicates[0].bound_predicate.generic_params[1].name" \"T\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.generics.where_predicates[0].bound_predicate.generic_params[1].kind" '{ "type": { "bounds": [], "default": null, "synthetic": false } }'
|
||||
// @count "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[*]" 2
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[0].name" \"\'a\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[0].kind" '{ "lifetime": { "outlives": [] } }'
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].name" \"T\"
|
||||
// @is "$.index[*][?(@.name=='foo')].inner.function.generics.where_predicates[0].bound_predicate.generic_params[1].kind" '{ "type": { "bounds": [], "default": null, "synthetic": false } }'
|
||||
pub fn foo() where for<'a, T> &'a Wrapper<T>: Trait {}
|
||||
|
@ -14,7 +14,7 @@ mod prim_i32 {}
|
||||
// @set local_i32 = "$.index[*][?(@.name=='i32')].id"
|
||||
|
||||
// @has "$.index[*][?(@.name=='local_primitive')]"
|
||||
// @ismany "$.index[*][?(@.name=='local_primitive')].inner.items[*]" $local_i32
|
||||
// @ismany "$.index[*][?(@.name=='local_primitive')].inner.module.items[*]" $local_i32
|
||||
// @is "$.index[*][?(@.name=='local_primitive')].links['prim@i32']" $local_i32
|
||||
|
||||
// Let's ensure the `prim_i32` module isn't present in the output JSON:
|
||||
|
@ -15,7 +15,7 @@ impl i32 {
|
||||
self
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.docs=='Only core can do this')].inner.items[*]" $identity
|
||||
// @is "$.index[*][?(@.docs=='Only core can do this')].inner.impl.items[*]" $identity
|
||||
}
|
||||
|
||||
// @set Trait = "$.index[*][?(@.name=='Trait')].id"
|
||||
@ -30,5 +30,5 @@ mod prim_i32 {}
|
||||
|
||||
// @set i32 = "$.index[*][?(@.docs=='i32')].id"
|
||||
// @is "$.index[*][?(@.docs=='i32')].name" '"i32"'
|
||||
// @is "$.index[*][?(@.docs=='i32')].inner.name" '"i32"'
|
||||
// @ismany "$.index[*][?(@.docs=='i32')].inner.impls[*]" $impl_i32 $impl_trait_for_i32
|
||||
// @is "$.index[*][?(@.docs=='i32')].inner.primitive.name" '"i32"'
|
||||
// @ismany "$.index[*][?(@.docs=='i32')].inner.primitive.impls[*]" $impl_i32 $impl_trait_for_i32
|
||||
|
@ -1,22 +1,17 @@
|
||||
#![feature(never_type)]
|
||||
|
||||
// @is "$.index[*][?(@.name=='PrimNever')].visibility" \"public\"
|
||||
// @is "$.index[*][?(@.name=='PrimNever')].inner.type.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.name=='PrimNever')].inner.type.inner" \"never\"
|
||||
// @is "$.index[*][?(@.name=='PrimNever')].inner.typedef.type.primitive" \"never\"
|
||||
pub type PrimNever = !;
|
||||
|
||||
// @is "$.index[*][?(@.name=='PrimStr')].inner.type.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.name=='PrimStr')].inner.type.inner" \"str\"
|
||||
// @is "$.index[*][?(@.name=='PrimStr')].inner.typedef.type.primitive" \"str\"
|
||||
pub type PrimStr = str;
|
||||
|
||||
// @is "$.index[*][?(@.name=='PrimBool')].inner.type.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.name=='PrimBool')].inner.type.inner" \"bool\"
|
||||
// @is "$.index[*][?(@.name=='PrimBool')].inner.typedef.type.primitive" \"bool\"
|
||||
pub type PrimBool = bool;
|
||||
|
||||
// @is "$.index[*][?(@.name=='PrimChar')].inner.type.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.name=='PrimChar')].inner.type.inner" \"char\"
|
||||
// @is "$.index[*][?(@.name=='PrimChar')].inner.typedef.type.primitive" \"char\"
|
||||
pub type PrimChar = char;
|
||||
|
||||
// @is "$.index[*][?(@.name=='PrimU8')].inner.type.kind" \"primitive\"
|
||||
// @is "$.index[*][?(@.name=='PrimU8')].inner.type.inner" \"u8\"
|
||||
// @is "$.index[*][?(@.name=='PrimU8')].inner.typedef.type.primitive" \"u8\"
|
||||
pub type PrimU8 = u8;
|
||||
|
@ -13,8 +13,8 @@ mod usize {}
|
||||
// @!is "$.index[*][?(@.name=='checked_add')]" $local_crate_id
|
||||
// @!has "$.index[*][?(@.name=='is_ascii_uppercase')]"
|
||||
|
||||
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='my_i32')].inner.id" null
|
||||
// @is "$.index[*].inner.import[?(@.name=='my_i32')].id" null
|
||||
pub use i32 as my_i32;
|
||||
|
||||
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='u32')].inner.id" null
|
||||
// @is "$.index[*].inner.import[?(@.name=='u32')].id" null
|
||||
pub use u32;
|
||||
|
@ -1,10 +1,11 @@
|
||||
// Regression Test for https://github.com/rust-lang/rust/issues/110138
|
||||
// aux-build: enum_with_discriminant.rs
|
||||
// ignore-tidy-linelength
|
||||
|
||||
#[doc(inline)]
|
||||
pub extern crate enum_with_discriminant;
|
||||
|
||||
// @!has '$.index[*][?(@.docs == "Should not be inlined")]'
|
||||
// @is '$.index[*][?(@.name == "enum_with_discriminant")].kind' '"extern_crate"'
|
||||
// @has '$.index[*][?(@.name == "enum_with_discriminant")].inner.extern_crate'
|
||||
// @set enum_with_discriminant = '$.index[*][?(@.name == "enum_with_discriminant")].id'
|
||||
// @is '$.index[*][?(@.name == "doc_inline_external_crate")].inner.items[*]' $enum_with_discriminant
|
||||
// @is '$.index[*][?(@.name == "doc_inline_external_crate")].inner.module.items[*]' $enum_with_discriminant
|
||||
|
@ -7,5 +7,5 @@
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
// @is "$.index[*][?(@.kind=='module')].name" \"export_extern_crate_as_self\"
|
||||
// @is "$.index[*][?(@.inner.module)].name" \"export_extern_crate_as_self\"
|
||||
pub extern crate self as export_extern_crate_as_self; // Must be the same name as the crate already has
|
||||
|
@ -6,5 +6,6 @@ extern crate enum_with_discriminant;
|
||||
pub use enum_with_discriminant::*;
|
||||
|
||||
// @!has '$.index[*][?(@.docs == "Should not be inlined")]'
|
||||
// @set use = '$.index[*][?(@.inner.name == "enum_with_discriminant")].id'
|
||||
// @is '$.index[*][?(@.name == "extern_crate_glob")].inner.items[*]' $use
|
||||
// @is '$.index[*][?(@.inner.import)].inner.import.name' \"enum_with_discriminant\"
|
||||
// @set use = '$.index[*][?(@.inner.import)].id'
|
||||
// @is '$.index[*][?(@.name == "extern_crate_glob")].inner.module.items[*]' $use
|
||||
|
@ -3,26 +3,28 @@
|
||||
#![feature(no_core)]
|
||||
#![no_core]
|
||||
|
||||
// @set m1 = "$.index[*][?(@.name == 'm1' && @.kind == 'module')].id"
|
||||
// @is "$.index[*][?(@.name == 'm1' && @.kind == 'module')].inner.items" []
|
||||
// @is "$.index[*][?(@.name == 'm1' && @.kind == 'module')].inner.is_stripped" true
|
||||
// @set m1 = "$.index[*][?(@.name == 'm1' && @.inner.module)].id"
|
||||
// @is "$.index[*][?(@.name == 'm1')].inner.module.items" []
|
||||
// @is "$.index[*][?(@.name == 'm1')].inner.module.is_stripped" true
|
||||
mod m1 {
|
||||
pub fn f() {}
|
||||
}
|
||||
// @set m2 = "$.index[*][?(@.name == 'm2' && @.kind == 'module')].id"
|
||||
// @is "$.index[*][?(@.name == 'm2' && @.kind == 'module')].inner.items" []
|
||||
// @is "$.index[*][?(@.name == 'm2' && @.kind == 'module')].inner.is_stripped" true
|
||||
// @set m2 = "$.index[*][?(@.name == 'm2' && @.inner.module)].id"
|
||||
// @is "$.index[*][?(@.name == 'm2')].inner.module.items" []
|
||||
// @is "$.index[*][?(@.name == 'm2')].inner.module.is_stripped" true
|
||||
mod m2 {
|
||||
pub fn f(_: u8) {}
|
||||
}
|
||||
|
||||
// @set m1_use = "$.index[*][?(@.inner.name=='m1')].id"
|
||||
// @is "$.index[*][?(@.inner.name=='m1')].inner.id" $m1
|
||||
// @is "$.index[*][?(@.inner.name=='m1')].inner.glob" true
|
||||
// @set m1_use = "$.index[*][?(@.docs=='m1 re-export')].id"
|
||||
// @is "$.index[*].inner.import[?(@.name=='m1')].id" $m1
|
||||
// @is "$.index[*].inner.import[?(@.name=='m1')].glob" true
|
||||
/// m1 re-export
|
||||
pub use m1::*;
|
||||
// @set m2_use = "$.index[*][?(@.inner.name=='m2')].id"
|
||||
// @is "$.index[*][?(@.inner.name=='m2')].inner.id" $m2
|
||||
// @is "$.index[*][?(@.inner.name=='m2')].inner.glob" true
|
||||
// @set m2_use = "$.index[*][?(@.docs=='m2 re-export')].id"
|
||||
// @is "$.index[*].inner.import[?(@.name=='m2')].id" $m2
|
||||
// @is "$.index[*].inner.import[?(@.name=='m2')].glob" true
|
||||
/// m2 re-export
|
||||
pub use m2::*;
|
||||
|
||||
// @ismany "$.index[*][?(@.inner.is_crate==true)].inner.items[*]" $m1_use $m2_use
|
||||
// @ismany "$.index[*].inner.module[?(@.is_crate==true)].items[*]" $m1_use $m2_use
|
||||
|
@ -1,8 +1,8 @@
|
||||
// Regression test for https://github.com/rust-lang/rust/issues/100973
|
||||
|
||||
// @is "$.index[*][?(@.name=='m1' && @.kind == 'module')].inner.is_stripped" true
|
||||
// @is "$.index[*][?(@.name=='m1' && @.inner.module)].inner.module.is_stripped" true
|
||||
// @set m1 = "$.index[*][?(@.name=='m1')].id"
|
||||
mod m1 {}
|
||||
|
||||
// @is "$.index[*][?(@.inner.name=='m1' && @.kind=='import')].inner.id" $m1
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.id" $m1
|
||||
pub use m1::*;
|
||||
|
@ -3,8 +3,7 @@
|
||||
#![no_core]
|
||||
#![feature(no_core)]
|
||||
|
||||
// @is "$.index[*][?(@.name=='mod1')].kind" \"module\"
|
||||
// @is "$.index[*][?(@.name=='mod1')].inner.is_stripped" "true"
|
||||
// @is "$.index[*][?(@.name=='mod1')].inner.module.is_stripped" "true"
|
||||
mod mod1 {
|
||||
extern "C" {
|
||||
// @set public_fn_id = "$.index[*][?(@.name=='public_fn')].id"
|
||||
@ -12,12 +11,12 @@ mod mod1 {
|
||||
// @!has "$.index[*][?(@.name=='private_fn')]"
|
||||
fn private_fn();
|
||||
}
|
||||
// @ismany "$.index[*][?(@.name=='mod1')].inner.items[*]" $public_fn_id
|
||||
// @ismany "$.index[*][?(@.name=='mod1')].inner.module.items[*]" $public_fn_id
|
||||
// @set mod1_id = "$.index[*][?(@.name=='mod1')].id"
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.kind=='import')].inner.glob" true
|
||||
// @is "$.index[*][?(@.kind=='import')].inner.id" $mod1_id
|
||||
// @set use_id = "$.index[*][?(@.kind=='import')].id"
|
||||
// @ismany "$.index[*][?(@.name=='glob_extern')].inner.items[*]" $use_id
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.glob" true
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.id" $mod1_id
|
||||
// @set use_id = "$.index[*][?(@.inner.import)].id"
|
||||
// @ismany "$.index[*][?(@.name=='glob_extern')].inner.module.items[*]" $use_id
|
||||
pub use mod1::*;
|
||||
|
@ -3,11 +3,9 @@
|
||||
#![no_core]
|
||||
#![feature(no_core)]
|
||||
|
||||
// @is "$.index[*][?(@.name=='mod1')].kind" \"module\"
|
||||
// @is "$.index[*][?(@.name=='mod1')].inner.is_stripped" "true"
|
||||
// @is "$.index[*][?(@.name=='mod1')].inner.module.is_stripped" "true"
|
||||
mod mod1 {
|
||||
// @is "$.index[*][?(@.name=='mod2')].kind" \"module\"
|
||||
// @is "$.index[*][?(@.name=='mod2')].inner.is_stripped" "true"
|
||||
// @is "$.index[*][?(@.name=='mod2')].inner.module.is_stripped" "true"
|
||||
mod mod2 {
|
||||
// @set m2pub_id = "$.index[*][?(@.name=='Mod2Public')].id"
|
||||
pub struct Mod2Public;
|
||||
@ -16,7 +14,9 @@ mod mod1 {
|
||||
struct Mod2Private;
|
||||
}
|
||||
|
||||
// @set mod2_use_id = "$.index[*][?(@.kind=='import' && @.inner.name=='mod2')].id"
|
||||
// @set mod2_use_id = "$.index[*][?(@.docs=='Mod2 re-export')].id"
|
||||
// @is "$.index[*][?(@.docs=='Mod2 re-export')].inner.import.name" \"mod2\"
|
||||
/// Mod2 re-export
|
||||
pub use self::mod2::*;
|
||||
|
||||
// @set m1pub_id = "$.index[*][?(@.name=='Mod1Public')].id"
|
||||
@ -25,9 +25,11 @@ mod mod1 {
|
||||
struct Mod1Private;
|
||||
}
|
||||
|
||||
// @set mod1_use_id = "$.index[*][?(@.kind=='import' && @.inner.name=='mod1')].id"
|
||||
// @set mod1_use_id = "$.index[*][?(@.docs=='Mod1 re-export')].id"
|
||||
// @is "$.index[*][?(@.docs=='Mod1 re-export')].inner.import.name" \"mod1\"
|
||||
/// Mod1 re-export
|
||||
pub use mod1::*;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='mod2')].inner.items[*]" $m2pub_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=='mod2')].inner.module.items[*]" $m2pub_id
|
||||
// @ismany "$.index[*][?(@.name=='mod1')].inner.module.items[*]" $m1pub_id $mod2_use_id
|
||||
// @ismany "$.index[*][?(@.name=='glob_private')].inner.module.items[*]" $mod1_use_id
|
||||
|
@ -7,10 +7,10 @@ mod foo {
|
||||
pub struct Foo;
|
||||
}
|
||||
|
||||
// @has "$.index[*][?(@.kind=='import' && @.inner.source=='foo::Foo')]"
|
||||
// @has "$.index[*].inner[?(@.import.source=='foo::Foo')]"
|
||||
pub use foo::Foo;
|
||||
|
||||
pub mod bar {
|
||||
// @has "$.index[*][?(@.kind=='import' && @.inner.source=='crate::foo::Foo')]"
|
||||
// @has "$.index[*].inner[?(@.import.source=='crate::foo::Foo')]"
|
||||
pub use crate::foo::Foo;
|
||||
}
|
||||
|
@ -3,18 +3,20 @@
|
||||
|
||||
pub mod foo {
|
||||
// @set bar_id = "$.index[*][?(@.name=='Bar')].id"
|
||||
// @ismany "$.index[*][?(@.name=='foo')].inner.items[*]" $bar_id
|
||||
// @ismany "$.index[*][?(@.name=='foo')].inner.module.items[*]" $bar_id
|
||||
pub struct Bar;
|
||||
}
|
||||
|
||||
// @set root_import_id = "$.index[*][?(@.inner.source=='foo::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
|
||||
// @set root_import_id = "$.index[*][?(@.docs=='Outer re-export')].id"
|
||||
// @is "$.index[*].inner[?(@.import.source=='foo::Bar')].import.id" $bar_id
|
||||
// @has "$.index[*][?(@.name=='in_root_and_mod_pub')].inner.module.items[*]" $root_import_id
|
||||
/// Outer re-export
|
||||
pub use foo::Bar;
|
||||
|
||||
pub mod baz {
|
||||
// @set baz_import_id = "$.index[*][?(@.inner.source=='crate::foo::Bar')].id"
|
||||
// @is "$.index[*][?(@.inner.source=='crate::foo::Bar')].inner.id" $bar_id
|
||||
// @ismany "$.index[*][?(@.name=='baz')].inner.items[*]" $baz_import_id
|
||||
// @set baz_import_id = "$.index[*][?(@.docs=='Inner re-export')].id"
|
||||
// @is "$.index[*].inner[?(@.import.source=='crate::foo::Bar')].import.id" $bar_id
|
||||
// @ismany "$.index[*][?(@.name=='baz')].inner.module.items[*]" $baz_import_id
|
||||
/// Inner re-export
|
||||
pub use crate::foo::Bar;
|
||||
}
|
||||
|
@ -9,7 +9,8 @@ macro_rules! repro {
|
||||
() => {};
|
||||
}
|
||||
|
||||
// @set repro2_id = "$.index[*][?(@.inner.name=='repro2')].id"
|
||||
// @set repro2_id = "$.index[*][?(@.docs=='Re-export')].id"
|
||||
/// Re-export
|
||||
pub use crate::repro as repro2;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='macro')].inner.items[*]" $repro_id $repro2_id
|
||||
// @ismany "$.index[*][?(@.name=='macro')].inner.module.items[*]" $repro_id $repro2_id
|
||||
|
@ -9,6 +9,6 @@ mod m1 {
|
||||
|
||||
pub use m1::x;
|
||||
|
||||
// @has "$.index[*][?(@.name=='x' && @.kind=='function')]"
|
||||
// @has "$.index[*][?(@.kind=='import' && @.inner.name=='x')].inner.source" '"m1::x"'
|
||||
// @has "$.index[*][?(@.name=='x' && @.inner.function)]"
|
||||
// @has "$.index[*].inner[?(@.import.name=='x')].import.source" '"m1::x"'
|
||||
// @!has "$.index[*][?(@.name=='m1')]"
|
||||
|
@ -11,18 +11,18 @@ extern crate pub_struct as foo;
|
||||
#[doc(inline)]
|
||||
|
||||
// @set crate_use_id = "$.index[*][?(@.docs=='Hack A')].id"
|
||||
// @set foo_id = "$.index[*][?(@.docs=='Hack A')].inner.id"
|
||||
// @set foo_id = "$.index[*][?(@.docs=='Hack A')].inner.import.id"
|
||||
/// Hack A
|
||||
pub use foo::Foo;
|
||||
|
||||
// @set bar_id = "$.index[*][?(@.name=='bar')].id"
|
||||
pub mod bar {
|
||||
// @is "$.index[*][?(@.docs=='Hack B')].inner.id" $foo_id
|
||||
// @is "$.index[*][?(@.docs=='Hack B')].inner.import.id" $foo_id
|
||||
// @set bar_use_id = "$.index[*][?(@.docs=='Hack B')].id"
|
||||
// @ismany "$.index[*][?(@.name=='bar')].inner.items[*]" $bar_use_id
|
||||
// @ismany "$.index[*][?(@.name=='bar')].inner.module.items[*]" $bar_use_id
|
||||
/// Hack B
|
||||
pub use foo::Foo;
|
||||
}
|
||||
|
||||
// @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[*][?(@.inner.import)].id" $crate_use_id $bar_use_id
|
||||
// @ismany "$.index[*][?(@.name=='private_twice_one_inline')].inner.module.items[*]" $bar_id $crate_use_id
|
||||
|
@ -8,15 +8,19 @@
|
||||
|
||||
// @!has "$.index[*][?(@.name=='style')]"
|
||||
mod style {
|
||||
// @set color_struct_id = "$.index[*][?(@.kind=='struct' && @.name=='Color')].id"
|
||||
// @set color_struct_id = "$.index[*][?(@.inner.struct && @.name=='Color')].id"
|
||||
pub struct Color;
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].inner.id" $color_struct_id
|
||||
// @set color_export_id = "$.index[*][?(@.kind=='import' && @.inner.name=='Color')].id"
|
||||
// @is "$.index[*][?(@.docs=='First re-export')].inner.import.id" $color_struct_id
|
||||
// @is "$.index[*][?(@.docs=='First re-export')].inner.import.name" \"Color\"
|
||||
// @set color_export_id = "$.index[*][?(@.docs=='First re-export')].id"
|
||||
/// First re-export
|
||||
pub use style::Color;
|
||||
// @is "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].inner.id" $color_struct_id
|
||||
// @set colour_export_id = "$.index[*][?(@.kind=='import' && @.inner.name=='Colour')].id"
|
||||
// @is "$.index[*][?(@.docs=='Second re-export')].inner.import.id" $color_struct_id
|
||||
// @is "$.index[*][?(@.docs=='Second re-export')].inner.import.name" \"Colour\"
|
||||
// @set colour_export_id = "$.index[*][?(@.docs=='Second re-export')].id"
|
||||
/// Second re-export
|
||||
pub use style::Color as Colour;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='private_two_names')].inner.items[*]" $color_export_id $colour_export_id
|
||||
// @ismany "$.index[*][?(@.name=='private_two_names')].inner.module.items[*]" $color_export_id $colour_export_id
|
||||
|
@ -1,9 +1,9 @@
|
||||
// Regression test for <https://github.com/rust-lang/rust/issues/102583>.
|
||||
|
||||
// @set impl_S = "$.index[*][?(@.docs=='impl S')].id"
|
||||
// @has "$.index[*][?(@.name=='S')].inner.impls[*]" $impl_S
|
||||
// @has "$.index[*][?(@.name=='S')].inner.struct.impls[*]" $impl_S
|
||||
// @set is_present = "$.index[*][?(@.name=='is_present')].id"
|
||||
// @is "$.index[*][?(@.docs=='impl S')].inner.items[*]" $is_present
|
||||
// @is "$.index[*][?(@.docs=='impl S')].inner.impl.items[*]" $is_present
|
||||
// @!has "$.index[*][?(@.name=='hidden_impl')]"
|
||||
// @!has "$.index[*][?(@.name=='hidden_fn')]"
|
||||
|
||||
|
@ -3,11 +3,11 @@
|
||||
#![no_core]
|
||||
#![feature(no_core)]
|
||||
|
||||
// @!has "$.index[*][?(@.kind=='inner')]"
|
||||
// @!has "$.index[*][?(@.name=='inner')]"
|
||||
mod inner {
|
||||
// @has "$.index[*][?(@.name=='Public')]"
|
||||
pub struct Public;
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.kind=='import')].inner.name" \"NewName\"
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.name" \"NewName\"
|
||||
pub use inner::Public as NewName;
|
||||
|
@ -6,12 +6,13 @@
|
||||
// @set inner_id = "$.index[*][?(@.name=='inner')].id"
|
||||
pub mod inner {
|
||||
// @set public_id = "$.index[*][?(@.name=='Public')].id"
|
||||
// @ismany "$.index[*][?(@.name=='inner')].inner.items[*]" $public_id
|
||||
// @ismany "$.index[*][?(@.name=='inner')].inner.module.items[*]" $public_id
|
||||
pub struct Public;
|
||||
}
|
||||
// @set import_id = "$.index[*][?(@.inner.name=='NewName')].id"
|
||||
// @!has "$.index[*][?(@.inner.name=='Public')]"
|
||||
// @is "$.index[*][?(@.inner.name=='NewName')].inner.source" \"inner::Public\"
|
||||
// @set import_id = "$.index[*][?(@.docs=='Re-export')].id"
|
||||
// @!has "$.index[*].inner[?(@.import.name=='Public')]"
|
||||
// @is "$.index[*].inner[?(@.import.name=='NewName')].import.source" \"inner::Public\"
|
||||
/// Re-export
|
||||
pub use inner::Public as NewName;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='rename_public')].inner.items[*]" $inner_id $import_id
|
||||
// @ismany "$.index[*][?(@.name=='rename_public')].inner.module.items[*]" $inner_id $import_id
|
||||
|
@ -16,10 +16,10 @@ pub mod nested {
|
||||
pub fn Foo() {}
|
||||
}
|
||||
|
||||
// @ismany "$.index[*][?(@.inner.name == 'Foo' && @.kind == 'import')].inner.id" $foo_fn $foo_struct
|
||||
// @ismany "$.index[*][?(@.inner.name == 'Bar' && @.kind == 'import')].inner.id" $foo_fn $foo_struct
|
||||
// @ismany "$.index[*].inner[?(@.import.name == 'Foo')].import.id" $foo_fn $foo_struct
|
||||
// @ismany "$.index[*].inner[?(@.import.name == 'Bar')].import.id" $foo_fn $foo_struct
|
||||
|
||||
// @count "$.index[*][?(@.inner.name == 'Foo' && @.kind == 'import')]" 2
|
||||
// @count "$.index[*].inner[?(@.import.name == 'Foo')]" 2
|
||||
pub use nested::Foo;
|
||||
// @count "$.index[*][?(@.inner.name == 'Bar' && @.kind == 'import')]" 2
|
||||
// @count "$.index[*].inner[?(@.import.name == 'Bar')]" 2
|
||||
pub use Foo as Bar;
|
||||
|
@ -11,11 +11,13 @@ mod inner {
|
||||
pub trait Trait {}
|
||||
}
|
||||
|
||||
// @set export_id = "$.index[*][?(@.inner.name=='Trait')].id"
|
||||
// @is "$.index[*][?(@.inner.name=='Trait')].inner.id" $trait_id
|
||||
// @set export_id = "$.index[*][?(@.docs=='First re-export')].id"
|
||||
// @is "$.index[*].inner[?(@.import.name=='Trait')].import.id" $trait_id
|
||||
/// First re-export
|
||||
pub use inner::Trait;
|
||||
// @set reexport_id = "$.index[*][?(@.inner.name=='Reexport')].id"
|
||||
// @is "$.index[*][?(@.inner.name=='Reexport')].inner.id" $trait_id
|
||||
// @set reexport_id = "$.index[*][?(@.docs=='Second re-export')].id"
|
||||
// @is "$.index[*].inner[?(@.import.name=='Reexport')].import.id" $trait_id
|
||||
/// Second re-export
|
||||
pub use inner::Trait as Reexport;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='same_type_reexported_more_than_once')].inner.items[*]" $reexport_id $export_id
|
||||
// @ismany "$.index[*][?(@.name=='same_type_reexported_more_than_once')].inner.module.items[*]" $reexport_id $export_id
|
||||
|
@ -8,9 +8,9 @@ mod inner {
|
||||
pub struct Public;
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.kind=='import')].inner.name" \"Public\"
|
||||
// @is "$.index[*][?(@.kind=='import')].inner.id" $pub_id
|
||||
// @set use_id = "$.index[*][?(@.kind=='import')].id"
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.name" \"Public\"
|
||||
// @is "$.index[*][?(@.inner.import)].inner.import.id" $pub_id
|
||||
// @set use_id = "$.index[*][?(@.inner.import)].id"
|
||||
pub use inner::Public;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='simple_private')].inner.items[*]" $use_id
|
||||
// @ismany "$.index[*][?(@.name=='simple_private')].inner.module.items[*]" $use_id
|
||||
|
@ -7,12 +7,13 @@
|
||||
pub mod inner {
|
||||
|
||||
// @set public_id = "$.index[*][?(@.name=='Public')].id"
|
||||
// @ismany "$.index[*][?(@.name=='inner')].inner.items[*]" $public_id
|
||||
// @ismany "$.index[*][?(@.name=='inner')].inner.module.items[*]" $public_id
|
||||
pub struct Public;
|
||||
}
|
||||
|
||||
// @set import_id = "$.index[*][?(@.inner.name=='Public')].id"
|
||||
// @is "$.index[*][?(@.inner.name=='Public')].inner.source" \"inner::Public\"
|
||||
// @set import_id = "$.index[*][?(@.docs=='Outer')].id"
|
||||
// @is "$.index[*][?(@.docs=='Outer')].inner.import.source" \"inner::Public\"
|
||||
/// Outer
|
||||
pub use inner::Public;
|
||||
|
||||
// @ismany "$.index[*][?(@.name=='simple_public')].inner.items[*]" $import_id $inner_id
|
||||
// @ismany "$.index[*][?(@.name=='simple_public')].inner.module.items[*]" $import_id $inner_id
|
||||
|
@ -8,8 +8,8 @@ mod secret {
|
||||
pub struct Secret;
|
||||
}
|
||||
|
||||
// @is "$.index[*][?(@.name=='get_secret')].kind" \"function\"
|
||||
// @is "$.index[*][?(@.name=='get_secret')].inner.decl.output.inner.name" \"secret::Secret\"
|
||||
// @has "$.index[*][?(@.name=='get_secret')].inner.function"
|
||||
// @is "$.index[*][?(@.name=='get_secret')].inner.function.decl.output.resolved_path.name" \"secret::Secret\"
|
||||
pub fn get_secret() -> secret::Secret {
|
||||
secret::Secret
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ pub struct Demo {
|
||||
|
||||
// @set x = "$.index[*][?(@.name=='x')].id"
|
||||
// @set y = "$.index[*][?(@.name=='y')].id"
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[0]" $x
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[1]" $y
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[*]" 2
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields_stripped" false
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[0]" $x
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[1]" $y
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[*]" 2
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields_stripped" false
|
||||
|
@ -6,6 +6,6 @@ pub struct Demo {
|
||||
|
||||
// @set x = "$.index[*][?(@.name=='x')].id"
|
||||
// @!has "$.index[*][?(@.name=='y')].id"
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[0]" $x
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[*]" 1
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields_stripped" true
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[0]" $x
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[*]" 1
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields_stripped" true
|
||||
|
@ -1,5 +1,5 @@
|
||||
// @is "$.index[*][?(@.name=='PlainEmpty')].visibility" \"public\"
|
||||
// @is "$.index[*][?(@.name=='PlainEmpty')].kind" \"struct\"
|
||||
// @is "$.index[*][?(@.name=='PlainEmpty')].inner.kind.plain.fields_stripped" false
|
||||
// @is "$.index[*][?(@.name=='PlainEmpty')].inner.kind.plain.fields" []
|
||||
// @has "$.index[*][?(@.name=='PlainEmpty')].inner.struct"
|
||||
// @is "$.index[*][?(@.name=='PlainEmpty')].inner.struct.kind.plain.fields_stripped" false
|
||||
// @is "$.index[*][?(@.name=='PlainEmpty')].inner.struct.kind.plain.fields" []
|
||||
pub struct PlainEmpty {}
|
||||
|
@ -4,6 +4,6 @@ pub struct Demo {
|
||||
}
|
||||
|
||||
// @set x = "$.index[*][?(@.name=='x')].id"
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[0]" $x
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields[*]" 1
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.plain.fields_stripped" true
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[0]" $x
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields[*]" 1
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.plain.fields_stripped" true
|
||||
|
@ -1,4 +1,4 @@
|
||||
// @is "$.index[*][?(@.name=='Tuple')].visibility" \"public\"
|
||||
// @is "$.index[*][?(@.name=='Tuple')].kind" \"struct\"
|
||||
// @is "$.index[*][?(@.name=='Tuple')].inner.kind.tuple" '[null, null]'
|
||||
// @has "$.index[*][?(@.name=='Tuple')].inner.struct"
|
||||
// @is "$.index[*][?(@.name=='Tuple')].inner.struct.kind.tuple" '[null, null]'
|
||||
pub struct Tuple(u32, String);
|
||||
|
@ -1,2 +1,2 @@
|
||||
// @is "$.index[*][?(@.name=='TupleUnit')].inner.kind.tuple" []
|
||||
// @is "$.index[*][?(@.name=='TupleUnit')].inner.struct.kind.tuple" []
|
||||
pub struct TupleUnit();
|
||||
|
@ -7,7 +7,7 @@ pub struct Demo(
|
||||
|
||||
// @set field = "$.index[*][?(@.docs=='field')].id"
|
||||
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.tuple[1]" $field
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.kind.tuple[2]" null
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.kind.tuple[*]" 3
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[0]" null
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[1]" $field
|
||||
// @is "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[2]" null
|
||||
// @count "$.index[*][?(@.name=='Demo')].inner.struct.kind.tuple[*]" 3
|
||||
|
@ -1,4 +1,4 @@
|
||||
// @is "$.index[*][?(@.name=='Unit')].visibility" \"public\"
|
||||
// @is "$.index[*][?(@.name=='Unit')].kind" \"struct\"
|
||||
// @is "$.index[*][?(@.name=='Unit')].inner.kind" \"unit\"
|
||||
// @has "$.index[*][?(@.name=='Unit')].inner.struct"
|
||||
// @is "$.index[*][?(@.name=='Unit')].inner.struct.kind" \"unit\"
|
||||
pub struct Unit;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user