Skip to content

Commit

Permalink
Fix CodeMap issue in expand_include_str()
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelwoerister committed Jan 8, 2014
1 parent fda71f2 commit ad3a179
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 13 deletions.
19 changes: 6 additions & 13 deletions src/libsyntax/ext/source_util.rs
Expand Up @@ -19,7 +19,6 @@ use parse;
use parse::token::{get_ident_interner};
use print::pprust;

use std::cell::RefCell;
use std::io;
use std::io::File;
use std::str;
Expand Down Expand Up @@ -105,20 +104,14 @@ pub fn expand_include_str(cx: &mut ExtCtxt, sp: Span, tts: &[ast::token_tree])
Ok(bytes) => bytes,
};
match str::from_utf8_owned_opt(bytes) {
Some(s) => {
let s = s.to_managed();
Some(src) => {
// Add this input file to the code map to make it available as
// dependency information
let mut files = cx.parse_sess.cm.files.borrow_mut();
files.get().push(@codemap::FileMap {
name: file.display().to_str().to_managed(),
substr: codemap::FssNone,
src: s,
start_pos: codemap::BytePos(0),
lines: RefCell::new(~[]),
multibyte_chars: RefCell::new(~[]),
});
base::MRExpr(cx.expr_str(sp, s))
let src = src.to_managed();
let filename = file.display().to_str().to_managed();
cx.parse_sess.cm.new_filemap(filename, src);

base::MRExpr(cx.expr_str(sp, src))
}
None => {
cx.span_fatal(sp, format!("{} wasn't a utf-8 file", file.display()));
Expand Down
37 changes: 37 additions & 0 deletions src/test/debug-info/include_string.rs
@@ -0,0 +1,37 @@
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// xfail-android: FIXME(#10381)

// compile-flags:-Z extra-debug-info
// debugger:rbreak zzz
// debugger:run
// debugger:finish
// debugger:print string1
// check:$1 = [...]"some text to include in another file as string 1", length = 48}
// debugger:print string2
// check:$2 = [...]"some text to include in another file as string 2", length = 48}
// debugger:print string3
// check:$3 = [...]"some text to include in another file as string 3", length = 48}
// debugger:continue

#[allow(unused_variable)];

// This test case makes sure that debug info does not ICE when include_str is
// used multiple times (see issue #11322).

fn main() {
let string1 = include_str!("text-to-include-1.txt");
let string2 = include_str!("text-to-include-2.txt");
let string3 = include_str!("text-to-include-3.txt");
zzz();
}

fn zzz() {()}
1 change: 1 addition & 0 deletions src/test/debug-info/text-to-include-1.txt
@@ -0,0 +1 @@
some text to include in another file as string 1
1 change: 1 addition & 0 deletions src/test/debug-info/text-to-include-2.txt
@@ -0,0 +1 @@
some text to include in another file as string 2
1 change: 1 addition & 0 deletions src/test/debug-info/text-to-include-3.txt
@@ -0,0 +1 @@
some text to include in another file as string 3

5 comments on commit ad3a179

@bors
Copy link
Contributor

@bors bors commented on ad3a179 Jan 8, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at michaelwoerister@ad3a179

@bors
Copy link
Contributor

@bors bors commented on ad3a179 Jan 8, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging michaelwoerister/rust/issue11322 = ad3a179 into auto

@bors
Copy link
Contributor

@bors bors commented on ad3a179 Jan 8, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

michaelwoerister/rust/issue11322 = ad3a179 merged ok, testing candidate = 97005c0

@bors
Copy link
Contributor

@bors bors commented on ad3a179 Jan 8, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bors
Copy link
Contributor

@bors bors commented on ad3a179 Jan 8, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding master to auto = 97005c0

Please sign in to comment.