File: default-generic-args.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg3-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental, sid, trixie
  • size: 893,396 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; perl: 29; lisp: 29; ruby: 19; sql: 11
file content (114 lines) | stat: -rw-r--r-- 4,182 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#![crate_name = "user"]
//@ aux-crate:default_generic_args=default-generic-args.rs
//@ edition:2021

//@ has user/type.BoxedStr.html
//@ has - '//*[@class="rust item-decl"]//code' "Box<str>"
pub use default_generic_args::BoxedStr;

//@ has user/type.IntMap.html
//@ has - '//*[@class="rust item-decl"]//code' "HashMap<i64, u64>"
pub use default_generic_args::IntMap;

//@ has user/type.T0.html
//@ has - '//*[@class="rust item-decl"]//code' "TyPair<i32>"
pub use default_generic_args::T0;

//@ has user/type.T1.html
//@ has - '//*[@class="rust item-decl"]//code' "TyPair<i32, u32>"
pub use default_generic_args::T1;

//@ has user/type.T2.html
//@ has - '//*[@class="rust item-decl"]//code' "TyPair<i32, K>"
pub use default_generic_args::T2;

//@ has user/type.T3.html
//@ has - '//*[@class="rust item-decl"]//code' "TyPair<Q>"
pub use default_generic_args::T3;

//@ has user/type.C0.html
//@ has - '//*[@class="rust item-decl"]//code' "CtPair<43>"
pub use default_generic_args::C0;

//@ has user/type.C1.html
//@ has - '//*[@class="rust item-decl"]//code' "CtPair<0, 1>"
pub use default_generic_args::C1;

//@ has user/type.C2.html
//@ has - '//*[@class="rust item-decl"]//code' "CtPair<default_generic_args::::C2::{constant#0}, 3>"
pub use default_generic_args::C2;

//@ has user/type.R0.html
//@ has - '//*[@class="rust item-decl"]//code' "Re<'q>"
pub use default_generic_args::R0;

//@ has user/type.R1.html
//@ has - '//*[@class="rust item-decl"]//code' "Re<'q>"
pub use default_generic_args::R1;

//@ has user/type.R2.html
// Check that we consider regions:
//@ has - '//*[@class="rust item-decl"]//code' "Re<'q, &'static ()>"
pub use default_generic_args::R2;

//@ has user/type.H0.html
// Check that we handle higher-ranked regions correctly:
//@ has - '//*[@class="rust item-decl"]//code' "fn(_: for<'a> fn(_: Re<'a>))"
pub use default_generic_args::H0;

//@ has user/type.H1.html
// Check that we don't conflate distinct universially quantified regions (#1):
//@ has - '//*[@class="rust item-decl"]//code' "for<'b> fn(_: for<'a> fn(_: Re<'a, &'b ()>))"
pub use default_generic_args::H1;

//@ has user/type.H2.html
// Check that we don't conflate distinct universially quantified regions (#2):
//@ has - '//*[@class="rust item-decl"]//code' "for<'a> fn(_: for<'b> fn(_: Re<'a, &'b ()>))"
pub use default_generic_args::H2;

//@ has user/type.P0.html
//@ has - '//*[@class="rust item-decl"]//code' "Proj<()>"
pub use default_generic_args::P0;

//@ has user/type.P1.html
//@ has - '//*[@class="rust item-decl"]//code' "Proj<(), bool>"
pub use default_generic_args::P1;

//@ has user/type.P2.html
//@ has - '//*[@class="rust item-decl"]//code' "Proj<(), ()>"
pub use default_generic_args::P2;

//@ has user/type.A0.html
//@ has - '//*[@class="rust item-decl"]//code' "Alpha;"
pub use default_generic_args::A0;

//@ has user/type.A1.html
// Demonstrates that we currently don't elide generic arguments that are alpha-equivalent to their
// respective generic parameter (after instantiation) for perf reasons (it would require us to
// create an inference context).
//@ has - '//*[@class="rust item-decl"]//code' "Alpha<for<'arbitrary> fn(_: &'arbitrary ())>"
pub use default_generic_args::A1;

//@ has user/type.M0.html
// Test that we don't elide `u64` even if it coincides with `A`'s default precisely because
// `()` is not the default of `B`. Mindlessly eliding `u64` would lead to `M<()>` which is a
// different type (`M<(), u64>` versus `M<u64, ()>`).
//@ has - '//*[@class="rust item-decl"]//code' "Multi<u64, ()>"
pub use default_generic_args::M0;

//@ has user/type.D0.html
//@ has - '//*[@class="rust item-decl"]//code' "dyn for<'a> Trait0<'a>"
pub use default_generic_args::D0;

// Regression test for issue #119529.
// Check that we correctly elide def ty&const args inside trait object types.

//@ has user/type.D1.html
//@ has - '//*[@class="rust item-decl"]//code' "dyn Trait1<T>"
pub use default_generic_args::D1;
//@ has user/type.D2.html
//@ has - '//*[@class="rust item-decl"]//code' "dyn Trait1<(), K>"
pub use default_generic_args::D2;
//@ has user/type.D3.html
//@ has - '//*[@class="rust item-decl"]//code' "dyn Trait1;"
pub use default_generic_args::D3;