1
1
use std:: fmt;
2
2
3
+ use thin_vec:: thin_vec;
4
+
3
5
use super :: * ;
4
6
5
7
impl < ' a > super :: ForestObligation for & ' a str {
@@ -101,9 +103,9 @@ fn push_pop() {
101
103
// |-> A.3
102
104
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
103
105
|obligation| match * obligation {
104
- "A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
106
+ "A" => ProcessResult :: Changed ( thin_vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
105
107
"B" => ProcessResult :: Error ( "B is for broken" ) ,
106
- "C" => ProcessResult :: Changed ( vec ! [ ] ) ,
108
+ "C" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
107
109
"A.1" | "A.2" | "A.3" => ProcessResult :: Unchanged ,
108
110
_ => unreachable ! ( ) ,
109
111
} ,
@@ -123,8 +125,8 @@ fn push_pop() {
123
125
|obligation| match * obligation {
124
126
"A.1" => ProcessResult :: Unchanged ,
125
127
"A.2" => ProcessResult :: Unchanged ,
126
- "A.3" => ProcessResult :: Changed ( vec ! [ "A.3.i" ] ) ,
127
- "D" => ProcessResult :: Changed ( vec ! [ "D.1" , "D.2" ] ) ,
128
+ "A.3" => ProcessResult :: Changed ( thin_vec ! [ "A.3.i" ] ) ,
129
+ "D" => ProcessResult :: Changed ( thin_vec ! [ "D.1" , "D.2" ] ) ,
128
130
"A.3.i" | "D.1" | "D.2" => ProcessResult :: Unchanged ,
129
131
_ => unreachable ! ( ) ,
130
132
} ,
@@ -139,11 +141,11 @@ fn push_pop() {
139
141
// |-> D.2 |-> D.2.i
140
142
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
141
143
|obligation| match * obligation {
142
- "A.1" => ProcessResult :: Changed ( vec ! [ ] ) ,
144
+ "A.1" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
143
145
"A.2" => ProcessResult :: Error ( "A is for apple" ) ,
144
- "A.3.i" => ProcessResult :: Changed ( vec ! [ ] ) ,
145
- "D.1" => ProcessResult :: Changed ( vec ! [ "D.1.i" ] ) ,
146
- "D.2" => ProcessResult :: Changed ( vec ! [ "D.2.i" ] ) ,
146
+ "A.3.i" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
147
+ "D.1" => ProcessResult :: Changed ( thin_vec ! [ "D.1.i" ] ) ,
148
+ "D.2" => ProcessResult :: Changed ( thin_vec ! [ "D.2.i" ] ) ,
147
149
"D.1.i" | "D.2.i" => ProcessResult :: Unchanged ,
148
150
_ => unreachable ! ( ) ,
149
151
} ,
@@ -158,7 +160,7 @@ fn push_pop() {
158
160
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
159
161
|obligation| match * obligation {
160
162
"D.1.i" => ProcessResult :: Error ( "D is for dumb" ) ,
161
- "D.2.i" => ProcessResult :: Changed ( vec ! [ ] ) ,
163
+ "D.2.i" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
162
164
_ => panic ! ( "unexpected obligation {:?}" , obligation) ,
163
165
} ,
164
166
|_| { } ,
@@ -184,10 +186,10 @@ fn success_in_grandchildren() {
184
186
185
187
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
186
188
|obligation| match * obligation {
187
- "A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
188
- "A.1" => ProcessResult :: Changed ( vec ! [ ] ) ,
189
- "A.2" => ProcessResult :: Changed ( vec ! [ "A.2.i" , "A.2.ii" ] ) ,
190
- "A.3" => ProcessResult :: Changed ( vec ! [ ] ) ,
189
+ "A" => ProcessResult :: Changed ( thin_vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
190
+ "A.1" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
191
+ "A.2" => ProcessResult :: Changed ( thin_vec ! [ "A.2.i" , "A.2.ii" ] ) ,
192
+ "A.3" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
191
193
"A.2.i" | "A.2.ii" => ProcessResult :: Unchanged ,
192
194
_ => unreachable ! ( ) ,
193
195
} ,
@@ -201,7 +203,7 @@ fn success_in_grandchildren() {
201
203
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
202
204
|obligation| match * obligation {
203
205
"A.2.i" => ProcessResult :: Unchanged ,
204
- "A.2.ii" => ProcessResult :: Changed ( vec ! [ ] ) ,
206
+ "A.2.ii" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
205
207
_ => unreachable ! ( ) ,
206
208
} ,
207
209
|_| { } ,
@@ -211,7 +213,7 @@ fn success_in_grandchildren() {
211
213
212
214
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
213
215
|obligation| match * obligation {
214
- "A.2.i" => ProcessResult :: Changed ( vec ! [ "A.2.i.a" ] ) ,
216
+ "A.2.i" => ProcessResult :: Changed ( thin_vec ! [ "A.2.i.a" ] ) ,
215
217
"A.2.i.a" => ProcessResult :: Unchanged ,
216
218
_ => unreachable ! ( ) ,
217
219
} ,
@@ -222,7 +224,7 @@ fn success_in_grandchildren() {
222
224
223
225
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
224
226
|obligation| match * obligation {
225
- "A.2.i.a" => ProcessResult :: Changed ( vec ! [ ] ) ,
227
+ "A.2.i.a" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
226
228
_ => unreachable ! ( ) ,
227
229
} ,
228
230
|_| { } ,
@@ -247,7 +249,7 @@ fn to_errors_no_throw() {
247
249
forest. register_obligation ( "A" ) ;
248
250
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
249
251
|obligation| match * obligation {
250
- "A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
252
+ "A" => ProcessResult :: Changed ( thin_vec ! [ "A.1" , "A.2" , "A.3" ] ) ,
251
253
"A.1" | "A.2" | "A.3" => ProcessResult :: Unchanged ,
252
254
_ => unreachable ! ( ) ,
253
255
} ,
@@ -269,7 +271,7 @@ fn diamond() {
269
271
forest. register_obligation ( "A" ) ;
270
272
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
271
273
|obligation| match * obligation {
272
- "A" => ProcessResult :: Changed ( vec ! [ "A.1" , "A.2" ] ) ,
274
+ "A" => ProcessResult :: Changed ( thin_vec ! [ "A.1" , "A.2" ] ) ,
273
275
"A.1" | "A.2" => ProcessResult :: Unchanged ,
274
276
_ => unreachable ! ( ) ,
275
277
} ,
@@ -280,8 +282,8 @@ fn diamond() {
280
282
281
283
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
282
284
|obligation| match * obligation {
283
- "A.1" => ProcessResult :: Changed ( vec ! [ "D" ] ) ,
284
- "A.2" => ProcessResult :: Changed ( vec ! [ "D" ] ) ,
285
+ "A.1" => ProcessResult :: Changed ( thin_vec ! [ "D" ] ) ,
286
+ "A.2" => ProcessResult :: Changed ( thin_vec ! [ "D" ] ) ,
285
287
"D" => ProcessResult :: Unchanged ,
286
288
_ => unreachable ! ( ) ,
287
289
} ,
@@ -295,7 +297,7 @@ fn diamond() {
295
297
|obligation| match * obligation {
296
298
"D" => {
297
299
d_count += 1 ;
298
- ProcessResult :: Changed ( vec ! [ ] )
300
+ ProcessResult :: Changed ( thin_vec ! [ ] )
299
301
}
300
302
_ => unreachable ! ( ) ,
301
303
} ,
@@ -313,7 +315,7 @@ fn diamond() {
313
315
forest. register_obligation ( "A'" ) ;
314
316
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
315
317
|obligation| match * obligation {
316
- "A'" => ProcessResult :: Changed ( vec ! [ "A'.1" , "A'.2" ] ) ,
318
+ "A'" => ProcessResult :: Changed ( thin_vec ! [ "A'.1" , "A'.2" ] ) ,
317
319
"A'.1" | "A'.2" => ProcessResult :: Unchanged ,
318
320
_ => unreachable ! ( ) ,
319
321
} ,
@@ -324,8 +326,8 @@ fn diamond() {
324
326
325
327
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
326
328
|obligation| match * obligation {
327
- "A'.1" => ProcessResult :: Changed ( vec ! [ "D'" , "A'" ] ) ,
328
- "A'.2" => ProcessResult :: Changed ( vec ! [ "D'" ] ) ,
329
+ "A'.1" => ProcessResult :: Changed ( thin_vec ! [ "D'" , "A'" ] ) ,
330
+ "A'.2" => ProcessResult :: Changed ( thin_vec ! [ "D'" ] ) ,
329
331
"D'" | "A'" => ProcessResult :: Unchanged ,
330
332
_ => unreachable ! ( ) ,
331
333
} ,
@@ -366,7 +368,7 @@ fn done_dependency() {
366
368
367
369
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
368
370
|obligation| match * obligation {
369
- "A: Sized" | "B: Sized" | "C: Sized" => ProcessResult :: Changed ( vec ! [ ] ) ,
371
+ "A: Sized" | "B: Sized" | "C: Sized" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
370
372
_ => unreachable ! ( ) ,
371
373
} ,
372
374
|_| { } ,
@@ -379,7 +381,9 @@ fn done_dependency() {
379
381
forest. register_obligation ( "(A,B,C): Sized" ) ;
380
382
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
381
383
|obligation| match * obligation {
382
- "(A,B,C): Sized" => ProcessResult :: Changed ( vec ! [ "A: Sized" , "B: Sized" , "C: Sized" ] ) ,
384
+ "(A,B,C): Sized" => {
385
+ ProcessResult :: Changed ( thin_vec ! [ "A: Sized" , "B: Sized" , "C: Sized" ] )
386
+ }
383
387
_ => unreachable ! ( ) ,
384
388
} ,
385
389
|_| { } ,
@@ -399,10 +403,10 @@ fn orphan() {
399
403
400
404
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
401
405
|obligation| match * obligation {
402
- "A" => ProcessResult :: Changed ( vec ! [ "D" , "E" ] ) ,
406
+ "A" => ProcessResult :: Changed ( thin_vec ! [ "D" , "E" ] ) ,
403
407
"B" => ProcessResult :: Unchanged ,
404
- "C1" => ProcessResult :: Changed ( vec ! [ ] ) ,
405
- "C2" => ProcessResult :: Changed ( vec ! [ ] ) ,
408
+ "C1" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
409
+ "C2" => ProcessResult :: Changed ( thin_vec ! [ ] ) ,
406
410
"D" | "E" => ProcessResult :: Unchanged ,
407
411
_ => unreachable ! ( ) ,
408
412
} ,
@@ -416,7 +420,7 @@ fn orphan() {
416
420
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
417
421
|obligation| match * obligation {
418
422
"D" | "E" => ProcessResult :: Unchanged ,
419
- "B" => ProcessResult :: Changed ( vec ! [ "D" ] ) ,
423
+ "B" => ProcessResult :: Changed ( thin_vec ! [ "D" ] ) ,
420
424
_ => unreachable ! ( ) ,
421
425
} ,
422
426
|_| { } ,
@@ -459,7 +463,7 @@ fn simultaneous_register_and_error() {
459
463
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
460
464
|obligation| match * obligation {
461
465
"A" => ProcessResult :: Error ( "An error" ) ,
462
- "B" => ProcessResult :: Changed ( vec ! [ "A" ] ) ,
466
+ "B" => ProcessResult :: Changed ( thin_vec ! [ "A" ] ) ,
463
467
_ => unreachable ! ( ) ,
464
468
} ,
465
469
|_| { } ,
@@ -474,7 +478,7 @@ fn simultaneous_register_and_error() {
474
478
let TestOutcome { completed : ok, errors : err, .. } = forest. process_obligations ( & mut C (
475
479
|obligation| match * obligation {
476
480
"A" => ProcessResult :: Error ( "An error" ) ,
477
- "B" => ProcessResult :: Changed ( vec ! [ "A" ] ) ,
481
+ "B" => ProcessResult :: Changed ( thin_vec ! [ "A" ] ) ,
478
482
_ => unreachable ! ( ) ,
479
483
} ,
480
484
|_| { } ,
0 commit comments