Skip to content

Commit a7c362a

Browse files
committed
Change file_substr to allow for external strings.
1 parent 7f1ea3e commit a7c362a

File tree

4 files changed

+17
-15
lines changed

4 files changed

+17
-15
lines changed

src/comp/syntax/codemap.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ type file_pos = {ch: uint, byte: uint};
88
* compiler.
99
*/
1010

11-
type file_substr_ = {lo: uint, hi: uint, col: uint, line: uint};
12-
type file_substr = option<file_substr_>;
11+
enum file_substr {
12+
fss_none,
13+
fss_internal(span),
14+
fss_external({filename: str, line: uint, col: uint})
15+
}
1316

1417
type filemap =
1518
@{name: filename, substr: file_substr, src: @str,
@@ -33,16 +36,16 @@ fn new_filemap_w_substr(filename: filename, substr: file_substr,
3336
fn new_filemap(filename: filename, src: @str,
3437
start_pos_ch: uint, start_pos_byte: uint)
3538
-> filemap {
36-
ret new_filemap_w_substr(filename, none, src,
39+
ret new_filemap_w_substr(filename, fss_none, src,
3740
start_pos_ch, start_pos_byte);
3841
}
3942

40-
fn get_substr_info(cm: codemap, lo: uint, hi: uint)
41-
-> (filename, file_substr_)
43+
fn get_substr_info(cm: codemap, sp: span)
44+
-> (filename, file_substr)
4245
{
43-
let pos = lookup_char_pos(cm, lo);
46+
let pos = lookup_char_pos(cm, sp.lo);
4447
let name = #fmt("<%s:%u:%u>", pos.file.name, pos.line, pos.col);
45-
ret (name, {lo: lo, hi: hi, col: pos.col, line: pos.line});
48+
ret (name, fss_internal(sp));
4649
}
4750

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

src/comp/syntax/ext/qquote.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,9 @@ fn expand_ast(ecx: ext_ctxt, _sp: span,
149149
{
150150
let cm = ecx.session().parse_sess.cm;
151151
let str = @codemap::span_to_snippet(body.span, cm);
152-
let (fname, ss) = codemap::get_substr_info
153-
(cm, body.span.lo, body.span.hi);
152+
let (fname, ss) = codemap::get_substr_info(cm, body.span);
154153
let node = parse_from_source_str
155-
(f, fname, some(ss), str,
154+
(f, fname, ss, str,
156155
ecx.session().opts.cfg, ecx.session().parse_sess);
157156
ret expand_qquote(ecx, node.span(), *str, node);
158157
}
@@ -229,7 +228,7 @@ fn expand_qquote<N: qq_helper>
229228
"parse_from_source_str"],
230229
[node.mk_parse_fn(cx,sp),
231230
mk_str(cx,sp, "<anon>"),
232-
mk_path(cx,sp, ["option","none"]),
231+
mk_path(cx,sp, ["syntax", "codemap", "fss_none"]),
233232
mk_unary(cx,sp, ast::box(ast::imm),
234233
mk_str(cx,sp, str2)),
235234
mk_access_(cx,sp,

src/comp/syntax/parse/parser.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import std::{io, fs};
22
import either::{left, right};
33
import std::map::{hashmap, new_str_hash};
44
import token::can_begin_expr;
5-
import codemap::span;
5+
import codemap::{span,fss_none};
66
import util::interner;
77
import ast::{node_id, spanned};
88
import ast_util::{mk_sp, ident_to_path};
@@ -2607,7 +2607,7 @@ fn parse_crate_from_source_file(input: str, cfg: ast::crate_cfg,
26072607

26082608
fn parse_expr_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
26092609
sess: parse_sess) -> @ast::expr {
2610-
let p = new_parser_from_source_str(sess, cfg, name, none, source);
2610+
let p = new_parser_from_source_str(sess, cfg, name, fss_none, source);
26112611
let r = parse_expr(p);
26122612
sess.chpos = p.reader.chpos;
26132613
sess.byte_pos = sess.byte_pos + p.reader.pos;
@@ -2629,7 +2629,7 @@ fn parse_from_source_str<T>(f: fn (p: parser) -> T,
26292629

26302630
fn parse_crate_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
26312631
sess: parse_sess) -> @ast::crate {
2632-
let p = new_parser_from_source_str(sess, cfg, name, none, source);
2632+
let p = new_parser_from_source_str(sess, cfg, name, fss_none, source);
26332633
let r = parse_crate_mod(p, cfg);
26342634
sess.chpos = p.reader.chpos;
26352635
sess.byte_pos = sess.byte_pos + p.reader.pos;

src/rustdoc/attr_parser.rs

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

9898
parser::parse_outer_attributes(parser)
9999
}

0 commit comments

Comments
 (0)