}
}
-fn get_source(input: &Input, sess: &Session) -> (Vec<u8>, FileName) {
+fn get_source(input: &Input, sess: &Session) -> (String, FileName) {
let src_name = source_name(input);
- let src = sess.source_map()
+ let src = String::clone(&sess.source_map()
.get_source_file(&src_name)
.unwrap()
.src
.as_ref()
- .unwrap()
- .as_bytes()
- .to_vec();
+ .unwrap());
(src, src_name)
}
ofile: Option<&Path>) {
let (src, src_name) = get_source(input, sess);
- let mut rdr = &*src;
let mut out = String::new();
if let PpmSource(s) = ppm {
&sess.parse_sess,
krate,
src_name,
- &mut rdr,
+ src,
out,
annotation.pp_ann(),
false)
let (src, src_name) = get_source(input, tcx.sess);
- let mut rdr = &src[..];
let mut out = String::new();
match (ppm, opt_uii) {
(PpmSource(s), _) => {
// Silently ignores an identified node.
let out = &mut out;
+ let src = src.clone();
s.call_with_pp_support(tcx.sess, Some(tcx), move |annotation| {
debug!("pretty printing source code {:?}", s);
let sess = annotation.sess();
&sess.parse_sess,
krate,
src_name,
- &mut rdr,
+ src,
out,
annotation.pp_ann(),
true)
(PpmHir(s), None) => {
let out = &mut out;
+ let src = src.clone();
s.call_with_pp_support_hir(tcx, move |annotation, krate| {
debug!("pretty printing source code {:?}", s);
let sess = annotation.sess();
&sess.parse_sess,
krate,
src_name,
- &mut rdr,
+ src,
out,
annotation.pp_ann())
})
(PpmHir(s), Some(uii)) => {
let out = &mut out;
+ let src = src.clone();
s.call_with_pp_support_hir(tcx, move |annotation, _| {
debug!("pretty printing source code {:?}", s);
let sess = annotation.sess();
let mut pp_state = pprust_hir::State::new_from_input(sess.source_map(),
&sess.parse_sess,
src_name,
- &mut rdr,
+ src,
out,
annotation.pp_ann());
for node_id in uii.all_matching_node_ids(hir_map) {
use syntax_pos::{BytePos, CharPos, Pos, FileName};
use log::debug;
-use std::io::Read;
use std::usize;
#[derive(Clone, Copy, PartialEq, Debug)]
// it appears this function is called only from pprust... that's
// probably not a good thing.
-pub fn gather_comments(sess: &ParseSess, path: FileName, srdr: &mut dyn Read) -> Vec<Comment>
+pub fn gather_comments(sess: &ParseSess, path: FileName, src: String) -> Vec<Comment>
{
- let mut src = String::new();
- srdr.read_to_string(&mut src).unwrap();
let cm = SourceMap::new(sess.source_map().path_mapping().clone());
let source_file = cm.new_source_file(path, src);
let mut rdr = lexer::StringReader::new(sess, source_file, None);