File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change 1
- #![ feature( generators, generator_trait) ]
1
+ #![ feature( generators, generator_trait, never_type ) ]
2
2
3
3
use std:: ops:: { GeneratorState , Generator } ;
4
4
use std:: pin:: Pin ;
@@ -26,6 +26,7 @@ fn never() -> Never {
26
26
27
27
fn main ( ) {
28
28
finish ( 1 , || yield 1 ) ;
29
+
29
30
finish ( 3 , || {
30
31
let mut x = 0 ;
31
32
yield 1 ;
@@ -35,30 +36,35 @@ fn main() {
35
36
yield 1 ;
36
37
assert_eq ! ( x, 2 ) ;
37
38
} ) ;
39
+
38
40
finish ( 7 * 8 /2 , || {
39
41
for i in 0 ..8 {
40
42
yield i;
41
43
}
42
44
} ) ;
45
+
43
46
finish ( 1 , || {
44
47
if true {
45
48
yield 1 ;
46
49
} else {
47
50
}
48
51
} ) ;
52
+
49
53
finish ( 1 , || {
50
54
if false {
51
55
} else {
52
56
yield 1 ;
53
57
}
54
58
} ) ;
59
+
55
60
finish ( 2 , || {
56
61
if { yield 1 ; false } {
57
62
yield 1 ;
58
63
panic ! ( )
59
64
}
60
65
yield 1 ;
61
66
} ) ;
67
+
62
68
// also test a self-referential generator
63
69
assert_eq ! (
64
70
finish( 5 , || {
@@ -71,6 +77,7 @@ fn main() {
71
77
} ) ,
72
78
10
73
79
) ;
80
+
74
81
let b = true ;
75
82
finish ( 1 , || {
76
83
yield 1 ;
@@ -80,4 +87,10 @@ fn main() {
80
87
yield 2 ;
81
88
drop ( x) ;
82
89
} ) ;
90
+
91
+ finish ( 3 , || {
92
+ yield 1 ;
93
+ #[ allow( unreachable_code) ]
94
+ let _x: ( String , !) = ( String :: new ( ) , { yield 2 ; return } ) ;
95
+ } ) ;
83
96
}
You can’t perform that action at this time.
0 commit comments