summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-06-02 20:50:21 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-06-06 18:36:34 -0700
commitb61071d953019ccfcc8b5c53f737256a1c64230d (patch)
tree6507577863928b4864c5ac92bfac476410d0fbe6 /src/libsyntax
parent83d290f461c8cf3fe65e682162f3acd4a6369478 (diff)
downloadrust-b61071d953019ccfcc8b5c53f737256a1c64230d.tar.gz
rust-b61071d953019ccfcc8b5c53f737256a1c64230d.zip
make lookup fn pure in codemap
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/codemap.rs11
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);