summary refs log tree commit diff
path: root/src/rustc/metadata
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-05-14 20:41:33 -0700
committerBrian Anderson <banderson@mozilla.com>2012-05-14 20:41:33 -0700
commit452fc46ffcff5b7e1dfc475b892bef8c0547e7e1 (patch)
treedc31b62a5557042fba54e69e50b35ef5fae4dec1 /src/rustc/metadata
parent0f49928c2d2a5a35e4a103fbe93481621694c912 (diff)
downloadrust-452fc46ffcff5b7e1dfc475b892bef8c0547e7e1.tar.gz
rust-452fc46ffcff5b7e1dfc475b892bef8c0547e7e1.zip
rustc: Break some of metadata's dependencies on session
Diffstat (limited to 'src/rustc/metadata')
-rw-r--r--src/rustc/metadata/decoder.rs6
-rw-r--r--src/rustc/metadata/encoder.rs24
-rw-r--r--src/rustc/metadata/tydecode.rs2
-rw-r--r--src/rustc/metadata/tyencode.rs5
4 files changed, 23 insertions, 14 deletions
diff --git a/src/rustc/metadata/decoder.rs b/src/rustc/metadata/decoder.rs
index b91deaddba7..1c8caa0f4aa 100644
--- a/src/rustc/metadata/decoder.rs
+++ b/src/rustc/metadata/decoder.rs
@@ -4,7 +4,6 @@ import std::{ebml, map};
 import std::map::hashmap;
 import io::writer_util;
 import syntax::{ast, ast_util};
-import driver::session::session;
 import syntax::attr;
 import middle::ty;
 import middle::ast_map;
@@ -15,6 +14,7 @@ import syntax::print::pprust;
 import cmd=cstore::crate_metadata;
 import util::ppaux::ty_to_str;
 import ebml::deserializer;
+import syntax::diagnostic::span_handler;
 
 export get_class_fields;
 export get_symbol;
@@ -455,7 +455,9 @@ fn get_iface_methods(cdata: cmd, id: ast::node_id, tcx: ty::ctxt)
         let name = item_name(mth);
         let ty = doc_type(mth, tcx, cdata);
         let fty = alt ty::get(ty).struct { ty::ty_fn(f) { f }
-          _ { tcx.sess.bug("get_iface_methods: id has non-function type");
+          _ {
+            tcx.diag.handler().bug(
+                "get_iface_methods: id has non-function type");
         } };
         result += [{ident: name, tps: bounds, fty: fty,
                     purity: alt check item_family(mth) {
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index 4a047ac34a4..c4f3225ebfc 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -19,7 +19,7 @@ import std::serialization::serializer;
 import std::ebml::serializer;
 import middle::resolve;
 import syntax::ast;
-import driver::session::session;
+import syntax::diagnostic::span_handler;
 
 export link_meta;
 export encode_parms;
@@ -45,6 +45,7 @@ type encode_inlined_item = fn@(ecx: @encode_ctxt,
                                ii: ast::inlined_item);
 
 type encode_parms = {
+    diag: span_handler,
     tcx: ty::ctxt,
     reachable: hashmap<ast::node_id, ()>,
     exp_map: resolve::exp_map,
@@ -57,6 +58,7 @@ type encode_parms = {
 };
 
 enum encode_ctxt = {
+    diag: span_handler,
     tcx: ty::ctxt,
     reachable: hashmap<ast::node_id, ()>,
     exp_map: resolve::exp_map,
@@ -281,7 +283,8 @@ fn def_to_str(did: def_id) -> str { ret #fmt["%d:%d", did.crate, did.node]; }
 
 fn encode_type_param_bounds(ebml_w: ebml::writer, ecx: @encode_ctxt,
                             params: [ty_param]) {
-    let ty_str_ctxt = @{ds: def_to_str,
+    let ty_str_ctxt = @{diag: ecx.diag,
+                        ds: def_to_str,
                         tcx: ecx.tcx,
                         reachable: reachable(ecx, _),
                         abbrevs: tyencode::ac_use_abbrevs(ecx.type_abbrevs)};
@@ -301,7 +304,8 @@ fn encode_variant_id(ebml_w: ebml::writer, vid: def_id) {
 
 fn write_type(ecx: @encode_ctxt, ebml_w: ebml::writer, typ: ty::t) {
     let ty_str_ctxt =
-        @{ds: def_to_str,
+        @{diag: ecx.diag,
+          ds: def_to_str,
           tcx: ecx.tcx,
           reachable: reachable(ecx, _),
           abbrevs: tyencode::ac_use_abbrevs(ecx.type_abbrevs)};
@@ -318,8 +322,10 @@ fn encode_symbol(ecx: @encode_ctxt, ebml_w: ebml::writer, id: node_id) {
     ebml_w.start_tag(tag_items_data_item_symbol);
     let sym = alt ecx.item_symbols.find(id) {
       some(x) { x }
-      none { ecx.tcx.sess.bug(#fmt("encode_symbol: \
-                    id not found %d", id)); }
+      none {
+        ecx.diag.handler().bug(
+            #fmt("encode_symbol: id not found %d", id));
+      }
     };
     ebml_w.writer.write(str::bytes(sym));
     ebml_w.end_tag();
@@ -426,8 +432,8 @@ fn encode_info_for_mod(ecx: @encode_ctxt, ebml_w: ebml::writer, md: _mod,
             } // for
       } // list::cons alt
       _ {
-          ecx.tcx.sess.bug(#fmt("encode_info_for_mod: empty impl_map \
-            entry for %?", path));
+          ecx.diag.handler().bug(#fmt("encode_info_for_mod: empty impl_map \
+                                       entry for %?", path));
       }
     }
     encode_path(ebml_w, path, ast_map::path_mod(name));
@@ -1057,6 +1063,7 @@ fn encode_hash(ebml_w: ebml::writer, hash: str) {
 
 fn encode_metadata(parms: encode_parms, crate: @crate) -> [u8] {
     let ecx: @encode_ctxt = @encode_ctxt({
+        diag: parms.diag,
         tcx: parms.tcx,
         reachable: parms.reachable,
         exp_map: parms.exp_map,
@@ -1102,7 +1109,8 @@ fn encode_metadata(parms: encode_parms, crate: @crate) -> [u8] {
 
 // Get the encoded string for a type
 fn encoded_ty(tcx: ty::ctxt, t: ty::t) -> str {
-    let cx = @{ds: def_to_str,
+    let cx = @{diag: tcx.diag,
+               ds: def_to_str,
                tcx: tcx,
                reachable: {|_id| false},
                abbrevs: tyencode::ac_no_abbrevs};
diff --git a/src/rustc/metadata/tydecode.rs b/src/rustc/metadata/tydecode.rs
index dbdb8137b8a..aae0f7c3924 100644
--- a/src/rustc/metadata/tydecode.rs
+++ b/src/rustc/metadata/tydecode.rs
@@ -6,8 +6,6 @@ import syntax::ast_util;
 import syntax::ast_util::respan;
 import middle::ty;
 import std::map::hashmap;
-import driver::session;
-import session::session;
 
 export parse_ty_data, parse_def_id, parse_ident;
 export parse_bounds_data;
diff --git a/src/rustc/metadata/tyencode.rs b/src/rustc/metadata/tyencode.rs
index 4f42ab4e100..ee60b297cb8 100644
--- a/src/rustc/metadata/tyencode.rs
+++ b/src/rustc/metadata/tyencode.rs
@@ -3,7 +3,7 @@
 import io::writer_util;
 import std::map::hashmap;
 import syntax::ast::*;
-import driver::session::session;
+import syntax::diagnostic::span_handler;
 import middle::ty;
 import middle::ty::vid;
 import syntax::print::pprust::*;
@@ -17,6 +17,7 @@ export enc_bounds;
 export enc_mode;
 
 type ctxt = {
+    diag: span_handler,
     // Def -> str Callback:
     ds: fn@(def_id) -> str,
     // The type context.
@@ -145,7 +146,7 @@ fn enc_region(w: io::writer, cx: @ctxt, r: ty::region) {
       }
       ty::re_var(_) {
         // these should not crop up after typeck
-        cx.tcx.sess.bug("Cannot encode region variables");
+        cx.diag.handler().bug("Cannot encode region variables");
       }
     }
 }