diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-06-02 20:50:21 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-06-06 18:36:34 -0700 |
| commit | b61071d953019ccfcc8b5c53f737256a1c64230d (patch) | |
| tree | 6507577863928b4864c5ac92bfac476410d0fbe6 /src/libsyntax | |
| parent | 83d290f461c8cf3fe65e682162f3acd4a6369478 (diff) | |
| download | rust-b61071d953019ccfcc8b5c53f737256a1c64230d.tar.gz rust-b61071d953019ccfcc8b5c53f737256a1c64230d.zip | |
make lookup fn pure in codemap
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/codemap.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index 259041959d4..0fa419cd4a9 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -77,7 +77,7 @@ fn next_line(file: filemap, chpos: uint, byte_pos: uint) { file.lines += [{ch: chpos, byte: byte_pos + file.start_pos.byte}]; } -type lookup_fn = fn@(file_pos) -> uint; +type lookup_fn = pure fn(file_pos) -> uint; fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn) -> {fm: filemap, line: uint} @@ -108,12 +108,12 @@ fn lookup_pos(map: codemap, pos: uint, lookup: lookup_fn) -> loc { } fn lookup_char_pos(map: codemap, pos: uint) -> loc { - fn lookup(pos: file_pos) -> uint { ret pos.ch; } + pure fn lookup(pos: file_pos) -> uint { ret pos.ch; } ret lookup_pos(map, pos, lookup); } fn lookup_byte_pos(map: codemap, pos: uint) -> loc { - fn lookup(pos: file_pos) -> uint { ret pos.byte; } + pure fn lookup(pos: file_pos) -> uint { ret pos.byte; } ret lookup_pos(map, pos, lookup); } @@ -139,7 +139,7 @@ fn lookup_char_pos_adj(map: codemap, pos: uint) } fn adjust_span(map: codemap, sp: span) -> span { - fn lookup(pos: file_pos) -> uint { ret pos.ch; } + pure fn lookup(pos: file_pos) -> uint { ret pos.ch; } let line = lookup_line(map, sp.lo, lookup); alt (line.fm.substr) { fss_none {sp} @@ -198,7 +198,8 @@ fn get_line(fm: filemap, line: int) -> str unsafe { fn lookup_byte_offset(cm: codemap::codemap, chpos: uint) -> {fm: filemap, pos: uint} { - let {fm, line} = lookup_line(cm, chpos, {|pos| pos.ch}); + pure fn lookup(pos: file_pos) -> uint { ret pos.ch; } + let {fm, line} = lookup_line(cm, chpos, lookup); let line_offset = fm.lines[line].byte - fm.start_pos.byte; let col = chpos - fm.lines[line].ch; let col_offset = str::count_bytes(*fm.src, line_offset, col); |
