diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index ba13cf5b..11e6d95d 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -2376,6 +2376,20 @@ impl Machine { (HeapCellValueTag::Char) => { self.machine_st.p += 1; } + (HeapCellValueTag::Cons, c) => { + match_untyped_arena_ptr!(c, + (ArenaHeaderTag::Stream, stream) => { + if stream.options().get_alias().is_none() { + self.machine_st.backtrack(); + } else { + self.machine_st.p += 1; + } + } + _ => { + self.machine_st.backtrack(); + } + ); + } _ => { self.machine_st.backtrack(); } @@ -2405,6 +2419,20 @@ impl Machine { (HeapCellValueTag::Char) => { self.machine_st.p = self.machine_st.cp; } + (HeapCellValueTag::Cons, c) => { + match_untyped_arena_ptr!(c, + (ArenaHeaderTag::Stream, stream) => { + if stream.options().get_alias().is_none() { + self.machine_st.backtrack(); + } else { + self.machine_st.p = self.machine_st.cp; + } + } + _ => { + self.machine_st.backtrack(); + } + ); + } _ => { self.machine_st.backtrack(); }