(&mut self, ranges: &[hir::ClassBytesRange])
| 423 | } |
| 424 | |
| 425 | fn c_class_bytes(&mut self, ranges: &[hir::ClassBytesRange]) -> Result { |
| 426 | debug_assert!(!ranges.is_empty()); |
| 427 | |
| 428 | let first_split_entry = self.insts.len(); |
| 429 | let mut holes = vec![]; |
| 430 | let mut prev_hole = Hole::None; |
| 431 | for r in &ranges[0..ranges.len() - 1] { |
| 432 | self.fill_to_next(prev_hole); |
| 433 | let split = self.push_split_hole(); |
| 434 | let next = self.insts.len(); |
| 435 | self.byte_classes.set_range(r.start(), r.end()); |
| 436 | holes.push(self.push_hole(InstHole::Bytes { |
| 437 | start: r.start(), end: r.end(), |
| 438 | })); |
| 439 | prev_hole = self.fill_split(split, Some(next), None); |
| 440 | } |
| 441 | let next = self.insts.len(); |
| 442 | let r = &ranges[ranges.len() - 1]; |
| 443 | self.byte_classes.set_range(r.start(), r.end()); |
| 444 | holes.push(self.push_hole(InstHole::Bytes { |
| 445 | start: r.start(), end: r.end(), |
| 446 | })); |
| 447 | self.fill(prev_hole, next); |
| 448 | Ok(Patch { hole: Hole::Many(holes), entry: first_split_entry }) |
| 449 | } |
| 450 | |
| 451 | fn c_empty_look(&mut self, look: EmptyLook) -> Result { |
| 452 | let hole = self.push_hole(InstHole::EmptyLook { look: look }); |
no test coverage detected