diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index 1c995662808..8794dae1178 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -153,9 +153,9 @@ pub mod jit { code: entry, env: ptr::null() }; - let func: &fn(++argv: ~[~str]) = cast::transmute(closure); + let func: &fn(++argv: ~[@~str]) = cast::transmute(closure); - func(~[/*bad*/copy sess.opts.binary]); + func(~[sess.opts.binary]); } } } diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index a804469ac65..44c092d8697 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -62,7 +62,7 @@ pub fn source_name(input: input) -> ~str { } } -pub fn default_configuration(sess: Session, +argv0: ~str, input: input) -> +pub fn default_configuration(sess: Session, argv0: @~str, input: input) -> ast::crate_cfg { let libc = match sess.targ_cfg.os { session::os_win32 => ~"msvcrt.dll", @@ -101,7 +101,7 @@ pub fn default_configuration(sess: Session, +argv0: ~str, input: input) -> mk(@~"target_word_size", @wordsz), mk(@~"target_libc", @libc), // Build bindings. - mk(@~"build_compiler", @argv0), + mk(@~"build_compiler", argv0), mk(@~"build_input", @source_name(input))]; } @@ -114,7 +114,7 @@ pub fn append_configuration(+cfg: ast::crate_cfg, +name: ~str) } } -pub fn build_configuration(sess: Session, +argv0: ~str, input: input) -> +pub fn build_configuration(sess: Session, argv0: @~str, input: input) -> ast::crate_cfg { // Combine the configuration requested by the session (command line) with // some default and generated configuration items @@ -523,7 +523,7 @@ pub fn host_triple() -> ~str { }; } -pub fn build_session_options(+binary: ~str, +pub fn build_session_options(binary: @~str, matches: &getopts::Matches, demitter: diagnostic::Emitter) -> @session::options { diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index aee5e01e091..6171ebd8610 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -131,7 +131,7 @@ pub struct options { // will be added to the crate AST node. This should not be used for // anything except building the full crate config prior to parsing. cfg: ast::crate_cfg, - binary: ~str, + binary: @~str, test: bool, parse_only: bool, no_trans: bool, @@ -303,7 +303,7 @@ pub fn basic_options() -> @options { maybe_sysroot: None, target_triple: host_triple(), cfg: ~[], - binary: ~"rustc", + binary: @~"rustc", test: false, parse_only: false, no_trans: false, diff --git a/src/librustc/rustc.rc b/src/librustc/rustc.rc index 3fbe1b96ef7..67f71682d32 100644 --- a/src/librustc/rustc.rc +++ b/src/librustc/rustc.rc @@ -206,9 +206,9 @@ pub fn run_compiler(args: &~[~str], demitter: diagnostic::Emitter) { ::core::logging::console_off(); let mut args = /*bad*/copy *args; - let binary = args.shift(); + let binary = @args.shift(); - if args.is_empty() { usage(binary); return; } + if args.is_empty() { usage(*binary); return; } let matches = &match getopts::groups::getopts(args, optgroups()) { @@ -219,7 +219,7 @@ pub fn run_compiler(args: &~[~str], demitter: diagnostic::Emitter) { }; if opt_present(matches, ~"h") || opt_present(matches, ~"help") { - usage(binary); + usage(*binary); return; } @@ -236,7 +236,7 @@ pub fn run_compiler(args: &~[~str], demitter: diagnostic::Emitter) { } if opt_present(matches, ~"v") || opt_present(matches, ~"version") { - version(binary); + version(*binary); return; } let input = match vec::len(matches.free) { @@ -253,8 +253,7 @@ pub fn run_compiler(args: &~[~str], demitter: diagnostic::Emitter) { _ => early_error(demitter, ~"multiple input filenames provided") }; - // XXX: Bad copy. - let sopts = build_session_options(copy binary, matches, demitter); + let sopts = build_session_options(binary, matches, demitter); let sess = build_session(sopts, demitter); let odir = getopts::opt_maybe_str(matches, ~"out-dir"); let odir = odir.map(|o| Path(*o));