Skip to content

Commit bbf7574

Browse files
committed
---
yaml --- r: 8044 b: refs/heads/snap-stage3 c: 9090a5c h: refs/heads/master v: v3
1 parent 2b98e5a commit bbf7574

File tree

5 files changed

+40
-16
lines changed

5 files changed

+40
-16
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
refs/heads/master: 2898dcc5d97da9427ac367542382b6239d9c0bbf
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 4d71285c933586f92497a5b5fb85368fd130f4e6
4+
refs/heads/snap-stage3: 9090a5c03b3ebcaee98de53ddf13f3204ff9c5f9
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/snap-stage3/src/comp/syntax/codemap.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ type file_pos = {ch: uint, byte: uint};
1010
* with single-word things, rather than passing records all over the
1111
* compiler.
1212
*/
13+
14+
type file_substr_ = {lo: uint, hi: uint, col: uint, line: uint};
15+
type file_substr = option<file_substr_>;
16+
1317
type filemap =
14-
@{name: filename, src: @str,
18+
@{name: filename, substr: file_substr, src: @str,
1519
start_pos: file_pos, mutable lines: [file_pos]};
1620

1721
type codemap = @{mutable files: [filemap]};
@@ -22,14 +26,30 @@ fn new_codemap() -> codemap {
2226
@{mutable files: [new_filemap("-", @"", 0u, 0u)]}
2327
}
2428

25-
fn new_filemap(filename: filename, src: @str,
26-
start_pos_ch: uint, start_pos_byte: uint)
29+
fn new_filemap_w_substr(filename: filename, substr: file_substr,
30+
src: @str,
31+
start_pos_ch: uint, start_pos_byte: uint)
2732
-> filemap {
28-
ret @{name: filename, src: src,
33+
ret @{name: filename, substr: substr, src: src,
2934
start_pos: {ch: start_pos_ch, byte: start_pos_byte},
3035
mutable lines: [{ch: start_pos_ch, byte: start_pos_byte}]};
3136
}
3237

38+
fn new_filemap(filename: filename, src: @str,
39+
start_pos_ch: uint, start_pos_byte: uint)
40+
-> filemap {
41+
ret new_filemap_w_substr(filename, none, src,
42+
start_pos_ch, start_pos_byte);
43+
}
44+
45+
fn get_substr_info(cm: codemap, lo: uint, hi: uint)
46+
-> (filename, file_substr_)
47+
{
48+
let pos = lookup_char_pos(cm, lo);
49+
let name = #fmt("<%s:%u:%u>", pos.file.name, pos.line, pos.col);
50+
ret (name, {lo: lo, hi: hi, col: pos.col, line: pos.line});
51+
}
52+
3353
fn empty_filemap(cm: codemap) -> filemap {cm.files[0]}
3454

3555
fn next_line(file: filemap, chpos: uint, byte_pos: uint) {

branches/snap-stage3/src/comp/syntax/ext/qquote.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ fn expand_ast(ecx: ext_ctxt, _sp: span, _arg: ast::mac_arg, body: ast::mac_body)
4848
{
4949
let body = get_mac_body(ecx,_sp,body);
5050
let str = @codemap::span_to_snippet(body.span, ecx.session().parse_sess.cm);
51+
let (fname, ss) = codemap::get_substr_info(ecx.session().parse_sess.cm,
52+
body.span.lo, body.span.hi);
5153
let {node: e, _} = parse_from_source_str(parser::parse_expr,
52-
"<anon>", str,
54+
fname, some(ss), str,
5355
ecx.session().opts.cfg,
5456
ecx.session().parse_sess);
5557
ret expand_qquote(ecx, e.span, some(*str), e);

branches/snap-stage3/src/comp/syntax/parse/parser.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,11 @@ fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str,
113113
}
114114

115115
fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
116-
name: str, source: @str) -> parser {
116+
name: str, ss: codemap::file_substr,
117+
source: @str) -> parser {
117118
let ftype = SOURCE_FILE;
118-
let filemap = codemap::new_filemap(name, source,
119-
sess.chpos, sess.byte_pos);
119+
let filemap = codemap::new_filemap_w_substr
120+
(name, ss, source, sess.chpos, sess.byte_pos);
120121
sess.cm.files += [filemap];
121122
let itr = @interner::mk(str::hash, str::eq);
122123
let rdr = lexer::new_reader(sess.cm, sess.span_diagnostic,
@@ -2536,19 +2537,20 @@ fn parse_crate_from_source_file(input: str, cfg: ast::crate_cfg,
25362537

25372538
fn parse_expr_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
25382539
sess: parse_sess) -> @ast::expr {
2539-
let p = new_parser_from_source_str(sess, cfg, name, source);
2540+
let p = new_parser_from_source_str(sess, cfg, name, none, source);
25402541
let r = parse_expr(p);
25412542
sess.chpos = p.reader.chpos;
25422543
sess.byte_pos = sess.byte_pos + p.reader.pos;
25432544
ret r;
25442545
}
25452546

2546-
fn parse_from_source_str<T>(f: fn (p: parser) -> T,
2547-
name: str, source: @str, cfg: ast::crate_cfg,
2548-
sess: parse_sess)
2547+
fn parse_from_source_str<T>(f: fn (p: parser) -> T,
2548+
name: str, ss: codemap::file_substr,
2549+
source: @str, cfg: ast::crate_cfg,
2550+
sess: parse_sess)
25492551
-> {node: T, fm: codemap::filemap}
25502552
{
2551-
let p = new_parser_from_source_str(sess, cfg, name, source);
2553+
let p = new_parser_from_source_str(sess, cfg, name, ss, source);
25522554
let r = f(p);
25532555
sess.chpos = p.reader.chpos;
25542556
sess.byte_pos = sess.byte_pos + p.reader.pos;
@@ -2557,7 +2559,7 @@ fn parse_from_source_str<T>(f: fn (p: parser) -> T,
25572559

25582560
fn parse_crate_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
25592561
sess: parse_sess) -> @ast::crate {
2560-
let p = new_parser_from_source_str(sess, cfg, name, source);
2562+
let p = new_parser_from_source_str(sess, cfg, name, none, source);
25612563
let r = parse_crate_mod(p, cfg);
25622564
sess.chpos = p.reader.chpos;
25632565
sess.byte_pos = sess.byte_pos + p.reader.pos;

branches/snap-stage3/src/rustdoc/attr_parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ mod test {
9494
mutable byte_pos: 0u
9595
};
9696
let parser = parser::new_parser_from_source_str(
97-
parse_sess, [], "-", @source);
97+
parse_sess, [], "-", none, @source);
9898

9999
parser::parse_outer_attributes(parser)
100100
}

0 commit comments

Comments
 (0)