diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-01-26 10:52:08 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-01-26 10:52:08 +0100 |
| commit | 1792d9ec96d680cb3ec257bfef84baffea352d80 (patch) | |
| tree | 94cb1c1a6d65adaaceb4b0a6934a42b46dd71ef4 /src | |
| parent | ec4d05de3b71a6286b24f9223731b7bdcfc097f8 (diff) | |
| download | rust-1792d9ec96d680cb3ec257bfef84baffea352d80.tar.gz rust-1792d9ec96d680cb3ec257bfef84baffea352d80.zip | |
Use string stored in codemap for pretty-printing comments and literals
Closes #1665
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/driver/driver.rs | 57 | ||||
| -rw-r--r-- | src/comp/syntax/codemap.rs | 1 |
2 files changed, 23 insertions, 35 deletions
diff --git a/src/comp/driver/driver.rs b/src/comp/driver/driver.rs index 8840a7a59f8..e7eafae197a 100644 --- a/src/comp/driver/driver.rs +++ b/src/comp/driver/driver.rs @@ -22,14 +22,13 @@ enum pp_mode { ppm_normal, ppm_expanded, ppm_typed, ppm_identified, } fn default_configuration(sess: session, argv0: str, input: str) -> ast::crate_cfg { - let libc = - alt sess.targ_cfg.os { - session::os_win32 { "msvcrt.dll" } - session::os_macos { "libc.dylib" } - session::os_linux { "libc.so.6" } - session::os_freebsd { "libc.so.7" } - _ { "libc.so" } - }; + let libc = alt sess.targ_cfg.os { + session::os_win32 { "msvcrt.dll" } + session::os_macos { "libc.dylib" } + session::os_linux { "libc.so.6" } + session::os_freebsd { "libc.so.7" } + _ { "libc.so" } + }; let mk = attr::mk_name_value_item_str; @@ -77,26 +76,13 @@ fn parse_cfgspecs(cfgspecs: [str]) -> ast::crate_cfg { fn input_is_stdin(filename: str) -> bool { filename == "-" } fn parse_input(sess: session, cfg: ast::crate_cfg, input: str) - -> {crate: @ast::crate, src: @str} { - let src = get_input_str(sess, input); - let crate = if !input_is_stdin(input) { + -> @ast::crate { + if !input_is_stdin(input) { parser::parse_crate_from_file(input, cfg, sess.parse_sess) } else { + let src = @str::unsafe_from_bytes(io::stdin().read_whole_stream()); parser::parse_crate_from_source_str(input, src, cfg, sess.parse_sess) - }; - {crate: crate, src: src} -} - -fn get_input_str(sess: session, infile: str) -> @str { - let stream = if !input_is_stdin(infile) { - alt io::file_reader(infile) { - result::ok(reader) { reader } - result::err(e) { - sess.fatal(e) - } - } - } else { io::stdin() }; - @str::unsafe_from_bytes(stream.read_whole_stream()) + } } fn time<T>(do_it: bool, what: str, thunk: fn@() -> T) -> T { @@ -141,11 +127,11 @@ enum compile_upto { fn compile_upto(sess: session, cfg: ast::crate_cfg, input: str, upto: compile_upto, outputs: option::t<output_filenames>) - -> {crate: @ast::crate, tcx: option::t<ty::ctxt>, src: @str} { + -> {crate: @ast::crate, tcx: option::t<ty::ctxt>} { let time_passes = sess.opts.time_passes; - let {crate, src} = - time(time_passes, "parsing", bind parse_input(sess, cfg, input)); - if upto == cu_parse { ret {crate: crate, tcx: none, src: src}; } + let crate = time(time_passes, "parsing", + bind parse_input(sess, cfg, input)); + if upto == cu_parse { ret {crate: crate, tcx: none}; } sess.building_library = session::building_library( sess.opts.crate_type, crate, sess.opts.test); @@ -160,7 +146,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, time(time_passes, "expansion", bind syntax::ext::expand::expand_crate(sess, crate)); - if upto == cu_expand { ret {crate: crate, tcx: none, src: src}; } + if upto == cu_expand { ret {crate: crate, tcx: none}; } if sess.opts.libcore { crate = inject_libcore_reference(sess, crate); } @@ -183,7 +169,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, time(time_passes, "typechecking", bind typeck::check_crate(ty_cx, impl_map, crate)); - if upto == cu_typeck { ret {crate: crate, tcx: some(ty_cx), src: src}; } + if upto == cu_typeck { ret {crate: crate, tcx: some(ty_cx)}; } time(time_passes, "block-use checking", bind middle::block_use::check_crate(ty_cx, crate)); @@ -206,7 +192,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, lint::check_crate(ty_cx, crate, sess.opts.lint_opts, time_passes); - if upto == cu_no_trans { ret {crate: crate, tcx: some(ty_cx), src: src}; } + if upto == cu_no_trans { ret {crate: crate, tcx: some(ty_cx)}; } let outputs = option::get(outputs); let (llmod, link_meta) = @@ -222,12 +208,12 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, sess.opts.output_type != link::output_type_exe || sess.opts.static && sess.building_library; - if stop_after_codegen { ret {crate: crate, tcx: some(ty_cx), src: src}; } + if stop_after_codegen { ret {crate: crate, tcx: some(ty_cx)}; } time(time_passes, "Linking", bind link::link_binary(sess, outputs.obj_filename, outputs.out_filename, link_meta)); - ret {crate: crate, tcx: some(ty_cx), src: src}; + ret {crate: crate, tcx: some(ty_cx)}; } fn compile_input(sess: session, cfg: ast::crate_cfg, input: str, @@ -286,7 +272,7 @@ fn pretty_print_input(sess: session, cfg: ast::crate_cfg, input: str, ppm_typed { cu_typeck } _ { cu_parse } }; - let {crate, tcx, src} = compile_upto(sess, cfg, input, upto, none); + let {crate, tcx} = compile_upto(sess, cfg, input, upto, none); let ann: pprust::pp_ann = pprust::no_ann(); alt ppm { @@ -299,6 +285,7 @@ fn pretty_print_input(sess: session, cfg: ast::crate_cfg, input: str, } ppm_expanded | ppm_normal {} } + let src = codemap::get_filemap(sess.codemap, input).src; pprust::print_crate(sess.codemap, sess.span_diagnostic, crate, input, io::string_reader(*src), io::stdout(), ann); } diff --git a/src/comp/syntax/codemap.rs b/src/comp/syntax/codemap.rs index 8463f37681a..3c7d036d1f2 100644 --- a/src/comp/syntax/codemap.rs +++ b/src/comp/syntax/codemap.rs @@ -131,6 +131,7 @@ fn get_filemap(cm: codemap, filename: str) -> filemap { // (or expected function, found _|_) fail; // ("asking for " + filename + " which we don't know about"); } + // // Local Variables: // mode: rust |
