File tree 1 file changed +7
-12
lines changed
src/librustc/middle/trans
1 file changed +7
-12
lines changed Original file line number Diff line number Diff line change @@ -1369,19 +1369,14 @@ pub fn compile_submatch(bcx: block,
1369
1369
PointerCast(bcx, val, T_opaque_enum_ptr(ccx));
1370
1370
let discrimptr = GEPi(bcx, enumptr, [0u, 0u]);
1371
1371
1372
- let mut min_discrim = variants[0].disr_val;
1373
- for uint::range(1, variants.len()) |idx| {
1374
- if variants[idx].disr_val < min_discrim {
1375
- min_discrim = variants[idx].disr_val;
1376
- }
1377
- }
1378
1372
1379
- let mut max_discrim = variants[0].disr_val;
1380
- for uint::range(1, variants.len()) |idx| {
1381
- if variants[idx].disr_val > max_discrim {
1382
- max_discrim = variants[idx].disr_val;
1383
- }
1384
- }
1373
+ assert variants.len() > 1;
1374
+ let min_discrim = do variants.foldr(0) |&x, y| {
1375
+ int::min(x.disr_val, y)
1376
+ };
1377
+ let max_discrim = do variants.foldr(0) |&x, y| {
1378
+ int::max(x.disr_val, y)
1379
+ };
1385
1380
1386
1381
test_val = LoadRangeAssert(bcx, discrimptr,
1387
1382
min_discrim as c_ulonglong,
You can’t perform that action at this time.
0 commit comments