@@ -31,6 +31,7 @@ const CRATE_NAME: &str = "crate_variant_ty";
31
31
fn test_def_tys ( ) -> ControlFlow < ( ) > {
32
32
check_adt_mono ( ) ;
33
33
check_adt_poly ( ) ;
34
+ check_adt_poly2 ( ) ;
34
35
35
36
ControlFlow :: Continue ( ( ) )
36
37
}
@@ -75,6 +76,26 @@ fn check_adt_poly() {
75
76
) ;
76
77
}
77
78
79
+ fn check_adt_poly2 ( ) {
80
+ let poly = get_fn ( "poly2" ) . expect_body ( ) ;
81
+
82
+ check_statement_is_aggregate_assign (
83
+ & poly. blocks [ 0 ] . statements [ 0 ] ,
84
+ 0 ,
85
+ RigidTy :: Int ( IntTy :: Isize ) ,
86
+ ) ;
87
+ check_statement_is_aggregate_assign (
88
+ & poly. blocks [ 1 ] . statements [ 0 ] ,
89
+ 1 ,
90
+ RigidTy :: Int ( IntTy :: Isize ) ,
91
+ ) ;
92
+ check_statement_is_aggregate_assign (
93
+ & poly. blocks [ 2 ] . statements [ 0 ] ,
94
+ 2 ,
95
+ RigidTy :: Int ( IntTy :: Isize ) ,
96
+ ) ;
97
+ }
98
+
78
99
fn get_fn ( name : & str ) -> CrateItem {
79
100
stable_mir:: all_local_items ( ) . into_iter ( ) . find ( |it| it. name ( ) . eq ( name) ) . unwrap ( )
80
101
}
@@ -135,6 +156,8 @@ fn generate_input(path: &str) -> std::io::Result<()> {
135
156
136
157
pub fn main() {{
137
158
mono();
159
+ poly();
160
+ poly2::<i32>(1);
138
161
}}
139
162
140
163
fn mono() {{
@@ -148,6 +171,12 @@ fn generate_input(path: &str) -> std::io::Result<()> {
148
171
black_box(Poly::B(1i32));
149
172
black_box(Poly::C {{ t: 1i32 }});
150
173
}}
174
+
175
+ fn poly2<T: Copy>(t: T) {{
176
+ black_box(Poly::<T>::A);
177
+ black_box(Poly::B(t));
178
+ black_box(Poly::C {{ t: t }});
179
+ }}
151
180
"#
152
181
) ?;
153
182
Ok ( ( ) )
0 commit comments