Skip to content

Commit d03c04b

Browse files
committed
Make tt lexers duplicatible.
1 parent 2f8be7d commit d03c04b

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

src/libsyntax/parse/lexer.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import diagnostic;
44
import ast::{tt_delim,tt_flat};
55

66
export reader, string_reader, new_string_reader, is_whitespace;
7-
export tt_reader, new_tt_reader;
7+
export tt_reader, new_tt_reader, dup_tt_reader;
88
export nextch, is_eof, bump, get_str_from;
99
export string_reader_as_reader, tt_reader_as_reader;
1010

@@ -49,6 +49,22 @@ fn new_tt_reader(span_diagnostic: diagnostic::span_handler,
4949
ret r;
5050
}
5151

52+
pure fn dup_tt_frame(&&f: tt_frame) -> tt_frame {
53+
@{readme: f.readme, mut idx: f.idx,
54+
up: alt f.up {
55+
tt_frame_up(o_f) {
56+
tt_frame_up(option::map(o_f, dup_tt_frame))
57+
}
58+
}
59+
}
60+
}
61+
62+
pure fn dup_tt_reader(&&r: tt_reader) -> tt_reader {
63+
@{span_diagnostic: r.span_diagnostic, interner: r.interner,
64+
mut cur: dup_tt_frame(r.cur),
65+
mut cur_tok: r.cur_tok, mut cur_chpos: r.cur_chpos}
66+
}
67+
5268
type string_reader = @{
5369
span_diagnostic: diagnostic::span_handler,
5470
src: @str,

0 commit comments

Comments
 (0)