Lines Matching refs:hole
23 hole: Hole,
144 let mut dotstar_patch = Patch { hole: Hole::None, entry: 0 };
155 self.fill(dotstar_patch.hole, patch.entry);
159 self.fill_to_next(patch.hole);
175 let mut dotstar_patch = Patch { hole: Hole::None, entry: 0 };
182 self.fill_to_next(dotstar_patch.hole);
188 let Patch { hole, entry } =
190 self.fill_to_next(hole);
196 let Patch { hole, entry } =
199 self.fill_to_next(hole);
227 /// (the entry point), while the `hole` member contains zero or
239 /// hole
261 /// and has hole2 for a hole. In fact, if you look at the c_concat
413 let hole = self.push_hole(InstHole::Save { slot: first_slot });
415 self.fill(hole, patch.entry);
416 self.fill_to_next(patch.hole);
417 let hole = self.push_hole(InstHole::Save { slot: first_slot + 1 });
418 Ok(Some(Patch { hole, entry }))
444 let hole =
447 Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
452 let hole = self.push_hole(InstHole::Char { c });
453 Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
466 let hole = if ranges.len() == 1 && ranges[0].0 == ranges[0].1 {
473 Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
508 Ok(Some(Patch { hole: Hole::Many(holes), entry: first_split_entry }))
512 let hole = self.push_hole(InstHole::EmptyLook { look });
513 Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
521 let Patch { mut hole, entry } = loop {
533 self.fill(hole, p.entry);
534 hole = p.hole;
537 Ok(Some(Patch { hole, entry }))
553 // true indicates that the hole is a split where we want to fill
564 if let Some(Patch { hole, entry }) = self.c(e)? {
565 holes.push(hole);
573 if let Some(Patch { hole, entry }) = self.c(&exprs[exprs.len() - 1])? {
574 holes.push(hole);
586 Ok(Some(Patch { hole: Hole::Many(holes), entry: first_split_entry }))
614 let Patch { hole: hole_rep, entry: entry_rep } = match self.c(expr)? {
624 Ok(Some(Patch { hole: Hole::Many(holes), entry: split_entry }))
634 let Patch { hole: hole_rep, entry: entry_rep } = match self.c(expr)? {
645 Ok(Some(Patch { hole: split_hole, entry: split_entry }))
653 let Patch { hole: hole_rep, entry: entry_rep } = match self.c(expr)? {
665 Ok(Some(Patch { hole: split_hole, entry: entry_rep }))
682 self.fill(patch_concat.hole, patch_rep.entry);
683 Ok(Some(Patch { hole: patch_rep.hole, entry: patch_concat.entry }))
726 let mut prev_hole = patch_concat.hole;
730 let Patch { hole, entry } = match self.c(expr)? {
734 prev_hole = hole;
742 Ok(Some(Patch { hole: Hole::Many(holes), entry: initial_entry }))
749 Patch { hole: Hole::None, entry: self.insts.len() }
752 fn fill(&mut self, hole: Hole, goto: InstPtr) {
753 match hole {
759 for hole in holes {
760 self.fill(hole, goto);
766 fn fill_to_next(&mut self, hole: Hole) {
768 self.fill(hole, next);
773 hole: Hole,
777 match hole {
799 for hole in holes {
800 new_holes.push(self.fill_split(hole, goto1, goto2));
818 let hole = self.insts.len();
820 Hole::One(hole)
824 let hole = self.insts.len();
826 Hole::One(hole)
859 unreachable!("must be called on single hole")
1001 let Patch { hole, entry } = self.c_utf8_seq(&utf8_seq)?;
1002 holes.push(hole);
1014 let Patch { hole, entry } = self.c_utf8_seq(&utf8_seq)?;
1015 holes.push(hole);
1022 Ok(Patch { hole: Hole::Many(holes), entry: initial_entry.unwrap() })
1070 Ok(Patch { hole: last_hole, entry: from_inst })