about summary refs log tree commit diff
path: root/src/comp/syntax
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-02-03 17:39:39 -0800
committerKevin Atkinson <kevina@cs.utah.edu>2012-02-03 20:54:18 -0700
commit8fc624bc08df5cbb2a507231fe2c91cc56647ac0 (patch)
tree51c0507ffde37aabd18b875e5f781571b9c8b582 /src/comp/syntax
parentdbb13883f79cc4a1d232bd3fa97f0da0b58872bd (diff)
downloadrust-8fc624bc08df5cbb2a507231fe2c91cc56647ac0.tar.gz
rust-8fc624bc08df5cbb2a507231fe2c91cc56647ac0.zip
Fix various drift issues in the qq branch.
Diffstat (limited to 'src/comp/syntax')
-rw-r--r--src/comp/syntax/codemap.rs24
-rw-r--r--src/comp/syntax/ext/expand.rs3
-rw-r--r--src/comp/syntax/ext/qquote.rs2
-rw-r--r--src/comp/syntax/fold.rs4
-rw-r--r--src/comp/syntax/parse/lexer.rs7
-rw-r--r--src/comp/syntax/print/pprust.rs16
6 files changed, 27 insertions, 29 deletions
diff --git a/src/comp/syntax/codemap.rs b/src/comp/syntax/codemap.rs
index 26585b1eb7d..74b9bb091b4 100644
--- a/src/comp/syntax/codemap.rs
+++ b/src/comp/syntax/codemap.rs
@@ -22,9 +22,7 @@ type codemap = @{mutable files: [filemap]};
 
 type loc = {file: filemap, line: uint, col: uint};
 
-fn new_codemap() -> codemap {
-    @{mutable files: [new_filemap("-", @"", 0u, 0u)]}
-}
+fn new_codemap() -> codemap { @{mutable files: [] } }
 
 fn new_filemap_w_substr(filename: filename, substr: file_substr,
                         src: @str,
@@ -50,8 +48,6 @@ fn get_substr_info(cm: codemap, lo: uint, hi: uint)
     ret (name, {lo: lo, hi: hi, col: pos.col, line: pos.line});
 }
 
-fn empty_filemap(cm: codemap) -> filemap {cm.files[0]}
-
 fn next_line(file: filemap, chpos: uint, byte_pos: uint) {
     file.lines += [{ch: chpos, byte: byte_pos}];
 }
@@ -59,7 +55,7 @@ fn next_line(file: filemap, chpos: uint, byte_pos: uint) {
 type lookup_fn = fn@(file_pos) -> uint;
 
 fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn)
-    -> option::t<{fm: filemap, line: uint}>
+    -> {fm: filemap, line: uint}
 {
     let len = vec::len(map.files);
     let a = 0u;
@@ -69,7 +65,7 @@ fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn)
         if lookup(map.files[m].start_pos) > pos { b = m; } else { a = m; }
     }
     if (a >= len) {
-        ret none;
+        fail #fmt("position %u does not resolve to a source location", pos)
     }
     let f = map.files[a];
     a = 0u;
@@ -78,18 +74,12 @@ fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn)
         let m = (a + b) / 2u;
         if lookup(f.lines[m]) > pos { b = m; } else { a = m; }
     }
-    ret some({fm: f, line: a});
+    ret {fm: f, line: a};
 }
 
 fn lookup_pos(map: codemap, pos: uint, lookup: lookup_fn) -> loc {
-    alt lookup_line(map, pos, lookup) {
-      some({fm: f, line: a}) {
-        {file: f, line: a + 1u, col: pos - lookup(f.lines[a])}
-      }
-      none {
-        { file: empty_filemap(map), line: 0u, col: 0u }
-      }
-    }
+    let {fm: f, line: a} = lookup_line(map, pos, lookup);
+    ret {file: f, line: a + 1u, col: pos - lookup(f.lines[a])};
 }
 
 fn lookup_char_pos(map: codemap, pos: uint) -> loc {
@@ -168,7 +158,7 @@ fn lookup_byte_offset(cm: codemap::codemap, chpos: uint)
     -> {fm: filemap, pos: uint}
 {
     fn lookup(pos: file_pos) -> uint { ret pos.ch; }
-    let {fm,line} = option::get(lookup_line(cm,chpos,lookup));
+    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::byte_len_range(*fm.src, line_offset, col);
diff --git a/src/comp/syntax/ext/expand.rs b/src/comp/syntax/ext/expand.rs
index 20f04bf5cd5..a0bba6eee5c 100644
--- a/src/comp/syntax/ext/expand.rs
+++ b/src/comp/syntax/ext/expand.rs
@@ -83,7 +83,8 @@ fn expand_crate(sess: session::session, c: @crate) -> @crate {
         {fold_expr: bind expand_expr(exts, cx, _, _, _, afp.fold_expr)
             with *afp};
     let f = make_fold(f_pre);
-    let cm = parse_expr_from_source_str("<anon>", @core_macros(),
+    let cm = parse_expr_from_source_str("<core-macros>",
+                                        @core_macros(),
                                         sess.opts.cfg,
                                         sess.parse_sess);
 
diff --git a/src/comp/syntax/ext/qquote.rs b/src/comp/syntax/ext/qquote.rs
index 999c2a2449c..f215d374111 100644
--- a/src/comp/syntax/ext/qquote.rs
+++ b/src/comp/syntax/ext/qquote.rs
@@ -248,7 +248,7 @@ fn expand_qquote<N: qq_helper>
         rcall = mk_call(cx,sp,
                         ["syntax", "ext", "qquote", "replace"],
                         [pcall,
-                         mk_vec_e(cx,sp, vec::map(qcx.gather) {|g|
+                         mk_vec_e(cx,sp, vec::map(copy qcx.gather) {|g|
                              mk_call(cx,sp,
                                      ["syntax", "ext", "qquote", g.constr],
                                      [g.e])}),
diff --git a/src/comp/syntax/fold.rs b/src/comp/syntax/fold.rs
index dc172e430a5..a59338ad75c 100644
--- a/src/comp/syntax/fold.rs
+++ b/src/comp/syntax/fold.rs
@@ -432,14 +432,10 @@ fn noop_fold_ty(t: ty_, fld: ast_fold) -> ty_ {
       ty_uniq(mt) {ty_uniq(fold_mt(mt, fld))}
       ty_vec(mt) {ty_vec(fold_mt(mt, fld))}
       ty_ptr(mt) {ty_ptr(fold_mt(mt, fld))}
-      ty_task {t}
-      ty_port(ty) {ty_port(fld.fold_ty(ty))}
-      ty_chan(ty) {ty_chan(fld.fold_ty(ty))}
       ty_rec(fields) {ty_rec(vec::map(fields) {|f| fold_field(f, fld)})}
       ty_fn(proto, decl) {ty_fn(proto, fold_fn_decl(decl, fld))}
       ty_tup(tys) {ty_tup(vec::map(tys) {|ty| fld.fold_ty(ty)})}
       ty_path(path, id) {ty_path(fld.fold_path(path), fld.new_id(id))}
-      ty_type {t}
       // FIXME: constrs likely needs to be folded...
       ty_constr(ty, constrs) {ty_constr(fld.fold_ty(ty), constrs)}
       ty_mac(mac) {ty_mac(fold_mac(mac))}
diff --git a/src/comp/syntax/parse/lexer.rs b/src/comp/syntax/parse/lexer.rs
index 2ad3a7f0135..00bc73baeba 100644
--- a/src/comp/syntax/parse/lexer.rs
+++ b/src/comp/syntax/parse/lexer.rs
@@ -711,9 +711,12 @@ fn gather_comments_and_literals(cm: codemap::codemap,
         }
         let tok = next_token(rdr);
         if is_lit(tok.tok) {
-            literals += [{lit: rdr.get_str_from(tok.bpos), pos: tok.chpos}];
+            let s = rdr.get_str_from(tok.bpos);
+            literals += [{lit: s, pos: tok.chpos}];
+            log(debug, "tok lit: " + s);
+        } else {
+            log(debug, "tok: " + token::to_str(rdr, tok.tok));
         }
-        log(debug, "tok: " + token::to_str(rdr, tok.tok));
         first_read = false;
     }
     ret {cmnts: comments, lits: literals};
diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs
index 59ea8216c43..ea96d4766a7 100644
--- a/src/comp/syntax/print/pprust.rs
+++ b/src/comp/syntax/print/pprust.rs
@@ -1010,9 +1010,7 @@ fn print_expr(s: ps, &&expr: @ast::expr) {
       }
       ast::expr_assert(expr) {
         word_nbsp(s, "assert");
-        popen(s);
         print_expr(s, expr);
-        pclose(s);
       }
       ast::expr_mac(m) { print_mac(s, m); }
     }
@@ -1494,10 +1492,20 @@ fn print_literal(s: ps, &&lit: @ast::lit) {
         word(s.s, "'" + escape_str(str::from_char(ch as char), '\'') + "'");
       }
       ast::lit_int(i, t) {
-        word(s.s, int::str(i as int) + ast_util::int_ty_to_str(t));
+        if i < 0_i64 {
+            word(s.s,
+                 "-" + u64::to_str(-i as u64, 10u)
+                 + ast_util::int_ty_to_str(t));
+        } else {
+            word(s.s,
+                 u64::to_str(i as u64, 10u)
+                 + ast_util::int_ty_to_str(t));
+        }
       }
       ast::lit_uint(u, t) {
-        word(s.s, uint::str(u as uint) + ast_util::uint_ty_to_str(t));
+        word(s.s,
+             u64::to_str(u, 10u)
+             + ast_util::uint_ty_to_str(t));
       }
       ast::lit_float(f, t) {
         word(s.s, f + ast_util::float_ty_to_str(t));