5
5
// needs-unwind Asserting on contents of error message
6
6
7
7
#![ allow( path_statements, unused_allocation) ]
8
- #![ feature( core_intrinsics, generic_assert, generic_assert_internals ) ]
8
+ #![ feature( core_intrinsics, generic_assert) ]
9
9
10
10
macro_rules! test {
11
11
(
@@ -51,6 +51,7 @@ macro_rules! tests {
51
51
52
52
const FOO : Foo = Foo { bar : 1 } ;
53
53
54
+
54
55
#[ derive( Clone , Copy , Debug , PartialEq ) ]
55
56
struct Foo {
56
57
bar : i32
@@ -83,9 +84,18 @@ fn main() {
83
84
// cast
84
85
[ elem as i32 == 3 ] => "Assertion failed: elem as i32 == 3\n With captures:\n elem = 1\n "
85
86
87
+ // if
88
+ [ if elem == 3 { true } else { false } ] => "Assertion failed: if elem == 3 { true } else { false }\n With captures:\n elem = 1\n "
89
+
86
90
// index
87
91
[ [ 1i32 , 1 ] [ elem as usize ] == 3 ] => "Assertion failed: [1i32, 1][elem as usize] == 3\n With captures:\n elem = 1\n "
88
92
93
+ // let
94
+ [ if let 3 = elem { true } else { false } ] => "Assertion failed: if let 3 = elem { true } else { false }\n With captures:\n elem = 1\n "
95
+
96
+ // match
97
+ [ match elem { 3 => true , _ => false , } ] => "Assertion failed: match elem { 3 => true, _ => false, }\n With captures:\n elem = 1\n "
98
+
89
99
// method call
90
100
[ FOO . add( elem, elem) == 3 ] => "Assertion failed: FOO.add(elem, elem) == 3\n With captures:\n elem = 1\n "
91
101
@@ -107,77 +117,4 @@ fn main() {
107
117
// unary
108
118
[ -elem == -3 ] => "Assertion failed: -elem == -3\n With captures:\n elem = 1\n "
109
119
) ;
110
-
111
- // ***** Disallowed *****
112
-
113
- tests ! (
114
- let mut elem = 1i32 ;
115
-
116
- // assign
117
- [ { let local = elem; local } == 3 ] => "Assertion failed: { let local = elem; local } == 3"
118
-
119
- // assign op
120
- [ { elem += 1 ; elem } == 3 ] => "Assertion failed: { elem += 1; elem } == 3"
121
-
122
- // async
123
- [ { let _ = async { elem } ; elem } == 3 ] => "Assertion failed: { let _ = async { elem }; elem } == 3"
124
-
125
- // await
126
-
127
- // block
128
- [ { elem } == 3 ] => "Assertion failed: { elem } == 3"
129
-
130
- // break
131
- [ loop { break elem; } == 3 ] => "Assertion failed: loop { break elem; } == 3"
132
-
133
- // closure
134
- [ ( || elem) ( ) == 3 ] => "Assertion failed: (|| elem)() == 3"
135
-
136
- // const block
137
-
138
- // continue
139
-
140
- // err
141
-
142
- // field
143
- [ FOO . bar == 3 ] => "Assertion failed: FOO.bar == 3"
144
-
145
- // for loop
146
- [ { for _ in 0 ..elem { elem; } elem } == 3 ] => "Assertion failed: { for _ in 0..elem { elem; } elem } == 3"
147
-
148
- // if
149
- [ if true { elem } else { elem } == 3 ] => "Assertion failed: if true { elem } else { elem } == 3"
150
-
151
- // inline asm
152
-
153
- // let
154
- [ if let true = true { elem } else { elem } == 3 ] => "Assertion failed: if let true = true { elem } else { elem } == 3"
155
-
156
- // lit
157
-
158
- // loop
159
- [ loop { elem; break elem; } == 3 ] => "Assertion failed: loop { elem; break elem; } == 3"
160
-
161
- // mac call
162
-
163
- // match
164
- [ match elem { _ => elem } == 3 ] => "Assertion failed: (match elem { _ => elem, }) == 3"
165
-
166
- // ret
167
- [ ( || { return elem; } ) ( ) == 3 ] => "Assertion failed: (|| { return elem; })() == 3"
168
-
169
- // try
170
- [ ( || { Some ( Some ( elem) ?) } ) ( ) == Some ( 3 ) ] => "Assertion failed: (|| { Some(Some(elem)?) })() == Some(3)"
171
-
172
- // try block
173
-
174
- // underscore
175
-
176
- // while
177
- [ { while false { elem; break ; } elem } == 3 ] => "Assertion failed: { while false { elem; break; } elem } == 3"
178
-
179
- // yeet
180
-
181
- // yield
182
- ) ;
183
120
}
0 commit comments