aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/tests/never_type.rs
diff options
context:
space:
mode:
authoruHOOCCOOHu <[email protected]>2019-09-18 17:36:12 +0100
committeruHOOCCOOHu <[email protected]>2019-09-25 23:16:52 +0100
commit5807e261c27e4964fc6a8d2b8cf02e548292b940 (patch)
treeb6bfef565281c2fec4b584a4e2759ff1c5b417e5 /crates/ra_hir/src/ty/tests/never_type.rs
parentbf161fa3e58d57d9b15bd965405036d834f18595 (diff)
Support custom `CoerceUnsized`
Split out tests about coercion
Diffstat (limited to 'crates/ra_hir/src/ty/tests/never_type.rs')
-rw-r--r--crates/ra_hir/src/ty/tests/never_type.rs36
1 files changed, 12 insertions, 24 deletions
diff --git a/crates/ra_hir/src/ty/tests/never_type.rs b/crates/ra_hir/src/ty/tests/never_type.rs
index b9af918e9..c202f545a 100644
--- a/crates/ra_hir/src/ty/tests/never_type.rs
+++ b/crates/ra_hir/src/ty/tests/never_type.rs
@@ -19,12 +19,10 @@ fn infer_never2() {
19 let t = type_at( 19 let t = type_at(
20 r#" 20 r#"
21//- /main.rs 21//- /main.rs
22trait Foo { fn gen() -> Self; } 22fn gen<T>() -> T { loop {} }
23impl Foo for ! { fn gen() -> Self { loop {} } }
24impl Foo for () { fn gen() -> Self { loop {} } }
25 23
26fn test() { 24fn test() {
27 let a = Foo::gen(); 25 let a = gen();
28 if false { a } else { loop {} }; 26 if false { a } else { loop {} };
29 a<|>; 27 a<|>;
30} 28}
@@ -38,12 +36,10 @@ fn infer_never3() {
38 let t = type_at( 36 let t = type_at(
39 r#" 37 r#"
40//- /main.rs 38//- /main.rs
41trait Foo { fn gen() -> Self; } 39fn gen<T>() -> T { loop {} }
42impl Foo for ! { fn gen() -> Self { loop {} } }
43impl Foo for () { fn gen() -> Self { loop {} } }
44 40
45fn test() { 41fn test() {
46 let a = Foo::gen(); 42 let a = gen();
47 if false { loop {} } else { a }; 43 if false { loop {} } else { a };
48 a<|>; 44 a<|>;
49} 45}
@@ -73,12 +69,10 @@ fn never_type_can_be_reinferred1() {
73 let t = type_at( 69 let t = type_at(
74 r#" 70 r#"
75//- /main.rs 71//- /main.rs
76trait Foo { fn gen() -> Self; } 72fn gen<T>() -> T { loop {} }
77impl Foo for ! { fn gen() -> Self { loop {} } }
78impl Foo for () { fn gen() -> Self { loop {} } }
79 73
80fn test() { 74fn test() {
81 let a = Foo::gen(); 75 let a = gen();
82 if false { loop {} } else { a }; 76 if false { loop {} } else { a };
83 a<|>; 77 a<|>;
84 if false { a }; 78 if false { a };
@@ -154,8 +148,7 @@ fn test() {
154 } else { 148 } else {
155 3.0 149 3.0
156 }; 150 };
157 i<|> 151 i<|>;
158 ()
159} 152}
160"#, 153"#,
161 ); 154 );
@@ -173,8 +166,7 @@ fn test(input: bool) {
173 } else { 166 } else {
174 return 167 return
175 }; 168 };
176 i<|> 169 i<|>;
177 ()
178} 170}
179"#, 171"#,
180 ); 172 );
@@ -193,8 +185,7 @@ fn test(a: i32) {
193 3 => loop {}, 185 3 => loop {},
194 _ => 3.0, 186 _ => 3.0,
195 }; 187 };
196 i<|> 188 i<|>;
197 ()
198} 189}
199"#, 190"#,
200 ); 191 );
@@ -213,8 +204,7 @@ fn test(a: i32) {
213 3 => 3.0, 204 3 => 3.0,
214 _ => return, 205 _ => return,
215 }; 206 };
216 i<|> 207 i<|>;
217 ()
218} 208}
219"#, 209"#,
220 ); 210 );
@@ -231,8 +221,7 @@ fn test(a: i32) {
231 2 => return, 221 2 => return,
232 _ => loop {}, 222 _ => loop {},
233 }; 223 };
234 i<|> 224 i<|>;
235 ()
236} 225}
237"#, 226"#,
238 ); 227 );
@@ -249,8 +238,7 @@ fn test(a: i32) {
249 2 => 2.0, 238 2 => 2.0,
250 _ => 3.0, 239 _ => 3.0,
251 }; 240 };
252 i<|> 241 i<|>;
253 ()
254} 242}
255"#, 243"#,
256 ); 244 );