summary refs log tree commit diff
path: root/src/comp/metadata
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2011-12-09 16:56:48 -0800
committerNiko Matsakis <niko@alum.mit.edu>2011-12-14 14:32:18 -0800
commitaa1cd61c84199c8a1e44645e4af3f8c15c6dd018 (patch)
tree96473fff23d43ceb7527e4bad10ef81e631e429f /src/comp/metadata
parentc28ada0368de78034e0930e01406f5e03a70d610 (diff)
downloadrust-aa1cd61c84199c8a1e44645e4af3f8c15c6dd018.tar.gz
rust-aa1cd61c84199c8a1e44645e4af3f8c15c6dd018.zip
push changes through to get things compiling, if not running.
Diffstat (limited to 'src/comp/metadata')
-rw-r--r--src/comp/metadata/tydecode.rs23
-rw-r--r--src/comp/metadata/tyencode.rs1
2 files changed, 14 insertions, 10 deletions
diff --git a/src/comp/metadata/tydecode.rs b/src/comp/metadata/tydecode.rs
index 0bf44376b63..434564f9c0d 100644
--- a/src/comp/metadata/tydecode.rs
+++ b/src/comp/metadata/tydecode.rs
@@ -164,6 +164,13 @@ fn parse_constr<copy T>(st: @pstate, sd: str_def, pser: arg_parser<T>) ->
     ret @respan(sp, {path: pth, args: args, id: def});
 }
 
+fn parse_ty_rust_fn(st: @pstate, sd: str_def, p: ast::proto) -> ty::t {
+    let func = parse_ty_fn(st, sd);
+    ret ty::mk_fn(st.tcx, p,
+                  func.args, func.ty, func.cf,
+                  func.cs);
+}
+
 fn parse_ty(st: @pstate, sd: str_def) -> ty::t {
     alt next(st) as char {
       'n' { ret ty::mk_nil(st.tcx); }
@@ -235,21 +242,17 @@ fn parse_ty(st: @pstate, sd: str_def) -> ty::t {
         st.pos = st.pos + 1u;
         ret ty::mk_tup(st.tcx, params);
       }
+      's' {
+        ret parse_ty_rust_fn(st, sd, ast::proto_send);
+      }
       'F' {
-        let func = parse_ty_fn(st, sd);
-        ret ty::mk_fn(st.tcx, ast::proto_shared(ast::sugar_normal),
-                      func.args, func.ty, func.cf,
-                      func.cs);
+        ret parse_ty_rust_fn(st, sd, ast::proto_shared(ast::sugar_normal));
       }
       'f' {
-        let func = parse_ty_fn(st, sd);
-        ret ty::mk_fn(st.tcx, ast::proto_bare, func.args, func.ty, func.cf,
-                      func.cs);
+        ret parse_ty_rust_fn(st, sd, ast::proto_bare);
       }
       'B' {
-        let func = parse_ty_fn(st, sd);
-        ret ty::mk_fn(st.tcx, ast::proto_block, func.args, func.ty, func.cf,
-                      func.cs);
+        ret parse_ty_rust_fn(st, sd, ast::proto_block);
       }
       'N' {
         let func = parse_ty_fn(st, sd);
diff --git a/src/comp/metadata/tyencode.rs b/src/comp/metadata/tyencode.rs
index 9fb37e4f4bf..18ab46d7ef3 100644
--- a/src/comp/metadata/tyencode.rs
+++ b/src/comp/metadata/tyencode.rs
@@ -193,6 +193,7 @@ fn enc_sty(w: io::writer, cx: @ctxt, st: ty::sty) {
 }
 fn enc_proto(w: io::writer, proto: proto) {
     alt proto {
+      proto_send. { w.write_char('s'); }
       proto_shared(_) { w.write_char('F'); }
       proto_block. { w.write_char('B'); }
       proto_bare. { w.write_char('f'); }