diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-07-11 15:00:40 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-07-17 15:46:43 -0700 |
| commit | db020ab63cd51dd4a25cba2d00117f016128762b (patch) | |
| tree | 2b6f1e99ba4356f3e3bf5338332c278d2a85109b /src/rustc/driver | |
| parent | b5729bd60095fb5ca884936775e031cf19900760 (diff) | |
| download | rust-db020ab63cd51dd4a25cba2d00117f016128762b.tar.gz rust-db020ab63cd51dd4a25cba2d00117f016128762b.zip | |
rustc: Implement and enforce instance coherence
Diffstat (limited to 'src/rustc/driver')
| -rw-r--r-- | src/rustc/driver/driver.rs | 43 | ||||
| -rw-r--r-- | src/rustc/driver/session.rs | 6 |
2 files changed, 29 insertions, 20 deletions
diff --git a/src/rustc/driver/driver.rs b/src/rustc/driver/driver.rs index a81b491f23f..0b7b8402970 100644 --- a/src/rustc/driver/driver.rs +++ b/src/rustc/driver/driver.rs @@ -1,6 +1,6 @@ // -*- rust -*- import metadata::{creader, cstore, filesearch}; -import session::session; +import session::{session, session_}; import syntax::parse; import syntax::{ast, codemap}; import syntax::attr; @@ -168,7 +168,10 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, session::sess_os_to_meta_os(sess.targ_cfg.os), sess.opts.static)); - let { def_map: def_map, exp_map: exp_map, impl_map: impl_map } = + let { def_map: def_map, + exp_map: exp_map, + impl_map: impl_map, + trait_map: trait_map } = time(time_passes, ~"resolution", || middle::resolve3::resolve_crate(sess, ast_map, crate)); @@ -187,6 +190,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, let (method_map, vtable_map) = time(time_passes, ~"typechecking", || typeck::check_crate(ty_cx, impl_map, + trait_map, crate)); time(time_passes, ~"const checking", || @@ -516,11 +520,12 @@ fn build_session(sopts: @session::options, build_session_(sopts, codemap, demitter, span_diagnostic_handler) } -fn build_session_( - sopts: @session::options, cm: codemap::codemap, - demitter: diagnostic::emitter, - span_diagnostic_handler: diagnostic::span_handler -) -> session { +fn build_session_(sopts: @session::options, + cm: codemap::codemap, + demitter: diagnostic::emitter, + span_diagnostic_handler: diagnostic::span_handler) + -> session { + let target_cfg = build_target_config(sopts, demitter); let cstore = cstore::mk_cstore(); let filesearch = filesearch::mk_filesearch( @@ -528,19 +533,19 @@ fn build_session_( sopts.target_triple, sopts.addl_lib_search_paths); let warning_settings = lint::mk_warning_settings(); - @{targ_cfg: target_cfg, - opts: sopts, - cstore: cstore, - parse_sess: + session_(@{targ_cfg: target_cfg, + opts: sopts, + cstore: cstore, + parse_sess: parse::new_parse_sess_special_handler(span_diagnostic_handler, cm), - codemap: cm, - // For a library crate, this is always none - mut main_fn: none, - span_diagnostic: span_diagnostic_handler, - filesearch: filesearch, - mut building_library: false, - working_dir: os::getcwd(), - warning_settings: warning_settings} + codemap: cm, + // For a library crate, this is always none + mut main_fn: none, + span_diagnostic: span_diagnostic_handler, + filesearch: filesearch, + mut building_library: false, + working_dir: os::getcwd(), + warning_settings: warning_settings}) } fn parse_pretty(sess: session, &&name: ~str) -> pp_mode { diff --git a/src/rustc/driver/session.rs b/src/rustc/driver/session.rs index 3697934dbc0..c5643c90be3 100644 --- a/src/rustc/driver/session.rs +++ b/src/rustc/driver/session.rs @@ -85,7 +85,7 @@ type options = type crate_metadata = {name: ~str, data: ~[u8]}; -type session = @{targ_cfg: @config, +type session_ = {targ_cfg: @config, opts: @options, cstore: metadata::cstore::cstore, parse_sess: parse_sess, @@ -98,6 +98,10 @@ type session = @{targ_cfg: @config, working_dir: ~str, warning_settings: lint::warning_settings}; +enum session { + session_(@session_) +} + impl session for session { fn span_fatal(sp: span, msg: ~str) -> ! { self.span_diagnostic.span_fatal(sp, msg) |
